Re: [PATCH] emacs: address completion, allow sender/recipient and filters
[notmuch-archives.git] / 6c / 8ce142c9258f273b3b6784123c11850556545d
1 Return-Path: <amthrax@drake.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 943E1429E26\r
6         for <notmuch@notmuchmail.org>; Fri,  9 Dec 2011 11:54:46 -0800 (PST)\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 IOcCxpdO5OXU for <notmuch@notmuchmail.org>;\r
16         Fri,  9 Dec 2011 11:54:44 -0800 (PST)\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 4F95E429E33\r
20         for <notmuch@notmuchmail.org>; Fri,  9 Dec 2011 11:54:41 -0800 (PST)\r
21 X-AuditID: 1209190c-b7f806d0000008d6-ea-4ee26781a8db\r
22 Received: from mailhub-auth-2.mit.edu ( [18.7.62.36])\r
23         by dmz-mailsec-scanner-1.mit.edu (Symantec Messaging Gateway) with SMTP\r
24         id 4C.F6.02262.18762EE4; Fri,  9 Dec 2011 14:54:41 -0500 (EST)\r
25 Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103])\r
26         by mailhub-auth-2.mit.edu (8.13.8/8.9.2) with ESMTP id pB9Jsexe029553; \r
27         Fri, 9 Dec 2011 14:54:40 -0500\r
28 Received: from drake.mit.edu (26-4-166.dynamic.csail.mit.edu [18.26.4.166])\r
29         (authenticated bits=0)\r
30         (User authenticated as amdragon@ATHENA.MIT.EDU)\r
31         by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id pB9Jsdfv013160\r
32         (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);\r
33         Fri, 9 Dec 2011 14:54:40 -0500 (EST)\r
34 Received: from amthrax by drake.mit.edu with local (Exim 4.76)\r
35         (envelope-from <amthrax@drake.mit.edu>)\r
36         id 1RZ6Wl-00015X-47; Fri, 09 Dec 2011 14:54:39 -0500\r
37 From: Austin Clements <amdragon@MIT.EDU>\r
38 To: notmuch@notmuchmail.org\r
39 Subject: [PATCH 3/4] Utility function to seek in MIME trees in depth-first\r
40         order.\r
41 Date: Fri,  9 Dec 2011 14:54:27 -0500\r
42 Message-Id: <1323460468-4030-4-git-send-email-amdragon@mit.edu>\r
43 X-Mailer: git-send-email 1.7.7.3\r
44 In-Reply-To: <1323460468-4030-1-git-send-email-amdragon@mit.edu>\r
45 References: <1323027100-10307-1-git-send-email-amdragon@mit.edu>\r
46         <1323460468-4030-1-git-send-email-amdragon@mit.edu>\r
47 X-Brightmail-Tracker:\r
48  H4sIAAAAAAAAA+NgFtrHIsWRmVeSWpSXmKPExsUixG6notuY/sjPYPFLNovrN2cyOzB6PFt1\r
49         izmAMYrLJiU1J7MstUjfLoEr48iXrUwFu3grPlxdyNbAeIGri5GTQ0LAROLQl/3MELaYxIV7\r
50         69lAbCGBfYwSW7eUdzFyAdnrGSUWTbjOCOEcY5K49HwaO4Qzn1Fi/bHlYC1sAhoS2/YvZwSx\r
51         RQSkJXbenc3axcjBwSygJvGnSwUkLCwQKPF9zismEJtFQFXi+LTb7CA2r4C9xLHLO9khrlCQ\r
52         OLf6HJjNKeAg8e3VF3aIi8okbnZ+Z5/AyL+AkWEVo2xKbpVubmJmTnFqsm5xcmJeXmqRrqFe\r
53         bmaJXmpK6SZGUNBwSvLsYHxzUOkQowAHoxIPr6fXIz8h1sSy4srcQ4ySHExKoryv04BCfEn5\r
54         KZUZicUZ8UWlOanFhxglOJiVRHhV5IFyvCmJlVWpRfkwKWkOFiVx3updD/2EBNITS1KzU1ML\r
55         UotgsjIcHEoSvD9AhgoWpaanVqRl5pQgpJk4OEGG8wAND40EGV5ckJhbnJkOkT/FqMuxs+PA\r
56         GUYhlrz8vFQpcd6zIIMEQIoySvPg5sCi/RWjONBbwrxKIKN4gIkCbtIroCVMQEu+ZD8AWVKS\r
57         iJCSamAsObSw9MvP9Z+/5rfxt547mxh3809kir6OWdaFXvFvp77adSi4s2euz05amWo8+5dg\r
58         uarTfx+vO5wqMc16yiIeb09ovlu6aufn73wNU6x5V/D3yFrzSHdVW26MVls+bf+8uDUb9h3k\r
59         Yf2mdyDO1cD19pFS1aufLJ8/rJmzPkms6/vZIDddlddKLMUZiYZazEXFiQCpnK+t0QIAAA==\r
60 X-BeenThere: notmuch@notmuchmail.org\r
61 X-Mailman-Version: 2.1.13\r
62 Precedence: list\r
63 List-Id: "Use and development of the notmuch mail system."\r
64         <notmuch.notmuchmail.org>\r
65 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
66         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
67 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
68 List-Post: <mailto:notmuch@notmuchmail.org>\r
69 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
70 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
71         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
72 X-List-Received-Date: Fri, 09 Dec 2011 19:54:47 -0000\r
73 \r
74 This function matches how we number parts for the --part argument to\r
75 show.  It will allow us to jump directly to the desired part, rather\r
76 than traversing the entire tree and carefully tracking whether or not\r
77 we're "in the zone".\r
78 ---\r
79  mime-node.c      |   25 +++++++++++++++++++++++++\r
80  notmuch-client.h |    5 +++++\r
81  2 files changed, 30 insertions(+), 0 deletions(-)\r
82 \r
83 diff --git a/mime-node.c b/mime-node.c\r
84 index a8e4a59..207818e 100644\r
85 --- a/mime-node.c\r
86 +++ b/mime-node.c\r
87 @@ -232,3 +232,28 @@ mime_node_child (const mime_node_t *parent, int child)\r
88                         g_type_name (G_OBJECT_TYPE (parent->part)));\r
89      }\r
90  }\r
91 +\r
92 +static mime_node_t *\r
93 +_mime_node_seek_dfs_walk (mime_node_t *node, int *n)\r
94 +{\r
95 +    mime_node_t *ret = NULL;\r
96 +    int i;\r
97 +\r
98 +    if (*n <= 0)\r
99 +       return node;\r
100 +\r
101 +    *n = *n - 1;\r
102 +    for (i = 0; i < node->children && !ret; i++) {\r
103 +       mime_node_t *child = mime_node_child (node, i);\r
104 +       ret = _mime_node_seek_dfs_walk (child, n);\r
105 +       if (!ret)\r
106 +           talloc_free (child);\r
107 +    }\r
108 +    return ret;\r
109 +}\r
110 +\r
111 +mime_node_t *\r
112 +mime_node_seek_dfs (mime_node_t *node, int n)\r
113 +{\r
114 +    return _mime_node_seek_dfs_walk (node, &n);\r
115 +}\r
116 diff --git a/notmuch-client.h b/notmuch-client.h\r
117 index fce1187..f215d4b 100644\r
118 --- a/notmuch-client.h\r
119 +++ b/notmuch-client.h\r
120 @@ -318,5 +318,10 @@ mime_node_open (const void *ctx, notmuch_message_t *message,\r
121  mime_node_t *\r
122  mime_node_child (const mime_node_t *parent, int child);\r
123  \r
124 +/* Return the nth child of node in a depth-first traversal.  If n is\r
125 + * 0, returns node itself.  Returns NULL if there is no such part. */\r
126 +mime_node_t *\r
127 +mime_node_seek_dfs (mime_node_t *node, int n);\r
128 +\r
129  #include "command-line-arguments.h"\r
130  #endif\r
131 -- \r
132 1.7.7.3\r
133 \r