]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-restore.c
util: Fix two corner-cases in boolean term quoting function
[notmuch] / notmuch-restore.c
index cf26a423705fad8aee399e070416fbfb6c28425e..f23ab983a93da0a84020ee460300f4f631225743 100644 (file)
@@ -120,9 +120,8 @@ parse_sup_line (void *ctx, char *line,
 }
 
 int
-notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
+notmuch_restore_command (notmuch_config_t *config, int argc, char *argv[])
 {
-    notmuch_config_t *config;
     notmuch_database_t *notmuch;
     notmuch_bool_t accumulate = FALSE;
     tag_op_flag_t flags = 0;
@@ -139,13 +138,9 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
     int opt_index;
     int input_format = DUMP_FORMAT_AUTO;
 
-    config = notmuch_config_open (ctx, NULL, NULL);
-    if (config == NULL)
-       return 1;
-
     if (notmuch_database_open (notmuch_config_get_database_path (config),
                               NOTMUCH_DATABASE_MODE_READ_WRITE, &notmuch))
-       return 1;
+       return EXIT_FAILURE;
 
     if (notmuch_config_get_maildir_synchronize_flags (config))
        flags |= TAG_FLAG_MAILDIR_SYNC;
@@ -162,11 +157,8 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
     };
 
     opt_index = parse_arguments (argc, argv, options, 1);
-
-    if (opt_index < 0) {
-       /* diagnostics already printed */
-       return 1;
-    }
+    if (opt_index < 0)
+       return EXIT_FAILURE;
 
     if (! accumulate)
        flags |= TAG_FLAG_REMOVE_ALL;
@@ -176,21 +168,19 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
        if (input == NULL) {
            fprintf (stderr, "Error opening %s for reading: %s\n",
                     input_file_name, strerror (errno));
-           return 1;
+           return EXIT_FAILURE;
        }
     }
 
     if (opt_index < argc) {
-       fprintf (stderr,
-                "Unused positional parameter: %s\n",
-                argv[opt_index]);
-       return 1;
+       fprintf (stderr, "Unused positional parameter: %s\n", argv[opt_index]);
+       return EXIT_FAILURE;
     }
 
-    tag_ops = tag_op_list_create (ctx);
+    tag_ops = tag_op_list_create (config);
     if (tag_ops == NULL) {
        fprintf (stderr, "Out of memory.\n");
-       return 1;
+       return EXIT_FAILURE;
     }
 
     do {
@@ -198,7 +188,7 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
 
        /* empty input file not considered an error */
        if (line_len < 0)
-           return 0;
+           return EXIT_SUCCESS;
 
     } while ((line_len == 0) ||
             (line[0] == '#') ||
@@ -226,7 +216,7 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
        if (line_ctx != NULL)
            talloc_free (line_ctx);
 
-       line_ctx = talloc_new (ctx);
+       line_ctx = talloc_new (config);
        if (input_format == DUMP_FORMAT_SUP) {
            ret = parse_sup_line (line_ctx, line, &query_string, tag_ops);
        } else {
@@ -280,5 +270,5 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
     if (input != stdin)
        fclose (input);
 
-    return ret;
+    return ret ? EXIT_FAILURE : EXIT_SUCCESS;
 }