]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-compact.c
test: Test upgrade to ghost messages feature
[notmuch] / notmuch-compact.c
index bfda40e3a7f3dcaf6a99855981dd37ded8e66bd5..2fc012a982d7f3b879fc6fe795d01b194b240c31 100644 (file)
 
 #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;
 }