[PATCH v3 05/20] insert: add new message to database
Add the new message to the notmuch database, renaming the file to encode notmuch tags as maildir flags. --- notmuch-insert.c | 49 - 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/notmuch-insert.c b/notmuch-insert.c index c0289d9..498421d 100644 --- a/notmuch-insert.c +++ b/notmuch-insert.c @@ -153,6 +153,44 @@ copy_stdin (int fdin, int fdout) return TRUE; } +/* Add the specified message file to the notmuch database. + * The file is renamed to encode notmuch tags as maildir flags. */ +static notmuch_bool_t +add_file_to_database (notmuch_database_t *notmuch, const char *path) +{ +notmuch_message_t *message; +notmuch_status_t status; + +status = notmuch_database_add_message (notmuch, path, ); +switch (status) { +case NOTMUCH_STATUS_SUCCESS: + break; +case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID: + fprintf (stderr, "Warning: duplicate message.\n"); + break; +default: +case NOTMUCH_STATUS_FILE_NOT_EMAIL: +case NOTMUCH_STATUS_READ_ONLY_DATABASE: +case NOTMUCH_STATUS_XAPIAN_EXCEPTION: +case NOTMUCH_STATUS_OUT_OF_MEMORY: +case NOTMUCH_STATUS_FILE_ERROR: +case NOTMUCH_STATUS_NULL_POINTER: +case NOTMUCH_STATUS_TAG_TOO_LONG: +case NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW: +case NOTMUCH_STATUS_UNBALANCED_ATOMIC: +case NOTMUCH_STATUS_LAST_STATUS: + fprintf (stderr, "Error: failed to add `%s' to notmuch database: %s\n", +path, notmuch_status_to_string (status)); + return FALSE; +} + +notmuch_message_tags_to_maildir_flags (message); + +notmuch_message_destroy (message); + +return TRUE; +} + static notmuch_bool_t insert_message (void *ctx, notmuch_database_t *notmuch, int fdin, const char *dir) @@ -173,8 +211,17 @@ insert_message (void *ctx, notmuch_database_t *notmuch, int fdin, } if (!ret) { unlink (tmppath); + return FALSE; } -return ret; + +ret = add_file_to_database (notmuch, newpath); +if (!ret) { + /* XXX maybe there should be an option to keep the file in maildir? */ + unlink (newpath); + return FALSE; +} + +return TRUE; } int -- 1.7.12.1
[PATCH v3 05/20] insert: add new message to database
Add the new message to the notmuch database, renaming the file to encode notmuch tags as maildir flags. --- notmuch-insert.c | 49 - 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/notmuch-insert.c b/notmuch-insert.c index c0289d9..498421d 100644 --- a/notmuch-insert.c +++ b/notmuch-insert.c @@ -153,6 +153,44 @@ copy_stdin (int fdin, int fdout) return TRUE; } +/* Add the specified message file to the notmuch database. + * The file is renamed to encode notmuch tags as maildir flags. */ +static notmuch_bool_t +add_file_to_database (notmuch_database_t *notmuch, const char *path) +{ +notmuch_message_t *message; +notmuch_status_t status; + +status = notmuch_database_add_message (notmuch, path, message); +switch (status) { +case NOTMUCH_STATUS_SUCCESS: + break; +case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID: + fprintf (stderr, Warning: duplicate message.\n); + break; +default: +case NOTMUCH_STATUS_FILE_NOT_EMAIL: +case NOTMUCH_STATUS_READ_ONLY_DATABASE: +case NOTMUCH_STATUS_XAPIAN_EXCEPTION: +case NOTMUCH_STATUS_OUT_OF_MEMORY: +case NOTMUCH_STATUS_FILE_ERROR: +case NOTMUCH_STATUS_NULL_POINTER: +case NOTMUCH_STATUS_TAG_TOO_LONG: +case NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW: +case NOTMUCH_STATUS_UNBALANCED_ATOMIC: +case NOTMUCH_STATUS_LAST_STATUS: + fprintf (stderr, Error: failed to add `%s' to notmuch database: %s\n, +path, notmuch_status_to_string (status)); + return FALSE; +} + +notmuch_message_tags_to_maildir_flags (message); + +notmuch_message_destroy (message); + +return TRUE; +} + static notmuch_bool_t insert_message (void *ctx, notmuch_database_t *notmuch, int fdin, const char *dir) @@ -173,8 +211,17 @@ insert_message (void *ctx, notmuch_database_t *notmuch, int fdin, } if (!ret) { unlink (tmppath); + return FALSE; } -return ret; + +ret = add_file_to_database (notmuch, newpath); +if (!ret) { + /* XXX maybe there should be an option to keep the file in maildir? */ + unlink (newpath); + return FALSE; +} + +return TRUE; } int -- 1.7.12.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch