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;
- printf ("Compacting database...\n");
- ret = notmuch_database_compact (path, backup_path, status_update_cb, NULL);
+ notmuch_opt_desc_t options[] = {
+ { NOTMUCH_OPT_STRING, &backup_path, "backup", 0, 0 },
+ { NOTMUCH_OPT_BOOLEAN, &quiet, "quiet", 'q', 0 },
+ { NOTMUCH_OPT_INHERIT, (void *) ¬much_shared_options, NULL, 0, 0 },
+ { 0, 0, 0, 0, 0}
+ };
+
+ 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/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;
}