Re: [PATCH v4 16/16] add "notmuch reindex" subcommand
[notmuch-archives.git] / 98 / 6d4965b40f99785db5f159d880d549468df4d6
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 olra.theworths.org (Postfix) with ESMTP id 30CF7431FD4\r
6         for <notmuch@notmuchmail.org>; Sat,  6 Sep 2014 05:53:47 -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 4GOAfJbDYRaz for <notmuch@notmuchmail.org>;\r
16         Sat,  6 Sep 2014 05:53:42 -0700 (PDT)\r
17 Received: from mail-we0-f176.google.com (mail-we0-f176.google.com\r
18         [74.125.82.176]) (using TLSv1 with cipher RC4-SHA (128/128 bits))\r
19         (No client certificate requested)\r
20         by olra.theworths.org (Postfix) with ESMTPS id 45838431FBD\r
21         for <notmuch@notmuchmail.org>; Sat,  6 Sep 2014 05:53:37 -0700 (PDT)\r
22 Received: by mail-we0-f176.google.com with SMTP id q58so400898wes.35\r
23         for <notmuch@notmuchmail.org>; Sat, 06 Sep 2014 05:53:36 -0700 (PDT)\r
24 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r
25         d=1e100.net; s=20130820;\r
26         h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\r
27         :references;\r
28         bh=9ndb9lXkF7ZULHumz3/uuafOK/wzUqo8XmzYh6voiGU=;\r
29         b=RmzkDhUg31FRGjvyGL364VgGVsi1VizgMTYGBNFP9AhK2/FSxA6ubKRuIOdHRqf/DI\r
30         EYnX37XEI6shbUsEqN+KUy/bXfpZCtKJLpWipRaKH4wiR/WsuvBnsbGihpgc4rvR7iW3\r
31         L2YU3FJog6pQlbIY0PaHsTy21EeLkuKKHtE73dJcPzuMJXgTKjgeEQw+A5b35ajizY6L\r
32         rShkEkhR3d+tt3wXn/EH/82iXNqrBX2pPLYlcl/CJUZzjLUsuwKmP9YXtngHgkwHJZQN\r
33         4ietNRxl328/ejoW51FjRNHniQ3GJp/GOWw4NkbMF9EIRJWu4nLMToy7P2U7vO6FlaoW\r
34         b7Aw==\r
35 X-Gm-Message-State:\r
36  ALoCoQkroxMaoYQYoSPYYKpqv1G0fvKV1pZTgAYULJ0wiL+86gdS8XQoNt59Dpe7UxFHOqudDT1M\r
37 X-Received: by 10.180.12.195 with SMTP id a3mr9872923wic.30.1410008016149;\r
38         Sat, 06 Sep 2014 05:53:36 -0700 (PDT)\r
39 Received: from localhost (dsl-hkibrasgw2-58c374-75.dhcp.inet.fi.\r
40         [88.195.116.75])\r
41         by mx.google.com with ESMTPSA id wx3sm4484199wjc.19.2014.09.06.05.53.35\r
42         for <multiple recipients>\r
43         (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\r
44         Sat, 06 Sep 2014 05:53:35 -0700 (PDT)\r
45 From: Jani Nikula <jani@nikula.org>\r
46 To: notmuch@notmuchmail.org\r
47 Subject: [PATCH 3/3] cli: deduplicate addresses for --output=address-*\r
48 Date: Sat,  6 Sep 2014 15:53:30 +0300\r
49 Message-Id: <1410008010-3770-3-git-send-email-jani@nikula.org>\r
50 X-Mailer: git-send-email 2.1.0\r
51 In-Reply-To: <1410008010-3770-1-git-send-email-jani@nikula.org>\r
52 References: <1410008010-3770-1-git-send-email-jani@nikula.org>\r
53 X-BeenThere: notmuch@notmuchmail.org\r
54 X-Mailman-Version: 2.1.13\r
55 Precedence: list\r
56 List-Id: "Use and development of the notmuch mail system."\r
57         <notmuch.notmuchmail.org>\r
58 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
59         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
60 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
61 List-Post: <mailto:notmuch@notmuchmail.org>\r
62 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
63 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
64         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
65 X-List-Received-Date: Sat, 06 Sep 2014 12:53:47 -0000\r
66 \r
67 ---\r
68  notmuch-search.c | 32 ++++++++++++++++++++++++++------\r
69  1 file changed, 26 insertions(+), 6 deletions(-)\r
70 \r
71 diff --git a/notmuch-search.c b/notmuch-search.c\r
72 index c84ecc31262c..c3ca3246bceb 100644\r
73 --- a/notmuch-search.c\r
74 +++ b/notmuch-search.c\r
75 @@ -218,7 +218,8 @@ do_search_threads (sprinter_t *format,\r
76  }\r
77  \r
78  static void\r
79 -print_address_list (sprinter_t *format, InternetAddressList *list)\r
80 +print_address_list (sprinter_t *format, GHashTable *addrs,\r
81 +                   InternetAddressList *list)\r
82  {\r
83      InternetAddress *address;\r
84      int i;\r
85 @@ -234,7 +235,7 @@ print_address_list (sprinter_t *format, InternetAddressList *list)\r
86             if (group_list == NULL)\r
87                 continue;\r
88  \r
89 -           print_address_list (format, group_list);\r
90 +           print_address_list (format, addrs, group_list);\r
91         } else {\r
92             InternetAddressMailbox *mailbox;\r
93             const char *name;\r
94 @@ -246,6 +247,11 @@ print_address_list (sprinter_t *format, InternetAddressList *list)\r
95             name = internet_address_get_name (address);\r
96             addr = internet_address_mailbox_get_addr (mailbox);\r
97  \r
98 +           if (g_hash_table_lookup_extended (addrs, addr, NULL, NULL))\r
99 +               continue;\r
100 +\r
101 +           g_hash_table_insert (addrs, talloc_strdup (NULL, addr), NULL);\r
102 +\r
103             if (name && *name)\r
104                 full_address = talloc_asprintf (NULL, "%s <%s>", name, addr);\r
105             else\r
106 @@ -263,7 +269,7 @@ print_address_list (sprinter_t *format, InternetAddressList *list)\r
107  }\r
108  \r
109  static void\r
110 -print_address_string (sprinter_t *format, const char *recipients)\r
111 +print_address_string (sprinter_t *format, GHashTable *addrs, const char *recipients)\r
112  {\r
113      InternetAddressList *list;\r
114  \r
115 @@ -274,7 +280,13 @@ print_address_string (sprinter_t *format, const char *recipients)\r
116      if (list == NULL)\r
117         return;\r
118  \r
119 -    print_address_list (format, list);\r
120 +    print_address_list (format, addrs, list);\r
121 +}\r
122 +\r
123 +static void\r
124 +_my_talloc_free_for_g_hash (void *ptr)\r
125 +{\r
126 +    talloc_free (ptr);\r
127  }\r
128  \r
129  static int\r
130 @@ -288,8 +300,13 @@ do_search_messages (sprinter_t *format,\r
131      notmuch_message_t *message;\r
132      notmuch_messages_t *messages;\r
133      notmuch_filenames_t *filenames;\r
134 +    GHashTable *addresses = NULL;\r
135      int i;\r
136  \r
137 +    if (output & OUTPUT_ADDRESS_ALL)\r
138 +       addresses = g_hash_table_new_full (g_str_hash, g_str_equal,\r
139 +                                      _my_talloc_free_for_g_hash, NULL);\r
140 +\r
141      if (offset < 0) {\r
142         offset += notmuch_query_count_messages (query);\r
143         if (offset < 0)\r
144 @@ -341,7 +358,7 @@ do_search_messages (sprinter_t *format,\r
145                 if (addrs == NULL || *addrs == '\0')\r
146                     addrs = notmuch_message_get_header (message, "from");\r
147  \r
148 -               print_address_string (format, addrs);\r
149 +               print_address_string (format, addresses, addrs);\r
150             }\r
151  \r
152             if (output & OUTPUT_ADDRESS_TO) {\r
153 @@ -351,7 +368,7 @@ do_search_messages (sprinter_t *format,\r
154  \r
155                 for (j = 0; j < ARRAY_SIZE (hdrs); j++) {\r
156                     addrs = notmuch_message_get_header (message, hdrs[j]);\r
157 -                   print_address_string (format, addrs);\r
158 +                   print_address_string (format, addresses, addrs);\r
159                 }\r
160             }\r
161         }\r
162 @@ -359,6 +376,9 @@ do_search_messages (sprinter_t *format,\r
163         notmuch_message_destroy (message);\r
164      }\r
165  \r
166 +    if (addresses)\r
167 +       g_hash_table_unref (addresses);\r
168 +\r
169      notmuch_messages_destroy (messages);\r
170  \r
171      format->end (format);\r
172 -- \r
173 2.1.0\r
174 \r