aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Clements <amdragon@MIT.EDU>2012-08-02 21:14:50 -0400
committerDavid Bremner <bremner@debian.org>2012-08-03 20:21:50 -0300
commitd79b24b98d26e08f7529df6c404d523739175347 (patch)
tree5e560e4c8ff95ef06f8bf9d86b17f20495436cfb
parent14883b07003b9ed4223cd8f2c03b301fddae07bd (diff)
show: Associate an sprinter with each format
This associates an sprinter constructor with each show format and uses this to construct the appropriate sprinter. Currently nothing is done with this sprinter, but the following patches will weave it through the layers of notmuch show.
-rw-r--r--notmuch-client.h1
-rw-r--r--notmuch-show.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/notmuch-client.h b/notmuch-client.h
index f930798..bbc0a11 100644
--- a/notmuch-client.h
+++ b/notmuch-client.h
@@ -69,6 +69,7 @@ typedef struct mime_node mime_node_t;
struct notmuch_show_params;
typedef struct notmuch_show_format {
+ struct sprinter *(*new_sprinter) (const void *ctx, FILE *stream);
const char *message_set_start;
notmuch_status_t (*part) (const void *ctx,
struct mime_node *node, int indent,
diff --git a/notmuch-show.c b/notmuch-show.c
index d3419e4..d04943f 100644
--- a/notmuch-show.c
+++ b/notmuch-show.c
@@ -20,12 +20,14 @@
#include "notmuch-client.h"
#include "gmime-filter-reply.h"
+#include "sprinter.h"
static notmuch_status_t
format_part_text (const void *ctx, mime_node_t *node,
int indent, const notmuch_show_params_t *params);
static const notmuch_show_format_t format_text = {
+ .new_sprinter = sprinter_text_create,
.part = format_part_text,
};
@@ -34,6 +36,7 @@ format_part_json_entry (const void *ctx, mime_node_t *node,
int indent, const notmuch_show_params_t *params);
static const notmuch_show_format_t format_json = {
+ .new_sprinter = sprinter_json_create,
.message_set_start = "[",
.part = format_part_json_entry,
.message_set_sep = ", ",
@@ -46,6 +49,7 @@ format_part_mbox (const void *ctx, mime_node_t *node,
int indent, const notmuch_show_params_t *params);
static const notmuch_show_format_t format_mbox = {
+ .new_sprinter = sprinter_text_create,
.part = format_part_mbox,
};
@@ -55,6 +59,7 @@ format_part_raw (unused (const void *ctx), mime_node_t *node,
unused (const notmuch_show_params_t *params));
static const notmuch_show_format_t format_raw = {
+ .new_sprinter = sprinter_text_create,
.part = format_part_raw,
};
@@ -1003,6 +1008,7 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))
char *query_string;
int opt_index, ret;
const notmuch_show_format_t *format = &format_text;
+ sprinter_t *sprinter;
notmuch_show_params_t params = {
.part = -1,
.omit_excluded = TRUE,
@@ -1130,6 +1136,9 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))
return 1;
}
+ /* Create structure printer. */
+ sprinter = format->new_sprinter(ctx, stdout);
+
/* If a single message is requested we do not use search_excludes. */
if (params.part >= 0)
ret = do_show_single (ctx, query, format, &params);