1 Return-Path: <jani@nikula.org>
\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 arlo.cworth.org (Postfix) with ESMTP id DBA936DE091F
\r
6 for <notmuch@notmuchmail.org>; Sun, 19 Jun 2016 13:17:20 -0700 (PDT)
\r
7 X-Virus-Scanned: Debian amavisd-new at cworth.org
\r
8 X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References"
\r
10 X-Spam-Score: -0.568
\r
12 X-Spam-Status: No, score=-0.568 tagged_above=-999 required=5 tests=[AWL=0.152,
\r
13 DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7,
\r
14 RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=disabled
\r
15 Received: from arlo.cworth.org ([127.0.0.1])
\r
16 by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024)
\r
17 with ESMTP id Kgy9ZBscP9r9 for <notmuch@notmuchmail.org>;
\r
18 Sun, 19 Jun 2016 13:17:13 -0700 (PDT)
\r
19 Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com
\r
20 [74.125.82.66]) by arlo.cworth.org (Postfix) with ESMTPS id AB9456DE01F9 for
\r
21 <notmuch@notmuchmail.org>; Sun, 19 Jun 2016 13:17:06 -0700 (PDT)
\r
22 Received: by mail-wm0-f66.google.com with SMTP id c82so6633603wme.3
\r
23 for <notmuch@notmuchmail.org>; Sun, 19 Jun 2016 13:17:06 -0700 (PDT)
\r
24 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
\r
25 d=nikula-org.20150623.gappssmtp.com; s=20150623;
\r
26 h=from:to:cc:subject:date:message-id:in-reply-to:references
\r
27 :in-reply-to:references;
\r
28 bh=0Wi7c1OZnF7bwlFMEApf+3G2yvM9M/8CtF2wBYS6gLU=;
\r
29 b=GKNO3g2dxWqwIzYmKcgv2Z77VjnJqOpK9jUAoZFB80ywugL5tc395kodLILmAXS1yV
\r
30 qY62aKDaOuLOs12FWVlq7U77mYaSnklqXHY9Ng2z4k4JF5gjpSiuc7z8i3vXaOXCDQXY
\r
31 +og/1y5aAa15bzEf1MAIhqdLrGJSBCcTsbkyzsiJjV1DT/uJ0WdNiJOahskOrNFbxJra
\r
32 xZFoY0wjxzAmigdTKq6r4CB2Y/tsQvRGDLqMmhREgxwEGtFi2scVxO+Aal+RrnqjDx0T
\r
33 +N137WX5Vn7dgoS363VlrFY9gkvmqiH+aEAI9/vfRoVmYIejZfUIguuuLippw1+M8poC
\r
35 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
\r
36 d=1e100.net; s=20130820;
\r
37 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
\r
38 :references:in-reply-to:references;
\r
39 bh=0Wi7c1OZnF7bwlFMEApf+3G2yvM9M/8CtF2wBYS6gLU=;
\r
40 b=eYLymwi0ULsxXbQUtUrgevI+0Dsu2IElHn49KYs08iAE57drW2Y0/DHSyUiTucWars
\r
41 chtuaJJF6GLjZlHij2s47TMa7k9C3ENqKtExnRVGZwI2P/he+FSYznAPRBX4nYkih7KL
\r
42 WdDvhZGWoqEskuy89jOtRZ00IndRXkpqNDvstj093gNaOFuGxLPP8P9g5zOLApO8O5lv
\r
43 MD0a1cxreWfRLOHuJCEshltutPoFnjZdfF2ihTVDZ/7JLAjIZWu5nYR44WOXVPGfl+uy
\r
44 8pVUS2FPkveMi08YPNhy+c9w/l6y1qzDX58HiNvX09f14z1Wa05yN6ZZxe2m9vB78bWJ
\r
47 ALyK8tJjugttvjfj+lmMaEJHt2Dj7omjYcFITkdW5k+A1epogUeYSWK6pgKTcvadi1EP0w==
\r
48 X-Received: by 10.28.54.147 with SMTP id y19mr7724156wmh.68.1466367425247;
\r
49 Sun, 19 Jun 2016 13:17:05 -0700 (PDT)
\r
50 Received: from localhost (mobile-access-bcee4e-81.dhcp.inet.fi.
\r
52 by smtp.gmail.com with ESMTPSA id kd7sm60038230wjc.33.2016.06.19.13.17.04
\r
53 (version=TLSv1/SSLv3 cipher=OTHER);
\r
54 Sun, 19 Jun 2016 13:17:04 -0700 (PDT)
\r
55 From: Jani Nikula <jani@nikula.org>
\r
56 To: Jani Nikula <jani@nikula.org>,
\r
57 notmuch@notmuchmail.org
\r
58 Cc: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
\r
59 Subject: [RFC PATCH 3/6] cli/reply: return internet address list from get
\r
61 Date: Sun, 19 Jun 2016 23:15:31 +0300
\r
63 <c4c94e14896bd50b1653dd54662bac7c5bfdd03a.1466366737.git.jani@nikula.org>
\r
64 X-Mailer: git-send-email 2.1.4
\r
65 In-Reply-To: <cover.1466366737.git.jani@nikula.org>
\r
66 References: <cover.1466284726.git.jani@nikula.org>
\r
67 <cover.1466366737.git.jani@nikula.org>
\r
68 In-Reply-To: <cover.1466366737.git.jani@nikula.org>
\r
69 References: <cover.1466366737.git.jani@nikula.org>
\r
70 X-BeenThere: notmuch@notmuchmail.org
\r
71 X-Mailman-Version: 2.1.20
\r
73 List-Id: "Use and development of the notmuch mail system."
\r
74 <notmuch.notmuchmail.org>
\r
75 List-Unsubscribe: <https://notmuchmail.org/mailman/options/notmuch>,
\r
76 <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
\r
77 List-Archive: <http://notmuchmail.org/pipermail/notmuch/>
\r
78 List-Post: <mailto:notmuch@notmuchmail.org>
\r
79 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
\r
80 List-Subscribe: <https://notmuchmail.org/mailman/listinfo/notmuch>,
\r
81 <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
\r
82 X-List-Received-Date: Sun, 19 Jun 2016 20:17:21 -0000
\r
84 Pass in GMimeMessage to simplify To/Cc/Bcc headers. We'll eventually
\r
85 remove the notmuch message passing altogether, but keep both for now
\r
86 to not make too big changes at once.
\r
88 Get rid of an intermediate function.
\r
90 The small annoyance is the ownership differences in the address lists.
\r
92 notmuch-reply.c | 73 ++++++++++++++++++++++++---------------------------------
\r
93 1 file changed, 30 insertions(+), 43 deletions(-)
\r
95 diff --git a/notmuch-reply.c b/notmuch-reply.c
\r
96 index d90f46f9bed3..98034485c546 100644
\r
97 --- a/notmuch-reply.c
\r
98 +++ b/notmuch-reply.c
\r
99 @@ -227,31 +227,6 @@ scan_address_list (InternetAddressList *list,
\r
103 -/* Scan addresses in 'recipients'.
\r
105 - * See the documentation of scan_address_list() above. This function
\r
106 - * does exactly the same, but converts 'recipients' to an
\r
107 - * InternetAddressList first.
\r
109 -static unsigned int
\r
110 -scan_address_string (const char *recipients,
\r
111 - notmuch_config_t *config,
\r
112 - GMimeMessage *message,
\r
113 - GMimeRecipientType type,
\r
114 - const char **user_from)
\r
116 - InternetAddressList *list;
\r
118 - if (recipients == NULL)
\r
121 - list = internet_address_list_parse_string (recipients);
\r
122 - if (list == NULL)
\r
125 - return scan_address_list (list, config, message, type, user_from);
\r
128 /* Does the address in the Reply-To header of 'message' already appear
\r
129 * in either the 'To' or 'Cc' header of the message?
\r
131 @@ -287,11 +262,12 @@ reply_to_header_is_redundant (notmuch_message_t *message, const char *reply_to)
\r
135 -static const char *get_sender(notmuch_message_t *message)
\r
136 +static InternetAddressList *get_sender(notmuch_message_t *message,
\r
137 + GMimeMessage *mime_message)
\r
139 const char *reply_to;
\r
141 - reply_to = notmuch_message_get_header (message, "reply-to");
\r
142 + reply_to = g_mime_message_get_reply_to (mime_message);
\r
143 if (reply_to && *reply_to) {
\r
145 * Some mailing lists munge the Reply-To header despite it
\r
146 @@ -307,25 +283,32 @@ static const char *get_sender(notmuch_message_t *message)
\r
147 * will always appear in the reply if reply_all is true.
\r
149 if (! reply_to_header_is_redundant (message, reply_to))
\r
151 + return internet_address_list_parse_string (reply_to);
\r
154 - return notmuch_message_get_header (message, "from");
\r
155 + return internet_address_list_parse_string (
\r
156 + g_mime_message_get_sender (mime_message));
\r
159 -static const char *get_to(notmuch_message_t *message)
\r
160 +static InternetAddressList *get_to(unused(notmuch_message_t *message),
\r
161 + GMimeMessage *mime_message)
\r
163 - return notmuch_message_get_header (message, "to");
\r
164 + return g_mime_message_get_recipients (mime_message,
\r
165 + GMIME_RECIPIENT_TYPE_TO);
\r
168 -static const char *get_cc(notmuch_message_t *message)
\r
169 +static InternetAddressList *get_cc(unused(notmuch_message_t *message),
\r
170 + GMimeMessage *mime_message)
\r
172 - return notmuch_message_get_header (message, "cc");
\r
173 + return g_mime_message_get_recipients (mime_message,
\r
174 + GMIME_RECIPIENT_TYPE_CC);
\r
177 -static const char *get_bcc(notmuch_message_t *message)
\r
178 +static InternetAddressList *get_bcc(unused(notmuch_message_t *message),
\r
179 + GMimeMessage *mime_message)
\r
181 - return notmuch_message_get_header (message, "bcc");
\r
182 + return g_mime_message_get_recipients (mime_message,
\r
183 + GMIME_RECIPIENT_TYPE_BCC);
\r
186 /* Augment the recipients of 'reply' from the "Reply-to:", "From:",
\r
187 @@ -344,10 +327,12 @@ static const char *
\r
188 add_recipients_from_message (GMimeMessage *reply,
\r
189 notmuch_config_t *config,
\r
190 notmuch_message_t *message,
\r
191 + GMimeMessage *mime_message,
\r
192 notmuch_bool_t reply_all)
\r
195 - const char * (*get_header)(notmuch_message_t *message);
\r
196 + InternetAddressList * (*get_header)(notmuch_message_t *message,
\r
197 + GMimeMessage *mime_message);
\r
198 GMimeRecipientType recipient_type;
\r
199 } reply_to_map[] = {
\r
200 { get_sender, GMIME_RECIPIENT_TYPE_TO },
\r
201 @@ -360,12 +345,12 @@ add_recipients_from_message (GMimeMessage *reply,
\r
202 unsigned int n = 0;
\r
204 for (i = 0; i < ARRAY_SIZE (reply_to_map); i++) {
\r
205 - const char *recipients;
\r
206 + InternetAddressList *recipients;
\r
208 - recipients = reply_to_map[i].get_header (message);
\r
209 + recipients = reply_to_map[i].get_header (message, mime_message);
\r
211 - n += scan_address_string (recipients, config, reply,
\r
212 - reply_to_map[i].recipient_type, &from_addr);
\r
213 + n += scan_address_list (recipients, config, reply,
\r
214 + reply_to_map[i].recipient_type, &from_addr);
\r
216 if (!reply_all && n) {
\r
217 /* Stop adding new recipients in reply-to-sender mode if
\r
218 @@ -536,6 +521,7 @@ static GMimeMessage *
\r
219 create_reply_message(void *ctx,
\r
220 notmuch_config_t *config,
\r
221 notmuch_message_t *message,
\r
222 + GMimeMessage *mime_message,
\r
223 notmuch_bool_t reply_all,
\r
224 notmuch_bool_t limited)
\r
226 @@ -566,8 +552,8 @@ create_reply_message(void *ctx,
\r
228 g_mime_object_set_header (GMIME_OBJECT (reply), "References", references);
\r
230 - from_addr = add_recipients_from_message (reply, config,
\r
231 - message, reply_all);
\r
232 + from_addr = add_recipients_from_message (reply, config, message,
\r
233 + mime_message, reply_all);
\r
235 /* The above is all that is needed for limited headers. */
\r
237 @@ -666,7 +652,8 @@ static int do_reply(notmuch_config_t *config,
\r
238 if (mime_node_open (config, message, ¶ms->crypto, &node))
\r
241 - reply = create_reply_message (config, config, message, reply_all,
\r
242 + reply = create_reply_message (config, config, message,
\r
243 + GMIME_MESSAGE (node->part), reply_all,
\r
244 format == FORMAT_HEADERS_ONLY);
\r