]> git.cworth.org Git - notmuch/commitdiff
cli: add --format=text0 to notmuch search
authorJani Nikula <jani@nikula.org>
Sun, 16 Dec 2012 22:05:11 +0000 (00:05 +0200)
committerDavid Bremner <bremner@debian.org>
Tue, 18 Dec 2012 21:04:06 +0000 (17:04 -0400)
Add new format text0, which is otherwise the same as text, but use the
null character as separator instead of the newline character. This is
similar to find(1) -print0 option, and works together with the
xargs(1) -0 option.

notmuch-search.c

index 77049154c69004862bd5ea90bd9d2cd45ac75016..0b0a879e7353e9b739180bf3a2cb2d16a9b9bd45 100644 (file)
@@ -305,8 +305,12 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
     int exclude = EXCLUDE_TRUE;
     unsigned int i;
 
-    enum { NOTMUCH_FORMAT_JSON, NOTMUCH_FORMAT_TEXT, NOTMUCH_FORMAT_SEXP }
-       format_sel = NOTMUCH_FORMAT_TEXT;
+    enum {
+       NOTMUCH_FORMAT_JSON,
+       NOTMUCH_FORMAT_TEXT,
+       NOTMUCH_FORMAT_TEXT0,
+       NOTMUCH_FORMAT_SEXP
+    } format_sel = NOTMUCH_FORMAT_TEXT;
 
     notmuch_opt_desc_t options[] = {
        { NOTMUCH_OPT_KEYWORD, &sort, "sort", 's',
@@ -317,6 +321,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
          (notmuch_keyword_t []){ { "json", NOTMUCH_FORMAT_JSON },
                                  { "sexp", NOTMUCH_FORMAT_SEXP },
                                  { "text", NOTMUCH_FORMAT_TEXT },
+                                 { "text0", NOTMUCH_FORMAT_TEXT0 },
                                  { 0, 0 } } },
        { NOTMUCH_OPT_INT, &notmuch_format_version, "format-version", 0, 0 },
        { NOTMUCH_OPT_KEYWORD, &output, "output", 'o',
@@ -346,6 +351,13 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
     case NOTMUCH_FORMAT_TEXT:
        format = sprinter_text_create (ctx, stdout);
        break;
+    case NOTMUCH_FORMAT_TEXT0:
+       if (output == OUTPUT_SUMMARY) {
+           fprintf (stderr, "Error: --format=text0 is not compatible with --output=summary.\n");
+           return 1;
+       }
+       format = sprinter_text0_create (ctx, stdout);
+       break;
     case NOTMUCH_FORMAT_JSON:
        format = sprinter_json_create (ctx, stdout);
        break;