1 Return-Path: <novalazy@gmail.com>
\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 2DFAC429E4A
\r
6 for <notmuch@notmuchmail.org>; Fri, 30 Mar 2012 16:16:35 -0700 (PDT)
\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
\r
11 X-Spam-Status: No, score=-0.799 tagged_above=-999 required=5
\r
12 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,
\r
13 FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled
\r
14 Received: from olra.theworths.org ([127.0.0.1])
\r
15 by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
\r
16 with ESMTP id m2oqf-w3jTLl for <notmuch@notmuchmail.org>;
\r
17 Fri, 30 Mar 2012 16:16:34 -0700 (PDT)
\r
18 Received: from mail-pz0-f45.google.com (mail-pz0-f45.google.com
\r
19 [209.85.210.45]) (using TLSv1 with cipher RC4-SHA (128/128 bits))
\r
20 (No client certificate requested)
\r
21 by olra.theworths.org (Postfix) with ESMTPS id DCE90429E3F
\r
22 for <notmuch@notmuchmail.org>; Fri, 30 Mar 2012 16:16:33 -0700 (PDT)
\r
23 Received: by mail-pz0-f45.google.com with SMTP id x6so56814dac.18
\r
24 for <notmuch@notmuchmail.org>; Fri, 30 Mar 2012 16:16:33 -0700 (PDT)
\r
25 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
\r
26 h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
\r
27 bh=EIW4MgoXQ8IckMFDn4dVnDcVIEoWDj+jt7Brxzk8OS0=;
\r
28 b=P0fn9c2JAhaf/iM/V8tw2C3Oyt3rcPkKue0vW1jYd8fpOnZ+sKU0BqHvShLAdg/9XF
\r
29 PZtG3hE6iBLALhVBh1hdkq6fT3JCGZOAaw2qsOoiLjxtgxWKXSUXpr4MvaNG9EgZrQ4E
\r
30 Cr5gRV9KPVESE5453Z9RdBPMl1+1ns1wrFK+fxY0UEmsFX/nbjnqSLeSU7bl+sF/6ReL
\r
31 2E4owureGmaWL5RsLSlIPYw2/4TIDKmUrkOd7FofZ8RFoqkypC9W31I9WHSNe4MI2SeW
\r
32 1as64+N87B1rRs3QKEIuzKBQhccBT6xPv9xRyG6Zu1AOzjEZc/rjg5AS9vLvX5NLA+6h
\r
34 Received: by 10.68.218.72 with SMTP id pe8mr1856727pbc.45.1333149393649;
\r
35 Fri, 30 Mar 2012 16:16:33 -0700 (PDT)
\r
36 Received: from localhost (215.42.233.220.static.exetel.com.au.
\r
38 by mx.google.com with ESMTPS id ko12sm8309130pbb.52.2012.03.30.16.16.30
\r
39 (version=TLSv1/SSLv3 cipher=OTHER);
\r
40 Fri, 30 Mar 2012 16:16:31 -0700 (PDT)
\r
41 From: Peter Wang <novalazy@gmail.com>
\r
42 To: notmuch@notmuchmail.org
\r
43 Subject: [PATCH v2 4/5] config: Add 'config list' command
\r
44 Date: Sat, 31 Mar 2012 10:15:49 +1100
\r
45 Message-Id: <1333149350-22616-5-git-send-email-novalazy@gmail.com>
\r
46 X-Mailer: git-send-email 1.7.4.4
\r
47 In-Reply-To: <1333149350-22616-1-git-send-email-novalazy@gmail.com>
\r
48 References: <1332282698-7951-1-git-send-email-novalazy@gmail.com>
\r
49 <1333149350-22616-1-git-send-email-novalazy@gmail.com>
\r
50 X-BeenThere: notmuch@notmuchmail.org
\r
51 X-Mailman-Version: 2.1.13
\r
53 List-Id: "Use and development of the notmuch mail system."
\r
54 <notmuch.notmuchmail.org>
\r
55 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
\r
56 <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
\r
57 List-Archive: <http://notmuchmail.org/pipermail/notmuch>
\r
58 List-Post: <mailto:notmuch@notmuchmail.org>
\r
59 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
\r
60 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
\r
61 <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
\r
62 X-List-Received-Date: Fri, 30 Mar 2012 23:16:35 -0000
\r
64 Add a command to list all configuration items with their associated
\r
67 One use is as follows: a MUA may prefer to store data in a central
\r
68 notmuch configuration file so that the data is accessible across
\r
69 different machines, e.g. an addressbook. The list command helps
\r
70 to implement features such as tab completion on the keys.
\r
72 notmuch-config.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++---
\r
74 2 files changed, 62 insertions(+), 5 deletions(-)
\r
76 diff --git a/notmuch-config.c b/notmuch-config.c
\r
77 index 85fc774..d5540ac 100644
\r
78 --- a/notmuch-config.c
\r
79 +++ b/notmuch-config.c
\r
80 @@ -799,20 +799,78 @@ notmuch_config_command_set (void *ctx, char *item, int argc, char *argv[])
\r
85 +notmuch_config_command_list (void *ctx)
\r
87 + notmuch_config_t *config;
\r
89 + size_t g, groups_length;
\r
91 + config = notmuch_config_open (ctx, NULL, NULL);
\r
92 + if (config == NULL)
\r
95 + groups = g_key_file_get_groups (config->key_file, &groups_length);
\r
96 + if (groups == NULL)
\r
99 + for (g = 0; g < groups_length; g++) {
\r
101 + size_t k, keys_length;
\r
103 + keys = g_key_file_get_keys (config->key_file,
\r
104 + groups[g], &keys_length, NULL);
\r
105 + if (keys == NULL)
\r
108 + for (k = 0; k < keys_length; k++) {
\r
111 + value = g_key_file_get_string (config->key_file,
\r
112 + groups[g], keys[k], NULL);
\r
113 + if (value != NULL) {
\r
114 + printf ("%s.%s=%s\n", groups[g], keys[k], value);
\r
119 + g_strfreev (keys);
\r
122 + g_strfreev (groups);
\r
124 + notmuch_config_close (config);
\r
130 notmuch_config_command (void *ctx, int argc, char *argv[])
\r
132 argc--; argv++; /* skip subcommand argument */
\r
135 - fprintf (stderr, "Error: notmuch config requires at least two arguments.\n");
\r
137 + fprintf (stderr, "Error: notmuch config requires at least one argument.\n");
\r
141 - if (strcmp (argv[0], "get") == 0)
\r
142 + if (strcmp (argv[0], "get") == 0) {
\r
144 + fprintf (stderr, "Error: notmuch config get requires at least "
\r
145 + "two arguments.\n");
\r
148 return notmuch_config_command_get (ctx, argv[1]);
\r
149 - else if (strcmp (argv[0], "set") == 0)
\r
150 + } else if (strcmp (argv[0], "set") == 0) {
\r
152 + fprintf (stderr, "Error: notmuch config set requires at least "
\r
153 + "two arguments.\n");
\r
156 return notmuch_config_command_set (ctx, argv[1], argc - 2, argv + 2);
\r
157 + } else if (strcmp (argv[0], "list") == 0) {
\r
158 + return notmuch_config_command_list (ctx);
\r
161 fprintf (stderr, "Unrecognized argument for notmuch config: %s\n",
\r
163 diff --git a/test/config b/test/config
\r
164 index 73c58ff..93e3a04 100755
\r
167 @@ -18,7 +18,6 @@ test_expect_success "Set list value" \
\r
168 'notmuch config set foo.list xxx "yyy yyy" "zzz zzz"'
\r
170 test_begin_subtest "List all items"
\r
171 -test_subtest_known_broken
\r
172 notmuch config set database.path "/canonical/path"
\r
173 output=$(notmuch config list)
\r
174 test_expect_equal "$output" "\
\r