The notmuch insert command should read a message from standard input and deliver it to a Maildir folder, and then incorporate the message into the notmuch database. Essentially it moves the functionality of notmuch-deliver into notmuch. Though it could be used as an alternative to notmuch new, the reason I want this is to allow my notmuch frontend to add postponed or sent messages to the mail store and notmuch database, without resorting to another tool (e.g. notmuch-deliver) nor directly modifying the maildir. --- Makefile.local | 1 + notmuch-client.h | 3 +++ notmuch-insert.c | 43 +++++++++++++++++++++++++++++++++++++++++++ notmuch.c | 3 +++ 4 files changed, 50 insertions(+) create mode 100644 notmuch-insert.c diff --git a/Makefile.local b/Makefile.local index 2b91946..6bbd588 100644 --- a/Makefile.local +++ b/Makefile.local @@ -261,6 +261,7 @@ notmuch_client_srcs = \ notmuch-config.c \ notmuch-count.c \ notmuch-dump.c \ + notmuch-insert.c \ notmuch-new.c \ notmuch-reply.c \ notmuch-restore.c \ diff --git a/notmuch-client.h b/notmuch-client.h index a7c3df2..c0d0e93 100644 --- a/notmuch-client.h +++ b/notmuch-client.h @@ -135,6 +135,9 @@ int notmuch_dump_command (void *ctx, int argc, char *argv[]); int +notmuch_insert_command (void *ctx, int argc, char *argv[]); + +int notmuch_new_command (void *ctx, int argc, char *argv[]); int diff --git a/notmuch-insert.c b/notmuch-insert.c new file mode 100644 index 0000000..21424cf --- /dev/null +++ b/notmuch-insert.c @@ -0,0 +1,43 @@ +/* notmuch - Not much of an email program, (just index and search) + * + * Copyright © 2012 Peter Wang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/ . + * + * Author: Peter Wang <novalazy@gmail.com> + */ + +#include "notmuch-client.h" + +int +notmuch_insert_command (void *ctx, int argc, char *argv[]) +{ + notmuch_config_t *config; + notmuch_database_t *notmuch; + const char *db_path; + + config = notmuch_config_open (ctx, NULL, NULL); + if (config == NULL) + return 1; + + db_path = notmuch_config_get_database_path (config); + + if (notmuch_database_open (notmuch_config_get_database_path (config), + NOTMUCH_DATABASE_MODE_READ_WRITE, ¬much)) + return 1; + + notmuch_database_destroy (notmuch); + + return 1; +} diff --git a/notmuch.c b/notmuch.c index 477a09c..86239fd 100644 --- a/notmuch.c +++ b/notmuch.c @@ -53,6 +53,9 @@ static command_t commands[] = { { "new", notmuch_new_command, "[options...]", "Find and import new messages to the notmuch database." }, + { "insert", notmuch_insert_command, + "[options...] [--] [+<tag>|-<tag> ...] < message", + "Add a new message into the maildir and notmuch database." }, { "search", notmuch_search_command, "[options...] <search-terms> [...]", "Search for messages matching the given search terms." }, -- 1.7.12.1