[PATCH 2/3] cli: Introduce the add command
authorAdam Wolfe Gordon <awg+notmuch@xvx.ca>
Sun, 14 Jul 2013 00:45:45 +0000 (18:45 +1800)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:55:59 +0000 (09:55 -0800)
e5/c3ce7f2fdbba3c82ff65c910810721ae9bbf79 [new file with mode: 0644]

diff --git a/e5/c3ce7f2fdbba3c82ff65c910810721ae9bbf79 b/e5/c3ce7f2fdbba3c82ff65c910810721ae9bbf79
new file mode 100644 (file)
index 0000000..84cbbed
--- /dev/null
@@ -0,0 +1,152 @@
+Return-Path: <awg@lagos.xvx.ca>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 13563431FC2\r
+       for <notmuch@notmuchmail.org>; Sat, 13 Jul 2013 17:55:29 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5\r
+       tests=[RCVD_IN_DNSWL_NONE=-0.0001] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id XgI9yu5KBwMj for <notmuch@notmuchmail.org>;\r
+       Sat, 13 Jul 2013 17:55:23 -0700 (PDT)\r
+X-Greylist: delayed 569 seconds by postgrey-1.32 at olra;\r
+       Sat, 13 Jul 2013 17:55:23 PDT\r
+Received: from smtp-out-01.shaw.ca (smtp-out-01.shaw.ca [64.59.136.137])\r
+       by olra.theworths.org (Postfix) with ESMTP id 22909431FBD\r
+       for <notmuch@notmuchmail.org>; Sat, 13 Jul 2013 17:55:23 -0700 (PDT)\r
+X-Cloudmark-SP-Filtered: true\r
+X-Cloudmark-SP-Result: v=1.1 cv=GLqYwptGXHjY6tPk5kWRtHXJM/YfZPTWiIs1znw4zms=\r
+       c=1 sm=1\r
+       a=rp4hpZfak4kA:10 a=BLceEmwcHowA:10 a=gumk1giGF0obp6xRQyl7Yg==:17\r
+       a=CxbBOAgXj7yANbSEhssA:9 a=Wdz57yXjOC6DuMvi:21 a=0pJnlCBgKrPFDJOa:21\r
+       a=HpAAvcLHHh0Zw7uRqdWCyQ==:117\r
+Received: from unknown (HELO lagos.xvx.ca) ([68.150.39.45])\r
+       by smtp-out-01.shaw.ca with ESMTP; 13 Jul 2013 18:46:04 -0600\r
+Received: by lagos.xvx.ca (Postfix, from userid 1000)\r
+       id 57CD58009323; Sat, 13 Jul 2013 18:46:04 -0600 (MDT)\r
+From: Adam Wolfe Gordon <awg+notmuch@xvx.ca>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH 2/3] cli: Introduce the add command\r
+Date: Sat, 13 Jul 2013 18:45:45 -0600\r
+Message-Id: <1373762746-22308-3-git-send-email-awg+notmuch@xvx.ca>\r
+X-Mailer: git-send-email 1.7.9.5\r
+In-Reply-To: <1373762746-22308-1-git-send-email-awg+notmuch@xvx.ca>\r
+References: <1373762746-22308-1-git-send-email-awg+notmuch@xvx.ca>\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sun, 14 Jul 2013 00:55:29 -0000\r
+\r
+Introduce a new add command, which works the same as insert, except\r
+that it is for adding files that already exist in the maildir. This\r
+provides an alternative to notmuch new for situations where the user\r
+knows what has changed. For example, if the user uses inotify to check\r
+for new files in the maildir, the new files can be indexed using\r
+notmuch add, avoiding the need to scan the whole maildir.\r
+---\r
+ notmuch-client.h |    3 +++\r
+ notmuch-insert.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++\r
+ notmuch.c        |    2 ++\r
+ 3 files changed, 54 insertions(+)\r
+\r
+diff --git a/notmuch-client.h b/notmuch-client.h\r
+index da332f3..09d7e5c 100644\r
+--- a/notmuch-client.h\r
++++ b/notmuch-client.h\r
+@@ -183,6 +183,9 @@ int\r
+ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[]);\r
\r
+ int\r
++notmuch_add_command (notmuch_config_t *config, int argc, char *argv[]);\r
++\r
++int\r
+ notmuch_reply_command (notmuch_config_t *config, int argc, char *argv[]);\r
\r
+ int\r
+diff --git a/notmuch-insert.c b/notmuch-insert.c\r
+index d32a535..c141450 100644\r
+--- a/notmuch-insert.c\r
++++ b/notmuch-insert.c\r
+@@ -479,3 +479,52 @@ notmuch_insert_command (notmuch_config_t *config, int argc, char *argv[])\r
\r
+     return (ret) ? 0 : 1;\r
+ }\r
++\r
++int\r
++notmuch_add_command (notmuch_config_t *config, int argc, char *argv[])\r
++{\r
++    notmuch_database_t *notmuch;\r
++    const char *db_path;\r
++    const char **new_tags;\r
++    size_t new_tags_length;\r
++    tag_op_list_t *tag_ops;\r
++    const char *filename = NULL;\r
++    unsigned int i;\r
++    notmuch_bool_t ret;\r
++\r
++    if (argc != 2) {\r
++      fprintf (stderr, "Error: no filename given.\n");\r
++      return 1;\r
++    }\r
++    filename = argv[1];\r
++\r
++    db_path = notmuch_config_get_database_path (config);\r
++    new_tags = notmuch_config_get_new_tags (config, &new_tags_length);\r
++\r
++    tag_ops = tag_op_list_create (config);\r
++    if (tag_ops == NULL) {\r
++      fprintf (stderr, "Out of memory.\n");\r
++      return 1;\r
++    }\r
++    for (i = 0; i < new_tags_length; i++) {\r
++      if (tag_op_list_append (tag_ops, new_tags[i], FALSE))\r
++          return 1;\r
++    }\r
++\r
++    /* Check that the message given on the commandline is in the maildir. */\r
++    if (strncmp (filename, db_path, strlen(db_path)) != 0) {\r
++      fprintf(stderr, "Error: file %s is not in maildir %s.\n", filename,\r
++              db_path);\r
++      return 1;\r
++    }\r
++\r
++    if (notmuch_database_open (notmuch_config_get_database_path (config),\r
++                             NOTMUCH_DATABASE_MODE_READ_WRITE, &notmuch))\r
++      return 1;\r
++\r
++    ret = add_file_to_database (notmuch, filename, tag_ops);\r
++\r
++    notmuch_database_destroy (notmuch);\r
++\r
++    return (ret) ? 0 : 1;\r
++}\r
+diff --git a/notmuch.c b/notmuch.c\r
+index 78d29a8..b61149d 100644\r
+--- a/notmuch.c\r
++++ b/notmuch.c\r
+@@ -46,6 +46,8 @@ static command_t commands[] = {\r
+       "Find and import new messages to the notmuch database." },\r
+     { "insert", notmuch_insert_command, FALSE,\r
+       "Add a new message into the maildir and notmuch database." },\r
++    { "add", notmuch_add_command, FALSE,\r
++      "Add a message from the maildir into the notmuch database." },\r
+     { "search", notmuch_search_command, FALSE,\r
+       "Search for messages matching the given search terms." },\r
+     { "show", notmuch_show_command, FALSE,\r
+-- \r
+1.7.9.5\r
+\r