X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=notmuch-reply.c;h=31e2c87cfe07651dec79d7c5fdc3286c0d865e61;hb=394cb1c46d91a1bb28df9cc4a563e1115cc9af34;hp=f26bd5521d278be7bb812684da16bc7d5a413f57;hpb=077b8b2ac6729248d0390bbb3c05ec7bdb60ded2;p=notmuch diff --git a/notmuch-reply.c b/notmuch-reply.c index f26bd552..31e2c87c 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -24,7 +24,7 @@ #include "gmime-filter-reply.h" static void -reply_part(GMimeObject *part, int *part_count) +reply_part (GMimeObject *part, int *part_count) { GMimeContentDisposition *disposition; GMimeContentType *content_type; @@ -182,12 +182,13 @@ notmuch_reply_command (void *ctx, int argc, char *argv[]) char *reply_headers; struct { const char *header; + const char *fallback; GMimeRecipientType recipient_type; } reply_to_map[] = { - { "from", GMIME_RECIPIENT_TYPE_TO }, - { "to", GMIME_RECIPIENT_TYPE_TO }, - { "cc", GMIME_RECIPIENT_TYPE_CC }, - { "bcc", GMIME_RECIPIENT_TYPE_BCC } + { "reply-to", "from", GMIME_RECIPIENT_TYPE_TO }, + { "to", NULL, GMIME_RECIPIENT_TYPE_TO }, + { "cc", NULL, GMIME_RECIPIENT_TYPE_CC }, + { "bcc", NULL, GMIME_RECIPIENT_TYPE_BCC } }; unsigned int i; @@ -195,23 +196,28 @@ notmuch_reply_command (void *ctx, int argc, char *argv[]) if (config == NULL) return 1; - notmuch = notmuch_database_open (notmuch_config_get_database_path (config)); - if (notmuch == NULL) - return 1; - query_string = query_string_from_args (ctx, argc, argv); if (query_string == NULL) { fprintf (stderr, "Out of memory\n"); return 1; } + if (*query_string == '\0') { + fprintf (stderr, "Error: notmuch reply requires at least one search term.\n"); + return 1; + } + + notmuch = notmuch_database_open (notmuch_config_get_database_path (config)); + if (notmuch == NULL) + return 1; + query = notmuch_query_create (notmuch, query_string); if (query == NULL) { fprintf (stderr, "Out of memory\n"); return 1; } - for (messages = notmuch_query_search_messages (query); + for (messages = notmuch_query_search_messages (query, 0, -1); notmuch_messages_has_more (messages); notmuch_messages_advance (messages)) { @@ -235,6 +241,10 @@ notmuch_reply_command (void *ctx, int argc, char *argv[]) recipients = notmuch_message_get_header (message, reply_to_map[i].header); + if ((recipients == NULL || recipients[0] == '\0') && reply_to_map[i].fallback) + recipients = notmuch_message_get_header (message, + reply_to_map[i].fallback); + addr = add_recipients_for_string (reply, config, reply_to_map[i].recipient_type, recipients);