aboutsummaryrefslogtreecommitdiffhomepage
path: root/notmuch-tag.c
diff options
context:
space:
mode:
authorGravatar Tomi Ollila <tomi.ollila@iki.fi>2013-01-12 09:40:14 +0200
committerGravatar David Bremner <bremner@debian.org>2013-01-14 19:47:14 -0400
commit4b5b6f02cc943b83270ad5061166e5d9967b2899 (patch)
treecd839048d66760772eddba68649e7c3847dd9325 /notmuch-tag.c
parentf1a355febf27de6c2bf5fec1b038af2e96f93263 (diff)
cli: propagate batch tagging warnings to exit value
In case last input for batch tagging was either invalid or skippable line, notmuch command exited with non-zero value. After this change if there is at least one invalid line, notmuch command will exit with non-zero value. Additionally, skipped lines (last or other) doesn't cause non-zero value to be returned.
Diffstat (limited to 'notmuch-tag.c')
-rw-r--r--notmuch-tag.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/notmuch-tag.c b/notmuch-tag.c
index 6408babb..b54c55dd 100644
--- a/notmuch-tag.c
+++ b/notmuch-tag.c
@@ -140,6 +140,7 @@ tag_file (void *ctx, notmuch_database_t *notmuch, tag_op_flag_t flags,
size_t line_size = 0;
ssize_t line_len;
int ret = 0;
+ int warn = 0;
tag_op_list_t *tag_ops;
tag_ops = tag_op_list_create (ctx);
@@ -154,8 +155,13 @@ tag_file (void *ctx, notmuch_database_t *notmuch, tag_op_flag_t flags,
ret = parse_tag_line (ctx, line, TAG_FLAG_NONE,
&query_string, tag_ops);
- if (ret > 0)
+ if (ret > 0) {
+ if (ret != TAG_PARSE_SKIPPED)
+ /* remember there has been problematic lines */
+ warn = 1;
+ ret = 0;
continue;
+ }
if (ret < 0)
break;
@@ -168,7 +174,7 @@ tag_file (void *ctx, notmuch_database_t *notmuch, tag_op_flag_t flags,
if (line)
free (line);
- return ret;
+ return ret || warn;
}
int