[PATCH v4 3/5] cli: add --format=text0 to notmuch search

2012-12-17 Thread Jani Nikula
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 |   16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/notmuch-search.c b/notmuch-search.c
index 7704915..0b0a879 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -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", '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, _format_version, "format-version", 0, 0 },
{ NOTMUCH_OPT_KEYWORD, , "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;
-- 
1.7.10.4



[PATCH v4 3/5] cli: add --format=text0 to notmuch search

2012-12-16 Thread Jani Nikula
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 |   16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/notmuch-search.c b/notmuch-search.c
index 7704915..0b0a879 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -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;
-- 
1.7.10.4

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch