aboutsummaryrefslogtreecommitdiffhomepage
path: root/notmuch-search.c
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2010-10-22 17:57:02 -0700
committerGravatar Carl Worth <cworth@cworth.org>2010-10-22 18:03:39 -0700
commit14a2227f77bcf69235034326fb35440b31354cea (patch)
tree0fe0d872f5dc27bf6c4e15bb7ed0c09bdf41a9fc /notmuch-search.c
parentf6cb896bc4c0bafca1acd5ac3fb45169cd893e29 (diff)
notmuch search: Fix to handle failure of notmuch_query_search_threads.
Now that notmuch_query_search_threads can return NULL, (for example, due to a Xapian exception), we need to handle that case (rather than just segfault). It's simple enough to just return a non-zero exit code.
Diffstat (limited to 'notmuch-search.c')
-rw-r--r--notmuch-search.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/notmuch-search.c b/notmuch-search.c
index 8a1cdca3..704aa43b 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -122,7 +122,7 @@ format_thread_json (const void *ctx,
talloc_free (ctx_quote);
}
-static void
+static int
do_search_threads (const void *ctx,
const search_format_t *format,
notmuch_query_t *query,
@@ -136,7 +136,11 @@ do_search_threads (const void *ctx,
fputs (format->results_start, stdout);
- for (threads = notmuch_query_search_threads (query);
+ threads = notmuch_query_search_threads (query);
+ if (threads == NULL)
+ return 1;
+
+ for (;
notmuch_threads_valid (threads);
notmuch_threads_move_to_next (threads))
{
@@ -183,6 +187,8 @@ do_search_threads (const void *ctx,
}
fputs (format->results_end, stdout);
+
+ return 0;
}
int
@@ -195,7 +201,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
char *opt;
notmuch_sort_t sort = NOTMUCH_SORT_NEWEST_FIRST;
const search_format_t *format = &format_text;
- int i;
+ int i, ret;
for (i = 0; i < argc && argv[i][0] == '-'; i++) {
if (strcmp (argv[i], "--") == 0) {
@@ -258,10 +264,10 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
notmuch_query_set_sort (query, sort);
- do_search_threads (ctx, format, query, sort);
+ ret = do_search_threads (ctx, format, query, sort);
notmuch_query_destroy (query);
notmuch_database_close (notmuch);
- return 0;
+ return ret;
}