[PATCH v2 07/10] cli: indicate insert failure mode in exit status
Peter Wang
novalazy at gmail.com
Wed Apr 16 05:59:22 PDT 2014
Make insert return a different exit code, 2, for failure to write the
message file to disk, and exit code 1 for other errors.
---
notmuch-insert.c | 30 ++++++++++++++++++------------
test/T070-insert.sh | 4 ++--
2 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/notmuch-insert.c b/notmuch-insert.c
index 7db4f73..29d82c9 100644
--- a/notmuch-insert.c
+++ b/notmuch-insert.c
@@ -28,6 +28,12 @@
#include <sys/stat.h>
#include <fcntl.h>
+enum {
+ INSERT_EXIT_SUCCESS = 0,
+ INSERT_EXIT_FAILURE = 1,
+ INSERT_EXIT_FAILED_WRITE = 2
+};
+
static volatile sig_atomic_t interrupted;
static void
@@ -408,7 +414,7 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
opt_index = parse_arguments (argc, argv, options, 1);
if (opt_index < 0)
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
db_path = notmuch_config_get_database_path (config);
new_tags = notmuch_config_get_new_tags (config, &new_tags_length);
@@ -417,7 +423,7 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
tag_ops = tag_op_list_create (config);
if (tag_ops == NULL) {
fprintf (stderr, "Out of memory.\n");
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
}
for (i = 0; i < new_tags_length; i++) {
const char *error_msg;
@@ -426,20 +432,20 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
if (error_msg) {
fprintf (stderr, "Error: tag '%s' in new.tags: %s\n",
new_tags[i], error_msg);
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
}
if (tag_op_list_append (tag_ops, new_tags[i], FALSE))
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
}
if (parse_tag_command_line (config, argc - opt_index, argv + opt_index,
&query_string, tag_ops))
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
if (*query_string != '\0') {
fprintf (stderr, "Error: unexpected query string: %s\n", query_string);
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
}
if (folder == NULL) {
@@ -447,17 +453,17 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
} else {
if (! check_folder_name (folder)) {
fprintf (stderr, "Error: bad folder name: %s\n", folder);
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
}
maildir = talloc_asprintf (config, "%s/%s", db_path, folder);
if (! maildir) {
fprintf (stderr, "Out of memory\n");
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
}
if (create_folder && ! maildir_create_folder (config, maildir)) {
fprintf (stderr, "Error: creating maildir %s: %s\n",
maildir, strerror (errno));
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
}
}
@@ -471,12 +477,12 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
if (notmuch_database_open (notmuch_config_get_database_path (config),
NOTMUCH_DATABASE_MODE_READ_WRITE, ¬much))
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILURE;
/* Write the message to the Maildir new directory. */
if (! write_message (config, STDIN_FILENO, maildir, &newpath)) {
notmuch_database_destroy (notmuch);
- return EXIT_FAILURE;
+ return INSERT_EXIT_FAILED_WRITE;
}
/* Add the message to the index.
@@ -486,5 +492,5 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])
synchronize_flags);
notmuch_database_destroy (notmuch);
- return EXIT_SUCCESS;
+ return INSERT_EXIT_SUCCESS;
}
diff --git a/test/T070-insert.sh b/test/T070-insert.sh
index ea9db07..c576efc 100755
--- a/test/T070-insert.sh
+++ b/test/T070-insert.sh
@@ -18,7 +18,7 @@ gen_insert_msg() {
"[body]=\"insert-message\""
}
-test_expect_code 1 "Insert zero-length file" \
+test_expect_code 2 "Insert zero-length file" \
"notmuch insert < /dev/null"
# This test is a proxy for other errors that may occur while trying to
@@ -137,7 +137,7 @@ output=$(notmuch search --output=messages path:Drafts/cur tag:draft NOT tag:unre
test_expect_equal "$output" "id:$gen_msg_id"
gen_insert_msg
-test_expect_code 1 "Insert message into non-existent folder" \
+test_expect_code 2 "Insert message into non-existent folder" \
"notmuch insert --folder=nonesuch < $gen_msg_filename"
test_begin_subtest "Insert message, create folder"
--
1.8.4
More information about the notmuch
mailing list