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 ED5BB431FC3
\r
6 for <notmuch@notmuchmail.org>; Thu, 5 Apr 2012 18:49:07 -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 uE5vyxEK7V9K for <notmuch@notmuchmail.org>;
\r
17 Thu, 5 Apr 2012 18:49:06 -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 6FF01431E62
\r
22 for <notmuch@notmuchmail.org>; Thu, 5 Apr 2012 18:49:05 -0700 (PDT)
\r
23 Received: by mail-pz0-f45.google.com with SMTP id x6so2370746dac.18
\r
24 for <notmuch@notmuchmail.org>; Thu, 05 Apr 2012 18:49:05 -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=JfORQm0dQoSxEaeXH7/y0O1LTFyl+9AlWjWl8wVzjvI=;
\r
28 b=GCPyNli3stC+CCo0HYQA7P1Y+1ksIAWaN4wrs8uh51InlJFyVTyiUnRBKpgRIzO4an
\r
29 7yOtygSpUbIwAUV9FMvgk8S7P428Y51pYiQ/gN9VipGDFF9jVmfrowfn3WdrtFhYJIJd
\r
30 g2q1eDxuAJqik/B6fjn5ZwSClciSjZE39iSuBeohHje0/9lZKTKDkX8gYyX+NWVGfYsC
\r
31 q2LHM15gDd+8dPfEBjp/QC1P6M8SAbjCBK9oNXOADwYzfPVlZkZG1/8ueyjgk4Rmwwkx
\r
32 78PoBmA+/Ynru4whjfunDhWZ3OR3LURRotRY1YhMjPrtHAn4OHBjz7jDH085oLAZt/QK
\r
34 Received: by 10.68.225.39 with SMTP id rh7mr11317627pbc.104.1333676945133;
\r
35 Thu, 05 Apr 2012 18:49:05 -0700 (PDT)
\r
36 Received: from localhost (215.42.233.220.static.exetel.com.au.
\r
38 by mx.google.com with ESMTPS id z1sm4783917pbc.38.2012.04.05.18.49.01
\r
39 (version=TLSv1/SSLv3 cipher=OTHER);
\r
40 Thu, 05 Apr 2012 18:49:03 -0700 (PDT)
\r
41 From: Peter Wang <novalazy@gmail.com>
\r
42 To: notmuch@notmuchmail.org
\r
43 Subject: [PATCH v3 4/5] config: Add 'config list' command
\r
44 Date: Fri, 6 Apr 2012 11:48:05 +1000
\r
45 Message-Id: <1333676886-9835-5-git-send-email-novalazy@gmail.com>
\r
46 X-Mailer: git-send-email 1.7.4.4
\r
47 In-Reply-To: <1333676886-9835-1-git-send-email-novalazy@gmail.com>
\r
48 References: <1332282698-7951-1-git-send-email-novalazy@gmail.com>
\r
49 <1333676886-9835-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, 06 Apr 2012 01:49:08 -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 cce2abc..0fbc79b 100755
\r
167 @@ -23,7 +23,6 @@ yyy yyy
\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