/* $Header$
*
- * SMS database consistency checker
+ * Moira database consistency checker
*
* (c) Copyright 1988 by the Massachusetts Institute of Technology.
* For copying and distribution information, please see the file
static char dbck_qc_rcsid[] = "$Header$";
-int debug = 1;
+int debug = 0;
int mode = MODE_ASK;
int fast = 0;
-struct hash *users, *machines, *clusters, *lists, *filesys, *nfsphys, *strings;
+int warn = 1;
+int abort = 0;
+struct hash *users, *machines, *clusters, *lists, *filesys, *nfsphys;
+struct hash *strings, *members;
##int dcmenable;
-struct save_queue *modtables;
+struct save_queue *modtables, *sq_create();
int interrupt();
case 'f':
fast++;
break;
+ case 'w':
+ warn = 0;
+ break;
+ default:
+ printf("Usage: %s [-d level] [-n] [-y] [-p] [-a] [-c] [-f] [-w] [database]\n",
+ argv[0]);
+ exit(1);
}
else
database = *arg;
if (debug)
printf("Debug level is %d\n", debug);
+ setlinebuf(stdout);
+
signal(SIGHUP, interrupt);
signal(SIGQUIT, interrupt);
signal(SIGINT, interrupt);
{
printf("An ingres error occuurred, code %d\n", *num);
printf("Aborting...\n");
-## abort
+ if (!abort) {
+ abort++;
+## abort
+ }
exit(1);
}
##{
printf("Signal caught\n");
if (prompt("Save database changes")) {
+ /* break out of a retrieve loop */
+ IIbreak();
## end transaction
cleanup();
exit(0);
}
printf("Aborting transaction\n");
-## abort
+ if (!abort) {
+ abort++;
+ /* break out of a retrieve loop */
+ IIbreak();
+## abort
+ }
## replace values (value = dcmenable) where values.name = "dcm_enable"
## exit
exit(0);
## replace values (value = dcmenable) where values.name = "dcm_enable"
## exit
##}
+
+
+out_of_mem(msg)
+char *msg;
+{
+ fprintf(stderr, "Out of memory while %s\n", msg);
+## end transaction
+ cleanup();
+ exit(1);
+}