[PATCH 2/3] Use the S-Expression structured printer for notmuch search.
Peter Feigl
craven at gmx.net
Fri Nov 30 00:29:02 PST 2012
This commit adds support for --format=sexp to notmuch search.
---
notmuch-search.c | 6 +++++-
sprinter.h | 4 ++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/notmuch-search.c b/notmuch-search.c
index 830c4e4..6218622 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -305,7 +305,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
int exclude = EXCLUDE_TRUE;
unsigned int i;
- enum { NOTMUCH_FORMAT_JSON, NOTMUCH_FORMAT_TEXT }
+ enum { NOTMUCH_FORMAT_JSON, NOTMUCH_FORMAT_TEXT, NOTMUCH_FORMAT_SEXP }
format_sel = NOTMUCH_FORMAT_TEXT;
notmuch_opt_desc_t options[] = {
@@ -315,6 +315,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
{ 0, 0 } } },
{ NOTMUCH_OPT_KEYWORD, &format_sel, "format", 'f',
(notmuch_keyword_t []){ { "json", NOTMUCH_FORMAT_JSON },
+ { "sexp", NOTMUCH_FORMAT_SEXP },
{ "text", NOTMUCH_FORMAT_TEXT },
{ 0, 0 } } },
{ NOTMUCH_OPT_KEYWORD, &output, "output", 'o',
@@ -347,6 +348,9 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
case NOTMUCH_FORMAT_JSON:
format = sprinter_json_create (ctx, stdout);
break;
+ case NOTMUCH_FORMAT_SEXP:
+ format = sprinter_sexp_create (ctx, stdout);
+ break;
default:
/* this should never happen */
INTERNAL_ERROR("no output format selected");
diff --git a/sprinter.h b/sprinter.h
index 912a526..59776a9 100644
--- a/sprinter.h
+++ b/sprinter.h
@@ -70,4 +70,8 @@ sprinter_text_create (const void *ctx, FILE *stream);
struct sprinter *
sprinter_json_create (const void *ctx, FILE *stream);
+/* Create a new structure printer that emits S-Expressions. */
+struct sprinter *
+sprinter_sexp_create (const void *ctx, FILE *stream);
+
#endif // NOTMUCH_SPRINTER_H
--
1.8.0
More information about the notmuch
mailing list