3 * User interface routines for dbck (Moira database consistency checker)
5 * (c) Copyright 1988 by the Massachusetts Institute of Technology.
6 * For copying and distribution information, please see the file
10 #include <mit-copyright.h>
15 static char fix_qc_rcsid[] = "$Header$";
26 ## delete _table where _table._idfield = id
27 ## inquire_equel(rowcount = "rowcount")
29 printf("%d entr%s deleted\n", rowcount, rowcount==1?"y":"ies");
31 printf("Not deleted\n");
36 generic_delete(sq, pfunc, table, idfield, preen)
37 struct save_queue *sq;
39 char *table, *idfield;
44 generic_fix(sq, pfunc, "Delete", generic_ffunc, preen);
48 single_delete(table, idfield, id)
49 char *table, *idfield;
58 ##zero_fix(table, zrfield, idfield, id)
59 ##char *table, *zrfield, *idfield;
64 ## replace table (zrfield = 0) where table.idfield = id
65 ## inquire_equel(rowcount = "rowcount")
67 printf("%d entr%s fixed\n", rowcount, rowcount==1?"y":"ies");
69 printf("Not fixed\n");
74 int single_fix(msg, preen)
78 if (mode == MODE_PREEN)
95 generic_fix(sq, pfunc, msg, ffunc, preen)
96 struct save_queue *sq;
98 int (*pfunc)(), (*ffunc)();
103 while (sq_get_data(sq, &id)) {
104 if ((*pfunc)(id) == 0 && single_fix(msg, preen))
115 ## extern int dcmenable;
118 printf("%s (Y/N/Q)? ", msg);
121 if (buf[0] == 'Y' || buf[0] == 'y')
123 if (buf[0] == 'N' || buf[0] == 'n')
125 if (buf[0] == 'Q' || buf[0] == 'q') {
126 if (prompt("Are you sure you want to quit")) {
127 if (prompt("Save database changes")) {
133 ## replace values (value = dcmenable)
134 ## where values.name = "dcm_enable"
145 ** set_next_object_id - set next object id in values table
147 ** Inputs: object - object name in values table and in objects
148 ** table - name of table objects are found in
150 ** - called before an APPEND operation to set the next object id to
151 ** be used for the new record to the next free value
155 int set_next_object_id(object, table)
160 ## int rowcount, exists, value;
164 ## range of v is values
165 ## repeat retrieve (value = v.#value) where v.#name = @name
166 ## inquire_equel(rowcount = "rowcount")
170 ## retrieve (exists = any(tbl.name where tbl.name = value))
171 ## inquire_equel(rowcount = "rowcount")
176 if (value > MAX_ID_VALUE)
177 value = MIN_ID_VALUE;
178 ## retrieve (exists = any(tbl.name where tbl.name = value))
181 printf("setting ID %s to %d\n", name, value);
182 ## repeat replace v (#value = @value) where v.#name = @name
188 ##generic_fix_id(table, idfield, txtfield, oldid, name)
197 set_next_object_id(table, idfield);
198 ## retrieve (id = values.value) where values.#name = idfield
199 ## replace table (idfield = values.value) where values.#name = idfield and
200 ## table.idfield = oldid and table.txtfield = name
201 ## inquire_equel(rowcount = "rowcount")
205 printf("Not fixed, rowcount = %d\n", rowcount);