X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-compact.c;h=2fc012a982d7f3b879fc6fe795d01b194b240c31;hp=bfda40e3a7f3dcaf6a99855981dd37ded8e66bd5;hb=4e2c351c588ad74f4800ca0344232be90387c54a;hpb=241a88ce2f3c8d76b5a63a202d8455757c0e751e diff --git a/notmuch-compact.c b/notmuch-compact.c index bfda40e3..2fc012a9 100644 --- a/notmuch-compact.c +++ b/notmuch-compact.c @@ -20,37 +20,45 @@ #include "notmuch-client.h" -void status_update_cb (const char *msg); - -void -status_update_cb (const char *msg) +static void +status_update_cb (const char *msg, unused (void *closure)) { - printf("%s\n", msg); + printf ("%s\n", msg); } int -notmuch_compact_command (notmuch_config_t *config, - unused (int argc), - unused (char *argv[])) +notmuch_compact_command (notmuch_config_t *config, int argc, char *argv[]) { const char *path = notmuch_config_get_database_path (config); - const char *backup_path = path; + const char *backup_path = NULL; notmuch_status_t ret; + notmuch_bool_t quiet = FALSE; + int opt_index; + + notmuch_opt_desc_t options[] = { + { NOTMUCH_OPT_STRING, &backup_path, "backup", 0, 0 }, + { NOTMUCH_OPT_BOOLEAN, &quiet, "quiet", 'q', 0 }, + }; + + opt_index = parse_arguments (argc, argv, options, 1); + if (opt_index < 0) + return EXIT_FAILURE; - printf ("Compacting database...\n"); - ret = notmuch_database_compact (path, backup_path, status_update_cb); + if (! quiet) + printf ("Compacting database...\n"); + ret = notmuch_database_compact (path, backup_path, + quiet ? NULL : status_update_cb, NULL); if (ret) { - fprintf (stderr, "Compaction failed: %s\n", notmuch_status_to_string(ret)); - } else { - printf ("\n"); - printf ("\n"); - printf ("The old database has been moved to %s/xapian.old", backup_path); - printf ("\n"); - printf ("To delete run,\n"); - printf ("\n"); - printf (" rm -R %s/xapian.old\n", backup_path); - printf ("\n"); + fprintf (stderr, "Compaction failed: %s\n", notmuch_status_to_string (ret)); + return EXIT_FAILURE; + } + + if (! quiet) { + if (backup_path) + printf ("The old database has been moved to %s.\n", backup_path); + + printf ("Done.\n"); } - return 0; + return EXIT_SUCCESS; }