Merge branch 'pr-1111'

Fix a bunch of conflicts, tests.
This commit is contained in:
djcb
2018-08-18 10:29:40 +03:00
9 changed files with 147 additions and 323 deletions

View File

@ -160,7 +160,7 @@ init_mime_msg (MuMsgFile *self, const char* path, GError **err)
return FALSE;
}
self->_mime_msg = g_mime_parser_construct_message (parser);
self->_mime_msg = g_mime_parser_construct_message (parser, NULL);
g_object_unref (parser);
if (!self->_mime_msg) {
g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_GMIME,
@ -172,15 +172,15 @@ init_mime_msg (MuMsgFile *self, const char* path, GError **err)
}
static char*
get_recipient (MuMsgFile *self, GMimeRecipientType rtype)
get_recipient (MuMsgFile *self, GMimeAddressType atype)
{
char *recip;
InternetAddressList *recips;
recips = g_mime_message_get_recipients (self->_mime_msg, rtype);
recips = g_mime_message_get_addresses (self->_mime_msg, atype);
/* FALSE --> don't encode */
recip = (char*)internet_address_list_to_string (recips, FALSE);
recip = (char*)internet_address_list_to_string (recips, NULL, FALSE);
if (recip && !g_utf8_validate (recip, -1, NULL)) {
g_debug ("invalid recipient in %s\n", self->_path);
@ -236,7 +236,7 @@ get_mailing_list (MuMsgFile *self)
if (mu_str_is_empty (hdr))
return get_fake_mailing_list_maybe (self);
dechdr = g_mime_utils_header_decode_phrase (hdr);
dechdr = g_mime_utils_header_decode_phrase (NULL, hdr);
if (!dechdr)
return NULL;
@ -496,7 +496,7 @@ mu_msg_mime_part_to_string (GMimePart *part, gboolean *err)
*err = TRUE; /* guilty until proven innocent */
g_return_val_if_fail (GMIME_IS_PART(part), NULL);
wrapper = g_mime_part_get_content_object (part);
wrapper = g_mime_part_get_content (part);
if (!wrapper) {
/* this happens with invalid mails */
g_debug ("failed to create data wrapper");
@ -553,20 +553,21 @@ get_references (MuMsgFile *self)
for (msgids = NULL, u = 0; headers[u]; ++u) {
char *str;
const GMimeReferences *cur;
GMimeReferences *mime_refs;
int i, refs_len;
str = mu_msg_file_get_header (self, headers[u]);
if (!str)
continue;
mime_refs = g_mime_references_decode (str);
mime_refs = g_mime_references_parse (NULL, str);
g_free (str);
for (cur = mime_refs; cur;
cur = g_mime_references_get_next(cur)) {
refs_len = g_mime_references_length (mime_refs);
for (i = 0; i < refs_len; ++i) {
const char* msgid;
msgid = g_mime_references_get_message_id (cur);
msgid = g_mime_references_get_message_id (mime_refs, i);
/* don't include duplicates */
if (msgid && !contains (msgids, msgid))
/* explicitly ensure it's utf8-safe,
@ -646,13 +647,14 @@ cleanup_maybe (const char *str, gboolean *do_free)
G_GNUC_CONST static GMimeRecipientType
recipient_type (MuMsgFieldId mfid)
G_GNUC_CONST static GMimeAddressType
address_type (MuMsgFieldId mfid)
{
switch (mfid) {
case MU_MSG_FIELD_ID_BCC: return GMIME_RECIPIENT_TYPE_BCC;
case MU_MSG_FIELD_ID_CC : return GMIME_RECIPIENT_TYPE_CC;
case MU_MSG_FIELD_ID_TO : return GMIME_RECIPIENT_TYPE_TO;
case MU_MSG_FIELD_ID_BCC : return GMIME_ADDRESS_TYPE_BCC;
case MU_MSG_FIELD_ID_CC : return GMIME_ADDRESS_TYPE_CC;
case MU_MSG_FIELD_ID_TO : return GMIME_ADDRESS_TYPE_TO;
case MU_MSG_FIELD_ID_FROM: return GMIME_ADDRESS_TYPE_FROM;
default: g_return_val_if_reached (-1);
}
}
@ -686,12 +688,10 @@ mu_msg_file_get_str_field (MuMsgFile *self, MuMsgFieldId mfid,
case MU_MSG_FIELD_ID_BCC:
case MU_MSG_FIELD_ID_CC:
case MU_MSG_FIELD_ID_TO: *do_free = TRUE;
return get_recipient (self, recipient_type(mfid));
case MU_MSG_FIELD_ID_FROM:
return (char*)cleanup_maybe
(g_mime_message_get_sender (self->_mime_msg), do_free);
case MU_MSG_FIELD_ID_TO:
*do_free = TRUE;
return get_recipient (self, address_type(mfid));
case MU_MSG_FIELD_ID_PATH: return self->_path;
@ -743,9 +743,9 @@ mu_msg_file_get_num_field (MuMsgFile *self, const MuMsgFieldId mfid)
switch (mfid) {
case MU_MSG_FIELD_ID_DATE: {
time_t t;
g_mime_message_get_date (self->_mime_msg, &t, NULL);
return (time_t)t;
GDateTime *dt;
dt = g_mime_message_get_date (self->_mime_msg);
return dt ? g_date_time_to_unix (dt) : 0;
}
case MU_MSG_FIELD_ID_FLAGS: