Re: [PATCH] emacs: wash: make word-wrap bound message width
[notmuch-archives.git] / 71 / f58d7a676b92dbef60b1f21922e05addbc1164
1 Return-Path: <amdragon@mit.edu>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id C7440431FAF\r
6         for <notmuch@notmuchmail.org>; Fri, 27 Jul 2012 21:29:33 -0700 (PDT)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -0.7\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
12         tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id bGuWVtJ7zvQv for <notmuch@notmuchmail.org>;\r
16         Fri, 27 Jul 2012 21:29:32 -0700 (PDT)\r
17 Received: from dmz-mailsec-scanner-1.mit.edu (DMZ-MAILSEC-SCANNER-1.MIT.EDU\r
18         [18.9.25.12])\r
19         by olra.theworths.org (Postfix) with ESMTP id 5DD59431FC0\r
20         for <notmuch@notmuchmail.org>; Fri, 27 Jul 2012 21:29:26 -0700 (PDT)\r
21 X-AuditID: 1209190c-b7f806d000006b87-64-50136aa46d31\r
22 Received: from mailhub-auth-3.mit.edu ( [18.9.21.43])\r
23         by dmz-mailsec-scanner-1.mit.edu (Symantec Messaging Gateway) with SMTP\r
24         id 32.00.27527.4AA63105; Sat, 28 Jul 2012 00:29:24 -0400 (EDT)\r
25 Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103])\r
26         by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id q6S4TNf5009241; \r
27         Sat, 28 Jul 2012 00:29:23 -0400\r
28 Received: from drake.dyndns.org\r
29         (209-6-116-242.c3-0.arl-ubr1.sbo-arl.ma.cable.rcn.com\r
30         [209.6.116.242]) (authenticated bits=0)\r
31         (User authenticated as amdragon@ATHENA.MIT.EDU)\r
32         by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id q6S4TKdF027360\r
33         (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);\r
34         Sat, 28 Jul 2012 00:29:22 -0400 (EDT)\r
35 Received: from amthrax by drake.dyndns.org with local (Exim 4.77)\r
36         (envelope-from <amdragon@mit.edu>)\r
37         id 1SuyeW-0002X5-Pn; Sat, 28 Jul 2012 00:29:20 -0400\r
38 From: Austin Clements <amdragon@MIT.EDU>\r
39 To: notmuch@notmuchmail.org\r
40 Subject: [PATCH v2 09/13] show: Convert non-envelope format_part_json to use\r
41         sprinter\r
42 Date: Sat, 28 Jul 2012 00:29:10 -0400\r
43 Message-Id: <1343449754-9010-10-git-send-email-amdragon@mit.edu>\r
44 X-Mailer: git-send-email 1.7.10\r
45 In-Reply-To: <1343449754-9010-1-git-send-email-amdragon@mit.edu>\r
46 References: <1343449754-9010-1-git-send-email-amdragon@mit.edu>\r
47 X-Brightmail-Tracker:\r
48  H4sIAAAAAAAAA+NgFjrPIsWRmVeSWpSXmKPExsUixCmqrbskSzjAYOY/DYu9De2MFqvn8lhc\r
49         vzmT2eLNynmsDiweO2fdZfdYvGk/m8fhrwtZPJ6tusUcwBLFZZOSmpNZllqkb5fAlXHqzWOW\r
50         go1KFc1/TzE1ME6U7mLk5JAQMJFY+rGPGcIWk7hwbz1bFyMXh5DAPkaJm4+7mCCcDYwSmydt\r
51         ZodwHjFJHL3dyQrhzGWUWD7xLztIP5uAhsS2/csZQWwRAWmJnXdnAxVxcDAL5Ek8XisBEhYW\r
52         CJWY9nEzWDmLgKrExAnbmEBKeAUcJD48C4S4Ql7i6f0+NhCbEyi8+eUHsOuEBOwldk/ewDqB\r
53         kX8BI8MqRtmU3Crd3MTMnOLUZN3i5MS8vNQiXUO93MwSvdSU0k2M4HCT5NnB+Oag0iFGAQ5G\r
54         JR5e5etCAUKsiWXFlbmHGCU5mJREeaPChQOE+JLyUyozEosz4otKc1KLDzFKcDArifDuFATK\r
55         8aYkVlalFuXDpKQ5WJTEeS+n3PQXEkhPLEnNTk0tSC2CycpwcChJ8G7PBGoULEpNT61Iy8wp\r
56         QUgzcXCCDOcBGr4GpIa3uCAxtzgzHSJ/ilFRSpx3EkhCACSRUZoH1wtLB68YxYFeEea9BlLF\r
57         A0wlcN2vgAYzAQ22iBYCGVySiJCSamBsTjlcaLDq/c/kW7Mk5W6ZzckVKixS5H64gSN8+5/3\r
58         hpyba+ftOKetXmKRzchVJ9zk9evivW1TGbTbzs1RNOd4L/byYIxST9jCrK8fj1xbsvlpWM2J\r
59         NCHOGxO1tfyP+TRPXbVRYr/mVr37C25wMNwN8N28WSWzLSRJeKn8XrYP5dtyEjUvrhVVYinO\r
60         SDTUYi4qTgQAejlnVuICAAA=\r
61 Cc: tomi.ollila@iki.fi\r
62 X-BeenThere: notmuch@notmuchmail.org\r
63 X-Mailman-Version: 2.1.13\r
64 Precedence: list\r
65 List-Id: "Use and development of the notmuch mail system."\r
66         <notmuch.notmuchmail.org>\r
67 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
68         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
69 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
70 List-Post: <mailto:notmuch@notmuchmail.org>\r
71 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
72 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
73         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
74 X-List-Received-Date: Sat, 28 Jul 2012 04:29:34 -0000\r
75 \r
76 ---\r
77  notmuch-show.c |   74 +++++++++++++++++++++++++++++++++++---------------------\r
78  1 file changed, 46 insertions(+), 28 deletions(-)\r
79 \r
80 diff --git a/notmuch-show.c b/notmuch-show.c\r
81 index 3ff32df..afbd9d0 100644\r
82 --- a/notmuch-show.c\r
83 +++ b/notmuch-show.c\r
84 @@ -588,7 +588,6 @@ format_part_json (const void *ctx, sprinter_t *sp, mime_node_t *node,\r
85         return;\r
86      }\r
87  \r
88 -    void *local = talloc_new (ctx);\r
89      /* The disposition and content-type metadata are associated with\r
90       * the envelope for message parts */\r
91      GMimeObject *meta = node->envelope_part ?\r
92 @@ -597,31 +596,41 @@ format_part_json (const void *ctx, sprinter_t *sp, mime_node_t *node,\r
93      const char *cid = g_mime_object_get_content_id (meta);\r
94      const char *filename = GMIME_IS_PART (node->part) ?\r
95         g_mime_part_get_filename (GMIME_PART (node->part)) : NULL;\r
96 -    const char *terminator = "";\r
97 +    int nclose = 0;\r
98      int i;\r
99  \r
100 -    if (!first)\r
101 -       printf (", ");\r
102 +    sp->begin_map (sp);\r
103  \r
104 -    printf ("{\"id\": %d", node->part_num);\r
105 +    sp->map_key (sp, "id");\r
106 +    sp->integer (sp, node->part_num);\r
107  \r
108 -    if (node->decrypt_attempted)\r
109 -       printf (", \"encstatus\": [{\"status\": \"%s\"}]",\r
110 -               node->decrypt_success ? "good" : "bad");\r
111 +    if (node->decrypt_attempted) {\r
112 +       sp->map_key (sp, "encstatus");\r
113 +       sp->begin_list (sp);\r
114 +       sp->begin_map (sp);\r
115 +       sp->map_key (sp, "status");\r
116 +       sp->string (sp, node->decrypt_success ? "good" : "bad");\r
117 +       sp->end (sp);\r
118 +       sp->end (sp);\r
119 +    }\r
120  \r
121      if (node->verify_attempted) {\r
122 -       printf (", \"sigstatus\": ");\r
123 +       sp->map_key (sp, "sigstatus");\r
124         format_part_sigstatus_json (sp, node);\r
125      }\r
126  \r
127 -    printf (", \"content-type\": %s",\r
128 -           json_quote_str (local, g_mime_content_type_to_string (content_type)));\r
129 +    sp->map_key (sp, "content-type");\r
130 +    sp->string (sp, g_mime_content_type_to_string (content_type));\r
131  \r
132 -    if (cid)\r
133 -       printf (", \"content-id\": %s", json_quote_str (local, cid));\r
134 +    if (cid) {\r
135 +       sp->map_key (sp, "content-id");\r
136 +       sp->string (sp, cid);\r
137 +    }\r
138  \r
139 -    if (filename)\r
140 -       printf (", \"filename\": %s", json_quote_str (local, filename));\r
141 +    if (filename) {\r
142 +       sp->map_key (sp, "filename");\r
143 +       sp->string (sp, filename);\r
144 +    }\r
145  \r
146      if (GMIME_IS_PART (node->part)) {\r
147         /* For non-HTML text parts, we include the content in the\r
148 @@ -636,35 +645,44 @@ format_part_json (const void *ctx, sprinter_t *sp, mime_node_t *node,\r
149         if (g_mime_content_type_is_type (content_type, "text", "html")) {\r
150             const char *content_charset = g_mime_object_get_content_type_parameter (meta, "charset");\r
151  \r
152 -           if (content_charset != NULL)\r
153 -               printf (", \"content-charset\": %s", json_quote_str (local, content_charset));\r
154 +           if (content_charset != NULL) {\r
155 +               sp->map_key (sp, "content-charset");\r
156 +               sp->string (sp, content_charset);\r
157 +           }\r
158         } else if (g_mime_content_type_is_type (content_type, "text", "*")) {\r
159             GMimeStream *stream_memory = g_mime_stream_mem_new ();\r
160             GByteArray *part_content;\r
161             show_text_part_content (node->part, stream_memory, 0);\r
162             part_content = g_mime_stream_mem_get_byte_array (GMIME_STREAM_MEM (stream_memory));\r
163 -\r
164 -           printf (", \"content\": %s", json_quote_chararray (local, (char *) part_content->data, part_content->len));\r
165 +           sp->map_key (sp, "content");\r
166 +           sp->string_len (sp, (char *) part_content->data, part_content->len);\r
167             g_object_unref (stream_memory);\r
168         }\r
169      } else if (GMIME_IS_MULTIPART (node->part)) {\r
170 -       printf (", \"content\": [");\r
171 -       terminator = "]";\r
172 +       sp->map_key (sp, "content");\r
173 +       sp->begin_list (sp);\r
174 +       nclose = 1;\r
175      } else if (GMIME_IS_MESSAGE (node->part)) {\r
176 -       printf (", \"content\": [{");\r
177 -       printf ("\"headers\": ");\r
178 +       sp->map_key (sp, "content");\r
179 +       sp->begin_list (sp);\r
180 +       sp->begin_map (sp);\r
181 +\r
182 +       sp->map_key (sp, "headers");\r
183         format_headers_json (sp, GMIME_MESSAGE (node->part), FALSE);\r
184  \r
185 -       printf (", \"body\": [");\r
186 -       terminator = "]}]";\r
187 +       sp->map_key (sp, "body");\r
188 +       sp->begin_list (sp);\r
189 +       nclose = 3;\r
190      }\r
191  \r
192 -    talloc_free (local);\r
193 -\r
194      for (i = 0; i < node->nchildren; i++)\r
195         format_part_json (ctx, sp, mime_node_child (node, i), i == 0, TRUE);\r
196  \r
197 -    printf ("%s}", terminator);\r
198 +    /* Close content structures */\r
199 +    for (i = 0; i < nclose; i++)\r
200 +       sp->end (sp);\r
201 +    /* Close part map */\r
202 +    sp->end (sp);\r
203  }\r
204  \r
205  static notmuch_status_t\r
206 -- \r
207 1.7.10\r
208 \r