}
static void
-format_headers_json (const void *ctx, notmuch_message_t *message)
+format_headers_json (const void *ctx, GMimeMessage *message)
{
- const char *headers[] = {
- "Subject", "From", "To", "Cc", "Bcc", "Date"
- };
- const char *name, *value;
- unsigned int i;
- int first_header = 1;
- void *ctx_quote = talloc_new (ctx);
-
- for (i = 0; i < ARRAY_SIZE (headers); i++) {
- name = headers[i];
- value = notmuch_message_get_header (message, name);
- if (value)
- {
- if (!first_header)
- fputs (", ", stdout);
- first_header = 0;
-
- printf ("%s: %s",
- json_quote_str (ctx_quote, name),
- json_quote_str (ctx_quote, value));
- }
- }
-
- talloc_free (ctx_quote);
-}
-
-static void
-format_headers_message_part_json (GMimeMessage *message)
-{
- void *ctx = talloc_new (NULL);
- void *ctx_quote = talloc_new (ctx);
+ void *local = talloc_new (ctx);
InternetAddressList *recipients;
const char *recipients_string;
- printf ("%s: %s",
- json_quote_str (ctx_quote, "From"),
- json_quote_str (ctx_quote, g_mime_message_get_sender (message)));
+ 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)));
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 (ctx_quote, "To"),
- json_quote_str (ctx_quote, recipients_string));
+ json_quote_str (local, "To"),
+ json_quote_str (local, 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 (ctx_quote, "Cc"),
- json_quote_str (ctx_quote, recipients_string));
- printf (", %s: %s",
- json_quote_str (ctx_quote, "Subject"),
- json_quote_str (ctx_quote, g_mime_message_get_subject (message)));
- printf (", %s: %s",
- json_quote_str (ctx_quote, "Date"),
- json_quote_str (ctx_quote, g_mime_message_get_date_as_string (message)));
+ json_quote_str (local, "Cc"),
+ json_quote_str (local, recipients_string));
+ printf (", %s: %s}",
+ json_quote_str (local, "Date"),
+ json_quote_str (local, g_mime_message_get_date_as_string (message)));
- talloc_free (ctx_quote);
- talloc_free (ctx);
+ talloc_free (local);
}
/* Write a MIME text part out to the given stream.
#ifdef GMIME_ATLEAST_26
static void
-format_part_sigstatus_json (GMimeSignatureList *siglist)
+format_part_sigstatus_json (mime_node_t *node)
{
- printf (", \"sigstatus\": [");
+ GMimeSignatureList *siglist = node->sig_list;
+
+ printf ("[");
if (!siglist) {
printf ("]");
}
#else
static void
-format_part_sigstatus_json (const GMimeSignatureValidity* validity)
+format_part_sigstatus_json (mime_node_t *node)
{
- printf (", \"sigstatus\": [");
+ const GMimeSignatureValidity* validity = node->sig_validity;
+
+ printf ("[");
if (!validity) {
printf ("]");
printf ("{");
format_message_json (ctx, node->envelope_file);
- printf ("\"headers\": {");
- format_headers_json (ctx, node->envelope_file);
- printf ("}");
+ printf ("\"headers\": ");
+ format_headers_json (ctx, GMIME_MESSAGE (node->part));
printf (", \"body\": [");
format_part_json (ctx, mime_node_child (node, 0), first);
}
if (node->verify_attempted) {
-#ifdef GMIME_ATLEAST_26
- format_part_sigstatus_json (node->sig_list);
-#else
- format_part_sigstatus_json (node->sig_validity);
-#endif
+ printf (", \"sigstatus\": ");
+ format_part_sigstatus_json (node);
}
printf (", \"content-type\": %s",
g_object_unref (stream_memory);
if (GMIME_IS_MESSAGE (node->part)) {
- printf ("\"headers\": {");
- format_headers_message_part_json (GMIME_MESSAGE (node->part));
- printf ("}");
+ printf ("\"headers\": ");
+ format_headers_json (local, GMIME_MESSAGE (node->part));
printf (", \"body\": [");
}