Reply all - issue
[notmuch-archives.git] / b6 / d4a5d98e43d532093832a4eb6ef210ae4ddb5e
1 Return-Path: <bremner@tethera.net>\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 67967431FC3\r
6         for <notmuch@notmuchmail.org>; Wed, 26 Dec 2012 11:36:57 -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\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
12         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 REOtWhsLxg02 for <notmuch@notmuchmail.org>;\r
16         Wed, 26 Dec 2012 11:36:56 -0800 (PST)\r
17 Received: from tesseract.cs.unb.ca (tesseract.cs.unb.ca [131.202.240.238])\r
18         (using TLSv1 with cipher AES256-SHA (256/256 bits))\r
19         (No client certificate requested)\r
20         by olra.theworths.org (Postfix) with ESMTPS id 4E95F431FAF\r
21         for <notmuch@notmuchmail.org>; Wed, 26 Dec 2012 11:36:56 -0800 (PST)\r
22 Received: from fctnnbsc30w-156034082078.dhcp-dynamic.fibreop.nb.bellaliant.net\r
23         ([156.34.82.78] helo=zancas.localnet)\r
24         by tesseract.cs.unb.ca with esmtpsa\r
25         (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72)\r
26         (envelope-from <bremner@tethera.net>)\r
27         id 1Tnwmd-0002oq-Co; Wed, 26 Dec 2012 15:36:55 -0400\r
28 Received: from bremner by zancas.localnet with local (Exim 4.80)\r
29         (envelope-from <bremner@tethera.net>)\r
30         id 1TnwmX-0005eQ-Ri; Wed, 26 Dec 2012 15:36:49 -0400\r
31 From: david@tethera.net\r
32 To: notmuch@notmuchmail.org\r
33 Subject: [PATCH 2/2] notmuch-restore: handle empty input file,\r
34         leading blank lines and comments.\r
35 Date: Wed, 26 Dec 2012 15:36:33 -0400\r
36 Message-Id: <1356550593-21683-2-git-send-email-david@tethera.net>\r
37 X-Mailer: git-send-email 1.7.10.4\r
38 In-Reply-To: <1356550593-21683-1-git-send-email-david@tethera.net>\r
39 References: <1356550593-21683-1-git-send-email-david@tethera.net>\r
40 X-Spam_bar: -\r
41 Cc: David Bremner <bremner@debian.org>\r
42 X-BeenThere: notmuch@notmuchmail.org\r
43 X-Mailman-Version: 2.1.13\r
44 Precedence: list\r
45 List-Id: "Use and development of the notmuch mail system."\r
46         <notmuch.notmuchmail.org>\r
47 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
48         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
49 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
50 List-Post: <mailto:notmuch@notmuchmail.org>\r
51 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
52 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
53         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
54 X-List-Received-Date: Wed, 26 Dec 2012 19:36:57 -0000\r
55 \r
56 From: David Bremner <bremner@debian.org>\r
57 \r
58 This patch corrects several undesirable behaviours:\r
59 \r
60 1) Empty files were not detected, leading to buffer read overrun.\r
61 \r
62 2) An initial blank line cause restore to silently abort\r
63 \r
64 3) Initial comment line caused format detection to fail\r
65 ---\r
66  notmuch-restore.c |   17 ++++++++++++-----\r
67  test/dump-restore |    3 ---\r
68  2 files changed, 12 insertions(+), 8 deletions(-)\r
69 \r
70 diff --git a/notmuch-restore.c b/notmuch-restore.c\r
71 index 9ed9b51..c93f1ac 100644\r
72 --- a/notmuch-restore.c\r
73 +++ b/notmuch-restore.c\r
74 @@ -180,11 +180,6 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])\r
75                  argv[opt_index]);\r
76         return 1;\r
77      }\r
78 -    char *p;\r
79 -\r
80 -    line_len = getline (&line, &line_size, input);\r
81 -    if (line_len == 0)\r
82 -       return 0;\r
83  \r
84      tag_ops = tag_op_list_create (ctx);\r
85      if (tag_ops == NULL) {\r
86 @@ -192,6 +187,18 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])\r
87         return 1;\r
88      }\r
89  \r
90 +    do {\r
91 +       line_len = getline (&line, &line_size, input);\r
92 +\r
93 +       /* empty input file not considered an error */\r
94 +       if (line_len < 0)\r
95 +           return 0;\r
96 +\r
97 +    } while ((line_len == 0) ||\r
98 +            (line[0] == '#') ||\r
99 +            (strspn (line, " \t\n") == strlen (line)));\r
100 +\r
101 +    char *p;\r
102      for (p = line; (input_format == DUMP_FORMAT_AUTO) && *p; p++) {\r
103         if (*p == '(')\r
104             input_format = DUMP_FORMAT_SUP;\r
105 diff --git a/test/dump-restore b/test/dump-restore\r
106 index c2ddb92..ae30cd1 100755\r
107 --- a/test/dump-restore\r
108 +++ b/test/dump-restore\r
109 @@ -146,13 +146,11 @@ cat <<EOF > comments-and-blanks\r
110  EOF\r
111  \r
112  test_begin_subtest 'restoring empty file is not an error'\r
113 -test_subtest_known_broken\r
114  notmuch restore < /dev/null 2>OUTPUT.$test_count\r
115  cp /dev/null EXPECTED\r
116  test_expect_equal_file EXPECTED OUTPUT.$test_count\r
117  \r
118  test_begin_subtest 'file of comments and blank lines is not an error'\r
119 -test_subtest_known_broken\r
120  notmuch restore --input=comments-and-blanks\r
121  ret_val=$?\r
122  test_expect_equal "$ret_val" "0"\r
123 @@ -172,7 +170,6 @@ echo "yun1vjwegii.fsf@aiko.keithp.com (another_tag)" \\r
124      >> leading-comments-blanks-sup\r
125  \r
126  test_begin_subtest 'detect format=sup with leading comments and blanks'\r
127 -test_subtest_known_broken\r
128  notmuch restore --input=leading-comments-blanks-sup\r
129  notmuch search --output=tags id:yun1vjwegii.fsf@aiko.keithp.com > OUTPUT.$test_count\r
130  echo "another_tag" > EXPECTED\r
131 -- \r
132 1.7.10.4\r
133 \r