X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-reply.c;h=65bd356403e210c76b000a6aa6b632d298f81d78;hp=e4de4743ec1a03227242da8f99cd50861c93ad44;hb=3493ea0ed5bd20b961aafa01eeddaf8cbc49b52f;hpb=f52528a344aee5111f6356f50678dfd54d5d80f6 diff --git a/notmuch-reply.c b/notmuch-reply.c index e4de4743..65bd3564 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -23,12 +23,33 @@ #include "notmuch-client.h" #include "gmime-filter-reply.h" +static void +reply_part_content (GMimeObject *part) +{ + GMimeStream *stream_stdout = NULL, *stream_filter = NULL; + GMimeDataWrapper *wrapper; + + stream_stdout = g_mime_stream_file_new (stdout); + if (stream_stdout) { + g_mime_stream_file_set_owner (GMIME_STREAM_FILE (stream_stdout), FALSE); + stream_filter = g_mime_stream_filter_new(stream_stdout); + } + g_mime_stream_filter_add(GMIME_STREAM_FILTER(stream_filter), + g_mime_filter_reply_new(TRUE)); + wrapper = g_mime_part_get_content_object (GMIME_PART (part)); + if (wrapper && stream_filter) + g_mime_data_wrapper_write_to_stream (wrapper, stream_filter); + if (stream_filter) + g_object_unref(stream_filter); + if (stream_stdout) + g_object_unref(stream_stdout); +} + static void reply_part (GMimeObject *part, int *part_count) { GMimeContentDisposition *disposition; GMimeContentType *content_type; - GMimeDataWrapper *wrapper; (void) part_count; disposition = g_mime_object_get_content_disposition (part); @@ -38,8 +59,17 @@ reply_part (GMimeObject *part, int *part_count) const char *filename = g_mime_part_get_filename (GMIME_PART (part)); content_type = g_mime_object_get_content_type (GMIME_OBJECT (part)); - printf ("Attachment: %s (%s)\n", filename, - g_mime_content_type_to_string (content_type)); + if (g_mime_content_type_is_type (content_type, "text", "*") && + !g_mime_content_type_is_type (content_type, "text", "html")) + { + reply_part_content (part); + } + else + { + printf ("Attachment: %s (%s)\n", filename, + g_mime_content_type_to_string (content_type)); + } + return; } @@ -48,21 +78,7 @@ reply_part (GMimeObject *part, int *part_count) if (g_mime_content_type_is_type (content_type, "text", "*") && !g_mime_content_type_is_type (content_type, "text", "html")) { - GMimeStream *stream_stdout = NULL, *stream_filter = NULL; - stream_stdout = g_mime_stream_file_new (stdout); - if (stream_stdout) { - g_mime_stream_file_set_owner (GMIME_STREAM_FILE (stream_stdout), FALSE); - stream_filter = g_mime_stream_filter_new(stream_stdout); - } - g_mime_stream_filter_add(GMIME_STREAM_FILTER(stream_filter), - g_mime_filter_reply_new(TRUE)); - wrapper = g_mime_part_get_content_object (GMIME_PART (part)); - if (wrapper && stream_filter) - g_mime_data_wrapper_write_to_stream (wrapper, stream_filter); - if (stream_filter) - g_object_unref(stream_filter); - if (stream_stdout) - g_object_unref(stream_stdout); + reply_part_content (part); } else { @@ -81,12 +97,12 @@ address_is_users (const char *address, notmuch_config_t *config) size_t i, other_len; primary = notmuch_config_get_user_primary_email (config); - if (strcmp (primary, address) == 0) + if (strcasecmp (primary, address) == 0) return 1; other = notmuch_config_get_user_other_email (config, &other_len); for (i = 0; i < other_len; i++) - if (strcmp (other[i], address) == 0) + if (strcasecmp (other[i], address) == 0) return 1; return 0; @@ -207,7 +223,8 @@ notmuch_reply_command (void *ctx, int argc, char *argv[]) return 1; } - notmuch = notmuch_database_open (notmuch_config_get_database_path (config)); + notmuch = notmuch_database_open (notmuch_config_get_database_path (config), + NOTMUCH_DATABASE_MODE_READ_ONLY); if (notmuch == NULL) return 1; @@ -217,7 +234,7 @@ notmuch_reply_command (void *ctx, int argc, char *argv[]) return 1; } - for (messages = notmuch_query_search_messages (query, 0, -1); + for (messages = notmuch_query_search_messages (query); notmuch_messages_has_more (messages); notmuch_messages_advance (messages)) {