X-Git-Url: https://git.cworth.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-compact.c;h=40ffb4286b5f7db086a89720a657b89176a2aea0;hp=b9461c2fcae641922811173cef59574a65b0f95b;hb=HEAD;hpb=d34be29a41bbe1d5bd2c81d7d791cd67ac4eb649 diff --git a/notmuch-compact.c b/notmuch-compact.c index b9461c2f..40ffb428 100644 --- a/notmuch-compact.c +++ b/notmuch-compact.c @@ -13,7 +13,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/ . + * along with this program. If not, see https://www.gnu.org/licenses/ . * * Author: Ben Gamari */ @@ -23,37 +23,45 @@ 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_database_t *notmuch, int argc, char *argv[]) { - const char *path = notmuch_config_get_database_path (config); - const char *backup_path; + const char *backup_path = NULL; notmuch_status_t ret; + bool quiet = false; + int opt_index; - backup_path = talloc_asprintf (config, "%s/xapian.old", path); - if (! backup_path) - return 1; + notmuch_opt_desc_t options[] = { + { .opt_string = &backup_path, .name = "backup" }, + { .opt_bool = &quiet, .name = "quiet" }, + { .opt_inherit = notmuch_shared_options }, + { } + }; - printf ("Compacting database...\n"); - ret = notmuch_database_compact (path, backup_path, status_update_cb, NULL); + opt_index = parse_arguments (argc, argv, options, 1); + if (opt_index < 0) + return EXIT_FAILURE; + + notmuch_process_shared_options (NULL, argv[0]); + + if (! quiet) + printf ("Compacting database...\n"); + ret = notmuch_database_compact_db (notmuch, backup_path, + quiet ? NULL : status_update_cb, NULL); if (ret) { - fprintf (stderr, "Compaction failed: %s\n", notmuch_status_to_string(ret)); - return 1; + fprintf (stderr, "Compaction failed: %s\n", notmuch_status_to_string (ret)); + return EXIT_FAILURE; } - printf ("\n"); - printf ("\n"); - printf ("The old database has been moved to %s", backup_path); - printf ("\n"); - printf ("To delete run,\n"); - printf ("\n"); - printf (" rm -R %s\n", backup_path); - printf ("\n"); + 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; }