]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-search.c
notmuch: Add a new "notmuch config" command for querying configuration.
[notmuch] / notmuch-search.c
index 25dd6eba370b4b302135dc518ca7b4db1e285484..704aa43b654ec7fa10aab5ac795a4d079a19d48f 100644 (file)
@@ -104,25 +104,16 @@ format_thread_json (const void *ctx,
                    const char *authors,
                    const char *subject)
 {
-    struct tm *tm;
-    char timestamp[40];
     void *ctx_quote = talloc_new (ctx);
 
-    tm = gmtime (&date);
-    if (tm == NULL)
-       INTERNAL_ERROR ("gmtime failed on thread %s.", thread_id);
-
-    if (strftime (timestamp, sizeof (timestamp), "%s", tm) == 0)
-       INTERNAL_ERROR ("strftime failed on thread %s.", thread_id);
-
     printf ("\"thread\": %s,\n"
-           "\"timestamp\": %s,\n"
+           "\"timestamp\": %ld,\n"
            "\"matched\": %d,\n"
            "\"total\": %d,\n"
            "\"authors\": %s,\n"
            "\"subject\": %s,\n",
            json_quote_str (ctx_quote, thread_id),
-           timestamp,
+           date,
            matched,
            total,
            json_quote_str (ctx_quote, authors),
@@ -131,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,
@@ -145,9 +136,13 @@ do_search_threads (const void *ctx,
 
     fputs (format->results_start, stdout);
 
-    for (threads = notmuch_query_search_threads (query);
-        notmuch_threads_has_more (threads);
-        notmuch_threads_advance (threads))
+    threads = notmuch_query_search_threads (query);
+    if (threads == NULL)
+       return 1;
+
+    for (;
+        notmuch_threads_valid (threads);
+        notmuch_threads_move_to_next (threads))
     {
        int first_tag = 1;
 
@@ -174,8 +169,8 @@ do_search_threads (const void *ctx,
        fputs (format->tag_start, stdout);
 
        for (tags = notmuch_thread_get_tags (thread);
-            notmuch_tags_has_more (tags);
-            notmuch_tags_advance (tags))
+            notmuch_tags_valid (tags);
+            notmuch_tags_move_to_next (tags))
        {
            if (! first_tag)
                fputs (format->tag_sep, stdout);
@@ -192,6 +187,8 @@ do_search_threads (const void *ctx,
     }
 
     fputs (format->results_end, stdout);
+
+    return 0;
 }
 
 int
@@ -204,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) {
@@ -267,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;
 }