3 * User interface routines for dbck (SMS 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>
24 ## delete _table where _table._idfield = id
25 ## inquire_equel(rowcount = "rowcount")
27 printf("%d entr%s deleted\n", rowcount, rowcount==1?"y":"ies");
29 printf("Not deleted\n");
33 generic_delete(sq, pfunc, table, idfield, preen)
34 struct save_queue *sq;
36 char *table, *idfield;
41 generic_fix(sq, pfunc, "Delete", generic_ffunc, preen);
45 single_delete(table, idfield, id)
46 char *table, *idfield;
55 ##zero_fix(table, zrfield, idfield, id)
56 ##char *table, *zrfield, *idfield;
61 ## replace table (zrfield = 0) where table.idfield = id
62 ## inquire_equel(rowcount = "rowcount")
64 printf("%d entr%s fixed\n", rowcount, rowcount==1?"y":"ies");
66 printf("Not fixed\n");
70 generic_fix(sq, pfunc, msg, ffunc, preen)
71 struct save_queue *sq;
73 int (*pfunc)(), (*ffunc)();
78 while (sq_get_data(sq, &id)) {
79 if ((*pfunc)(id) == 0 && singe_fix(msg, preen))
86 int single_fix(msg, preen)
93 if (mode == MODE_PREEN) {
118 ## extern int dcmenable;
121 printf("%s (Y/N/Q)? ", msg);
124 if (buf[0] == 'Y' || buf[0] == 'y')
126 if (buf[0] == 'N' || buf[0] == 'n')
128 if (buf[0] == 'Q' || buf[0] == 'q') {
129 if (prompt("Are you sure you want to quit")) {
130 if (prompt("Save database changes")) {
132 ## replace values (value = dcmenable)
133 ## where values.name = "dcm_enable"
146 ** set_next_object_id - set next object id in values table
148 ** Inputs: object - object name in values table and in objects
149 ** table - name of table objects are found in
151 ** - called before an APPEND operation to set the next object id to
152 ** be used for the new record to the next free value
156 int set_next_object_id(object, table)
161 ## int rowcount, exists, value;
165 ## range of v is values
166 ## repeat retrieve (value = v.#value) where v.#name = @name
167 ## inquire_equel(rowcount = "rowcount")
171 ## retrieve (exists = any(tbl.name where tbl.name = value))
172 ## inquire_equel(rowcount = "rowcount")
177 if (value > MAX_ID_VALUE)
178 value = MIN_ID_VALUE;
179 ## retrieve (exists = any(tbl.name where tbl.name = value))
182 printf("setting ID %s to %d", name, value);
183 ## 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);