+static void do_interactive_mode()
+{
+ int quit = FALSE;
+ char *cmd;
+
+ printf("Hello, this is the database check/correct program.\n\
+Modify database is %s. Verbose is %s.\n\
+Please select the fuction you want to perform.\n",
+ fix?"On":"Off", verbose?"On":"Off");
+
+ while (!quit) {
+ if (fix) {
+ printf(_("\n\
+ 1) Toggle modify database flag\n\
+ 2) Toggle verbose flag\n\
+ 3) Eliminate duplicate Filename records\n\
+ 4) Eliminate duplicate Path records\n\
+ 5) Eliminate orphaned Jobmedia records\n\
+ 6) Eliminate orphaned File records\n\
+ 7) Eliminate orphaned Path records\n\
+ 8) Eliminate orphaned Filename records\n\
+ 9) Eliminate orphaned FileSet records\n\
+ 10) All (3-9)\n\
+ 11) Quit\n"));
+ } else {
+ printf(_("\n\
+ 1) Toggle modify database flag\n\
+ 2) Toggle verbose flag\n\
+ 3) Check for duplicate Filename records\n\
+ 4) Check for duplicate Path records\n\
+ 5) Check for orphaned Jobmedia records\n\
+ 6) Check for orphaned File records\n\
+ 7) Check for orphaned Path records\n\
+ 8) Check for orphaned Filename records\n\
+ 9) Check for orphaned FileSet records\n\
+ 10) All (3-9)\n\
+ 11) Quit\n"));
+ }
+
+ cmd = get_cmd(_("Select function number: "));
+ if (cmd) {
+ int item = atoi(cmd);
+ switch (item) {
+ case 1:
+ fix = !fix;
+ printf(_("Database will %sbe modified.\n"), fix?"":_("NOT "));
+ break;
+ case 2:
+ verbose = verbose?0:1;
+ printf(_("Verbose is %s\n"), verbose?_("On"):_("Off"));
+ break;
+ case 3:
+ eliminate_duplicate_filenames();
+ break;
+ case 4:
+ eliminate_duplicate_paths();
+ break;
+ case 5:
+ eliminate_orphaned_jobmedia_records();
+ break;
+ case 6:
+ eliminate_orphaned_file_records();
+ break;
+ case 7:
+ eliminate_orphaned_path_records();
+ break;
+ case 8:
+ eliminate_orphaned_filename_records();
+ break;
+ case 9:
+ eliminate_orphaned_fileset_records();
+ break;
+ case 10:
+ eliminate_duplicate_filenames();
+ eliminate_duplicate_paths();
+ eliminate_orphaned_jobmedia_records();
+ eliminate_orphaned_file_records();
+ eliminate_orphaned_path_records();
+ eliminate_orphaned_filename_records();
+ eliminate_orphaned_fileset_records();
+ break;
+ case 11:
+ quit = 1;
+ break;
+ }
+ }
+ }
+}
+
+static int print_name_handler(void *ctx, int num_fields, char **row)
+{
+ if (row[0]) {
+ printf("%s\n", row[0]);
+ }
+ return 0;
+}