Re: [PATCH] emacs: wash: make word-wrap bound message width
[notmuch-archives.git] / 87 / 98592b9cc4f2d4d5eea0e2bd0436e133dab4b9
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
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -0.799\r
10 X-Spam-Level: \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
33         D4VQ==\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
37         [220.233.42.215])\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
52 Precedence: list\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
63 \r
64 Add a command to list all configuration items with their associated\r
65 values.\r
66 \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
71 ---\r
72  notmuch-config.c |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++---\r
73  test/config      |    1 -\r
74  2 files changed, 62 insertions(+), 5 deletions(-)\r
75 \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
81      return ret;\r
82  }\r
83  \r
84 +static int\r
85 +notmuch_config_command_list (void *ctx)\r
86 +{\r
87 +    notmuch_config_t *config;\r
88 +    char **groups;\r
89 +    size_t g, groups_length;\r
90 +\r
91 +    config = notmuch_config_open (ctx, NULL, NULL);\r
92 +    if (config == NULL)\r
93 +       return 1;\r
94 +\r
95 +    groups = g_key_file_get_groups (config->key_file, &groups_length);\r
96 +    if (groups == NULL)\r
97 +       return 1;\r
98 +\r
99 +    for (g = 0; g < groups_length; g++) {\r
100 +       char **keys;\r
101 +       size_t k, keys_length;\r
102 +\r
103 +       keys = g_key_file_get_keys (config->key_file,\r
104 +                                   groups[g], &keys_length, NULL);\r
105 +       if (keys == NULL)\r
106 +           continue;\r
107 +\r
108 +       for (k = 0; k < keys_length; k++) {\r
109 +           char *value;\r
110 +\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
115 +               free (value);\r
116 +           }\r
117 +       }\r
118 +\r
119 +       g_strfreev (keys);\r
120 +    }\r
121 +\r
122 +    g_strfreev (groups);\r
123 +\r
124 +    notmuch_config_close (config);\r
125 +\r
126 +    return 0;\r
127 +}\r
128 +\r
129  int\r
130  notmuch_config_command (void *ctx, int argc, char *argv[])\r
131  {\r
132      argc--; argv++; /* skip subcommand argument */\r
133  \r
134 -    if (argc < 2) {\r
135 -       fprintf (stderr, "Error: notmuch config requires at least two arguments.\n");\r
136 +    if (argc < 1) {\r
137 +       fprintf (stderr, "Error: notmuch config requires at least one argument.\n");\r
138         return 1;\r
139      }\r
140  \r
141 -    if (strcmp (argv[0], "get") == 0)\r
142 +    if (strcmp (argv[0], "get") == 0) {\r
143 +       if (argc < 2) {\r
144 +           fprintf (stderr, "Error: notmuch config get requires at least "\r
145 +                    "two arguments.\n");\r
146 +           return 1;\r
147 +       }\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
151 +       if (argc < 2) {\r
152 +           fprintf (stderr, "Error: notmuch config set requires at least "\r
153 +                    "two arguments.\n");\r
154 +           return 1;\r
155 +       }\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
159 +    }\r
160  \r
161      fprintf (stderr, "Unrecognized argument for notmuch config: %s\n",\r
162              argv[0]);\r
163 diff --git a/test/config b/test/config\r
164 index 73c58ff..93e3a04 100755\r
165 --- a/test/config\r
166 +++ b/test/config\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
169  \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
175 -- \r
176 1.7.4.4\r
177 \r