diff --git a/lib/mu-msg-part.c b/lib/mu-msg-part.c index fb80d3ea..73b22118 100644 --- a/lib/mu-msg-part.c +++ b/lib/mu-msg-part.c @@ -106,44 +106,54 @@ get_matching_part_index (MuMsg *msg, MuMsgOptions opts, static void -accumulate_text (MuMsg *msg, MuMsgPart *part, GString **gstrp) +accumulate_text_message (MuMsg *msg, MuMsgPart *part, GString **gstrp) { - if (GMIME_IS_MESSAGE(part->data)) { - const gchar *str; - char *adrs; - GMimeMessage *mimemsg; - InternetAddressList *addresses; - /* put sender, recipients and subject in the string, so they - * can be indexed as well */ - mimemsg = GMIME_MESSAGE (part->data); - str = g_mime_message_get_sender (mimemsg); - g_string_append_printf - (*gstrp, "%s%s", str ? str : "", str ? "\n" : ""); - str = g_mime_message_get_subject (mimemsg); - g_string_append_printf - (*gstrp, "%s%s", str ? str : "", str ? "\n" : ""); + const gchar *str; + char *adrs; + GMimeMessage *mimemsg; + InternetAddressList *addresses; + + /* put sender, recipients and subject in the string, so they + * can be indexed as well */ + mimemsg = GMIME_MESSAGE (part->data); + str = g_mime_message_get_sender (mimemsg); + g_string_append_printf + (*gstrp, "%s%s", str ? str : "", str ? "\n" : ""); + str = g_mime_message_get_subject (mimemsg); + g_string_append_printf + (*gstrp, "%s%s", str ? str : "", str ? "\n" : ""); addresses = g_mime_message_get_all_recipients (mimemsg); adrs = internet_address_list_to_string (addresses, FALSE); g_object_unref (addresses); g_string_append_printf (*gstrp, "%s%s", adrs ? adrs : "", adrs ? "\n" : ""); g_free (adrs); - - } else if (GMIME_IS_PART (part->data)) { - GMimeContentType *ctype; - gboolean err; - char *txt; - ctype = g_mime_object_get_content_type ((GMimeObject*)part->data); - if (!g_mime_content_type_is_type (ctype, "text", "plain")) - return; /* not plain text */ - txt = mu_msg_mime_part_to_string - ((GMimePart*)part->data, &err); - if (txt) - g_string_append (*gstrp, txt); - g_free (txt); - } } +static void +accumulate_text_part (MuMsg *msg, MuMsgPart *part, GString **gstrp) +{ + GMimeContentType *ctype; + gboolean err; + char *txt; + ctype = g_mime_object_get_content_type ((GMimeObject*)part->data); + if (!g_mime_content_type_is_type (ctype, "text", "plain")) + return; /* not plain text */ + txt = mu_msg_mime_part_to_string + ((GMimePart*)part->data, &err); + if (txt) + g_string_append (*gstrp, txt); + g_free (txt); +} + +static void +accumulate_text (MuMsg *msg, MuMsgPart *part, GString **gstrp) +{ + if (GMIME_IS_MESSAGE(part->data)) + accumulate_text_message (msg, part, gstrp); + else if (GMIME_IS_PART (part->data)) + accumulate_text_part (msg, part, gstrp); +} char* mu_msg_part_get_text (MuMsg *msg, MuMsgPart *self, MuMsgOptions opts, @@ -273,11 +283,25 @@ get_part_size (GMimePart *part) /* return TRUE; */ /* } */ + + +static void +cleanup_filename (char *fname) +{ + gchar *cur; + + /* remove slashes, spaces, colons... */ + for (cur = fname; *cur; ++cur) + if (*cur == '/' || *cur == ' ' || *cur == ':') + *cur = '-'; +} + + static char* mime_part_get_filename (GMimeObject *mobj, unsigned index, gboolean construct_if_needed) { - gchar *fname, *cur; + gchar *fname; fname = NULL; @@ -304,9 +328,7 @@ mime_part_get_filename (GMimeObject *mobj, unsigned index, fname = g_strdup_printf ("%u.part", index); /* remove slashes, spaces, colons... */ - for (cur = fname; *cur; ++cur) - if (*cur == '/' || *cur == ' ' || *cur == ':') - *cur = '-'; + cleanup_filename (fname); return fname; } diff --git a/lib/mu-msg-sexp.c b/lib/mu-msg-sexp.c index da82d4bf..73fa4b74 100644 --- a/lib/mu-msg-sexp.c +++ b/lib/mu-msg-sexp.c @@ -415,14 +415,14 @@ mu_msg_to_sexp (MuMsg *msg, unsigned docid, const MuMsgIterThreadInfo *ti, g_return_val_if_fail (msg, NULL); g_return_val_if_fail (!((opts & MU_MSG_OPTION_HEADERS_ONLY) && - (opts & MU_MSG_OPTION_EXTRACT_IMAGES)), - NULL); + (opts & MU_MSG_OPTION_EXTRACT_IMAGES)),NULL); gstr = g_string_sized_new ((opts & MU_MSG_OPTION_HEADERS_ONLY) ? 1024 : 8192); - g_string_append (gstr, "(\n"); - if (docid != 0) - g_string_append_printf (gstr, "\t:docid %u\n", docid); + if (docid == 0) + g_string_append (gstr, "(\n"); + else + g_string_append_printf (gstr, "(\n\t:docid %u\n", docid); if (ti) append_sexp_thread_info (gstr, ti); @@ -436,14 +436,12 @@ mu_msg_to_sexp (MuMsg *msg, unsigned docid, const MuMsgIterThreadInfo *ti, t = mu_msg_get_date (msg); /* weird time format for emacs 29-bit ints...*/ - g_string_append_printf (gstr,"\t:date (%u %u 0)\n", (unsigned)(t >> 16), - (unsigned)(t & 0xffff)); - g_string_append_printf (gstr, "\t:size %u\n", + g_string_append_printf (gstr,"\t:date (%u %u 0)\n\t:size %u\n", + (unsigned)(t >> 16), (unsigned)(t & 0xffff), (unsigned)mu_msg_get_size (msg)); append_sexp_attr (gstr, "message-id", mu_msg_get_msgid (msg)); append_sexp_attr (gstr, "path", mu_msg_get_path (msg)); append_sexp_attr (gstr, "maildir", mu_msg_get_maildir (msg)); - g_string_append_printf (gstr, "\t:priority %s\n", mu_msg_prio_name(mu_msg_get_prio(msg))); append_sexp_flags (gstr, msg);