show: Convert format_headers_json to use sprinter
authorAustin Clements <amdragon@MIT.EDU>
Fri, 3 Aug 2012 01:14:53 +0000 (21:14 -0400)
committerDavid Bremner <bremner@debian.org>
Fri, 3 Aug 2012 23:30:49 +0000 (20:30 -0300)
This no longer requires a talloc context (not that it really did
before since it didn't return anything), so we remove its context
argument.

notmuch-client.h
notmuch-reply.c
notmuch-show.c

index 112574c75628c0c40849bc7459ec89438d8282eb..b11caff875985ba9e876387ce8f7db0110683f04 100644 (file)
@@ -183,7 +183,8 @@ format_part_json (const void *ctx, struct sprinter *sp, mime_node_t *node,
                  notmuch_bool_t first, notmuch_bool_t output_body);
 
 void
-format_headers_json (const void *ctx, GMimeMessage *message, notmuch_bool_t reply);
+format_headers_json (struct sprinter *sp, GMimeMessage *message,
+                    notmuch_bool_t reply);
 
 typedef enum {
     NOTMUCH_SHOW_TEXT_PART_REPLY = 1 << 0,
index 07d4452ad2347eb1295a9428b14a40a55e43e6e1..fa6665f7191572d84e4c41ce535330ae4199090e 100644 (file)
@@ -617,7 +617,7 @@ notmuch_reply_format_json(void *ctx,
 
     /* The headers of the reply message we've created */
     printf ("{\"reply-headers\": ");
-    format_headers_json (ctx, reply, TRUE);
+    format_headers_json (sp, reply, TRUE);
     g_object_unref (G_OBJECT (reply));
     reply = NULL;
 
index b258f656c09d38653db6fa84eb3c1daf492d6a33..9852119f77338f3a8a2190b1ed838449f25d3f28 100644 (file)
@@ -199,48 +199,46 @@ _is_from_line (const char *line)
 }
 
 void
-format_headers_json (const void *ctx, GMimeMessage *message, notmuch_bool_t reply)
+format_headers_json (sprinter_t *sp, GMimeMessage *message,
+                    notmuch_bool_t reply)
 {
-    void *local = talloc_new (ctx);
     InternetAddressList *recipients;
     const char *recipients_string;
 
-    printf ("{%s: %s",
-           json_quote_str (local, "Subject"),
-           json_quote_str (local, g_mime_message_get_subject (message)));
-    printf (", %s: %s",
-           json_quote_str (local, "From"),
-           json_quote_str (local, g_mime_message_get_sender (message)));
+    sp->begin_map (sp);
+
+    sp->map_key (sp, "Subject");
+    sp->string (sp, g_mime_message_get_subject (message));
+
+    sp->map_key (sp, "From");
+    sp->string (sp, g_mime_message_get_sender (message));
+
     recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO);
     recipients_string = internet_address_list_to_string (recipients, 0);
-    if (recipients_string)
-       printf (", %s: %s",
-               json_quote_str (local, "To"),
-               json_quote_str (local, recipients_string));
+    if (recipients_string) {
+       sp->map_key (sp, "To");
+       sp->string (sp, recipients_string);
+    }
+
     recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_CC);
     recipients_string = internet_address_list_to_string (recipients, 0);
-    if (recipients_string)
-       printf (", %s: %s",
-               json_quote_str (local, "Cc"),
-               json_quote_str (local, recipients_string));
+    if (recipients_string) {
+       sp->map_key (sp, "Cc");
+       sp->string (sp, recipients_string);
+    }
 
     if (reply) {
-       printf (", %s: %s",
-               json_quote_str (local, "In-reply-to"),
-               json_quote_str (local, g_mime_object_get_header (GMIME_OBJECT (message), "In-reply-to")));
+       sp->map_key (sp, "In-reply-to");
+       sp->string (sp, g_mime_object_get_header (GMIME_OBJECT (message), "In-reply-to"));
 
-       printf (", %s: %s",
-               json_quote_str (local, "References"),
-               json_quote_str (local, g_mime_object_get_header (GMIME_OBJECT (message), "References")));
+       sp->map_key (sp, "References");
+       sp->string (sp, g_mime_object_get_header (GMIME_OBJECT (message), "References"));
     } else {
-       printf (", %s: %s",
-               json_quote_str (local, "Date"),
-               json_quote_str (local, g_mime_message_get_date_as_string (message)));
+       sp->map_key (sp, "Date");
+       sp->string (sp, g_mime_message_get_date_as_string (message));
     }
 
-    printf ("}");
-
-    talloc_free (local);
+    sp->end (sp);
 }
 
 /* Write a MIME text part out to the given stream.
@@ -575,7 +573,7 @@ format_part_json (const void *ctx, sprinter_t *sp, mime_node_t *node,
        format_message_json (ctx, node->envelope_file);
 
        printf ("\"headers\": ");
-       format_headers_json (ctx, GMIME_MESSAGE (node->part), FALSE);
+       format_headers_json (sp, GMIME_MESSAGE (node->part), FALSE);
 
        if (output_body) {
            printf (", \"body\": [");
@@ -651,7 +649,7 @@ format_part_json (const void *ctx, sprinter_t *sp, mime_node_t *node,
     } else if (GMIME_IS_MESSAGE (node->part)) {
        printf (", \"content\": [{");
        printf ("\"headers\": ");
-       format_headers_json (local, GMIME_MESSAGE (node->part), FALSE);
+       format_headers_json (sp, GMIME_MESSAGE (node->part), FALSE);
 
        printf (", \"body\": [");
        terminator = "]}]";