]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-compact.c
Merge branch 'release'
[notmuch] / notmuch-compact.c
index 55dc7316ccb810d7a90542f45adab60347e58c8b..855545d735769e1269bd5a08ce6c1e99856bb989 100644 (file)
@@ -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 <bgamari.foss@gmail.com>
  */
 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;
+    const char *backup_path = NULL;
     notmuch_status_t ret;
+    notmuch_bool_t quiet = FALSE;
+    int opt_index;
 
-    backup_path = talloc_asprintf (config, "%s/xapian.old", path);
-    if (! backup_path)
-       return 1;
+    notmuch_opt_desc_t options[] = {
+       { NOTMUCH_OPT_STRING, &backup_path, "backup", 0, 0 },
+       { NOTMUCH_OPT_BOOLEAN,  &quiet, "quiet", 'q', 0 },
+       { NOTMUCH_OPT_INHERIT, (void *) &notmuch_shared_options, NULL, 0, 0 },
+       { 0, 0, 0, 0, 0}
+    };
 
-    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;
+
+    if (notmuch_requested_db_uuid) {
+       fprintf (stderr, "Error: --uuid not implemented for compact\n");
+       return EXIT_FAILURE;
+    }
+
+    notmuch_process_shared_options (argv[0]);
+
+    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", backup_path);
-       printf ("\n");
-       printf ("To delete run,\n");
-       printf ("\n");
-       printf ("    rm -R %s\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;
 }