[PATCH] WIP: remove all non-prefixed-terms (and stemmed versions)
[notmuch-archives.git] / 0a / 75840581cdd776ec1f243fe53dd5590259fc62
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
9 X-Spam-Flag: NO\r
10 X-Spam-Score: -0.568\r
11 X-Spam-Level: \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
34  +sVw==\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
45  MKrA==\r
46 X-Gm-Message-State:\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
51  [188.238.78.81])\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
60  header funcs\r
61 Date: Sun, 19 Jun 2016 23:15:31 +0300\r
62 Message-Id:\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
72 Precedence: list\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
83 \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
87 \r
88 Get rid of an intermediate function.\r
89 \r
90 The small annoyance is the ownership differences in the address lists.\r
91 ---\r
92  notmuch-reply.c | 73 ++++++++++++++++++++++++---------------------------------\r
93  1 file changed, 30 insertions(+), 43 deletions(-)\r
94 \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
100      return n;\r
101  }\r
102  \r
103 -/* Scan addresses in 'recipients'.\r
104 - *\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
108 - */\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
115 -{\r
116 -    InternetAddressList *list;\r
117 -\r
118 -    if (recipients == NULL)\r
119 -       return 0;\r
120 -\r
121 -    list = internet_address_list_parse_string (recipients);\r
122 -    if (list == NULL)\r
123 -       return 0;\r
124 -\r
125 -    return scan_address_list (list, config, message, type, user_from);\r
126 -}\r
127 -\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
130   */\r
131 @@ -287,11 +262,12 @@ reply_to_header_is_redundant (notmuch_message_t *message, const char *reply_to)\r
132      return 0;\r
133  }\r
134  \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
138  {\r
139      const char *reply_to;\r
140  \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
144          /*\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
148          */\r
149         if (! reply_to_header_is_redundant (message, reply_to))\r
150 -           return reply_to;\r
151 +           return internet_address_list_parse_string (reply_to);\r
152      }\r
153  \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
157  }\r
158  \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
162  {\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
166  }\r
167  \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
171  {\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
175  }\r
176  \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
180  {\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
184  }\r
185  \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
193  {\r
194      struct {\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
203  \r
204      for (i = 0; i < ARRAY_SIZE (reply_to_map); i++) {\r
205 -       const char *recipients;\r
206 +       InternetAddressList *recipients;\r
207  \r
208 -       recipients = reply_to_map[i].get_header (message);\r
209 +       recipients = reply_to_map[i].get_header (message, mime_message);\r
210  \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
215  \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
225  {\r
226 @@ -566,8 +552,8 @@ create_reply_message(void *ctx,\r
227  \r
228      g_mime_object_set_header (GMIME_OBJECT (reply), "References", references);\r
229  \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
234  \r
235      /* The above is all that is needed for limited headers. */\r
236      if (limited)\r
237 @@ -666,7 +652,8 @@ static int do_reply(notmuch_config_t *config,\r
238         if (mime_node_open (config, message, &params->crypto, &node))\r
239             return 1;\r
240  \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
245         if (!reply)\r
246             return 1;\r
247 -- \r
248 2.1.4\r
249 \r