sprinter: add text0 formatter for null character separated text

Same as the text formatter, but with each field separated by a null
character rather than a newline character.
This commit is contained in:
Jani Nikula 2012-12-17 00:05:10 +02:00 committed by David Bremner
parent 1358f93a9f
commit 64122c31fa
2 changed files with 28 additions and 0 deletions

View file

@ -67,6 +67,14 @@ text_separator (struct sprinter *sp)
fputc ('\n', sptxt->stream); fputc ('\n', sptxt->stream);
} }
static void
text0_separator (struct sprinter *sp)
{
struct sprinter_text *sptxt = (struct sprinter_text *) sp;
fputc ('\0', sptxt->stream);
}
static void static void
text_set_prefix (struct sprinter *sp, const char *prefix) text_set_prefix (struct sprinter *sp, const char *prefix)
{ {
@ -133,3 +141,17 @@ sprinter_text_create (const void *ctx, FILE *stream)
res->stream = stream; res->stream = stream;
return &res->vtable; return &res->vtable;
} }
struct sprinter *
sprinter_text0_create (const void *ctx, FILE *stream)
{
struct sprinter *sp;
sp = sprinter_text_create (ctx, stream);
if (! sp)
return NULL;
sp->separator = text0_separator;
return sp;
}

View file

@ -67,6 +67,12 @@ typedef struct sprinter {
struct sprinter * struct sprinter *
sprinter_text_create (const void *ctx, FILE *stream); sprinter_text_create (const void *ctx, FILE *stream);
/* Create a new unstructured printer that emits the text format for
* "notmuch search", with each field separated by a null character
* instead of the newline character. */
struct sprinter *
sprinter_text0_create (const void *ctx, FILE *stream);
/* Create a new structure printer that emits JSON. */ /* Create a new structure printer that emits JSON. */
struct sprinter * struct sprinter *
sprinter_json_create (const void *ctx, FILE *stream); sprinter_json_create (const void *ctx, FILE *stream);