diff options
author | Carl Worth <cworth@cworth.org> | 2011-01-31 05:26:04 +1000 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2011-03-09 15:10:03 -0800 |
commit | 0b1ddc5f6652bde99d63d9d553777b3d926694cf (patch) | |
tree | ba702a46212315712cc89dfe9cd33a3fd32ee4a9 /notmuch-search.c | |
parent | f14d4c55ce95edacd4c04318f1d729fef0207aec (diff) |
json: Fix search result with no matches to be a valid json object.
In the original json code, search matching nothing would return a
valid, empty json array (that is, "[]"). I broke this in commit
6dcb7592e32ed5140ea0c0357ce78d6a37af6066 when adding support for
--output=threads|messages|tags. This time, while fixing the bug also
add a test to the test suite to help avoid future regressions.
Diffstat (limited to 'notmuch-search.c')
-rw-r--r-- | notmuch-search.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/notmuch-search.c b/notmuch-search.c index a91b2311..8b901210 100644 --- a/notmuch-search.c +++ b/notmuch-search.c @@ -72,7 +72,7 @@ static const search_format_t format_text = { "%s", " ", ")", "\n", "", - "\n", + "", }; static void @@ -182,15 +182,15 @@ do_search_threads (const search_format_t *format, if (threads == NULL) return 1; + fputs (format->results_start, stdout); + for (; notmuch_threads_valid (threads); notmuch_threads_move_to_next (threads)) { int first_tag = 1; - if (first_thread) - fputs (format->results_start, stdout); - else + if (! first_thread) fputs (format->item_sep, stdout); thread = notmuch_threads_get (threads); @@ -236,8 +236,7 @@ do_search_threads (const search_format_t *format, notmuch_thread_destroy (thread); } - if (! first_thread) - fputs (format->results_end, stdout); + fputs (format->results_end, stdout); return 0; } @@ -255,15 +254,15 @@ do_search_messages (const search_format_t *format, if (messages == NULL) return 1; + fputs (format->results_start, stdout); + for (; notmuch_messages_valid (messages); notmuch_messages_move_to_next (messages)) { message = notmuch_messages_get (messages); - if (first_message) - fputs (format->results_start, stdout); - else + if (! first_message) fputs (format->item_sep, stdout); if (output == OUTPUT_FILES) { @@ -281,8 +280,7 @@ do_search_messages (const search_format_t *format, notmuch_messages_destroy (messages); - if (! first_message) - fputs (format->results_end, stdout); + fputs (format->results_end, stdout); return 0; } @@ -310,15 +308,15 @@ do_search_tags (notmuch_database_t *notmuch, if (tags == NULL) return 1; + fputs (format->results_start, stdout); + for (; notmuch_tags_valid (tags); notmuch_tags_move_to_next (tags)) { tag = notmuch_tags_get (tags); - if (first_tag) - fputs (format->results_start, stdout); - else + if (! first_tag) fputs (format->item_sep, stdout); format->item_id (tags, "", tag); @@ -331,8 +329,7 @@ do_search_tags (notmuch_database_t *notmuch, if (messages) notmuch_messages_destroy (messages); - if (! first_tag) - fputs (format->results_end, stdout); + fputs (format->results_end, stdout); return 0; } |