[balsa/wip/gmime3: 1/197] Initial commit for gmime3 branch
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gmime3: 1/197] Initial commit for gmime3 branch
- Date: Wed, 23 May 2018 21:12:26 +0000 (UTC)
commit 46076fb4f3044d4a5d556d9b76a9b4f82fe8a4ac
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Thu Jun 22 20:53:31 2017 -0400
Initial commit for gmime3 branch
configure.ac | 4 +-
libbalsa/abook-completion.c | 2 +-
libbalsa/address-view.c | 16 +++--
libbalsa/address.c | 4 +-
libbalsa/body.c | 25 ++++---
libbalsa/filter.c | 6 +-
libbalsa/gmime-application-pkcs7.c | 24 ++----
libbalsa/gmime-multipart-crypt.c | 33 +++++----
libbalsa/gmime-part-rfc2440.c | 16 ++--
libbalsa/identity.c | 2 +-
libbalsa/imap/imap-handle.c | 10 +++
libbalsa/libbalsa.c | 12 +---
libbalsa/mailbox.c | 3 +-
libbalsa/mailbox_imap.c | 24 +++----
libbalsa/mailbox_local.c | 10 ++--
libbalsa/mailbox_maildir.c | 4 +-
libbalsa/mailbox_mbox.c | 31 ++++----
libbalsa/mailbox_mh.c | 3 +-
libbalsa/message.c | 135 +++++++++++++++++++++---------------
libbalsa/misc.c | 18 +++++-
libbalsa/misc.h | 3 +
libbalsa/rfc3156.c | 2 +-
libbalsa/send.c | 97 +++++++++++---------------
src/ab-main.c | 3 +-
src/balsa-message.c | 16 ++--
src/balsa-mime-widget-message.c | 11 ++--
src/balsa-mime-widget-vcalendar.c | 5 +-
src/balsa-print-object-header.c | 2 +-
src/message-window.c | 2 +-
src/print-gtk.c | 2 +-
src/sendmsg-window.c | 36 +++++-----
src/store-address.c | 2 +-
32 files changed, 294 insertions(+), 269 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index c1cc703..370e3ff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -276,7 +276,7 @@ LIBS="$LIBS -lz"
PKG_CHECK_MODULES(BALSA, [
glib-2.0 >= 2.40.0
gtk+-3.0 >= 3.10.0
-gmime-2.6
+gmime-3.0
gio-2.0
gthread-2.0
gnutls
@@ -286,7 +286,7 @@ $gnome_extras
PKG_CHECK_MODULES(BALSA_AB, [
glib-2.0
gtk+-3.0
- gmime-2.6
+ gmime-3.0
$gnome_extras
])
diff --git a/libbalsa/abook-completion.c b/libbalsa/abook-completion.c
index 3b975cf..7a207ec 100644
--- a/libbalsa/abook-completion.c
+++ b/libbalsa/abook-completion.c
@@ -52,7 +52,7 @@ completion_data_new(InternetAddress * ia, const gchar * nick_name)
string = g_string_new(nick_name);
if (string->len > 0)
g_string_append_c(string, ' ');
- address_string = internet_address_to_string(ia, FALSE);
+ address_string = internet_address_to_string(ia, NULL, FALSE);
/* Remove '"' and '<'. */
for (p = q = address_string; *p; p++)
if (*p != '"' && *p != '<')
diff --git a/libbalsa/address-view.c b/libbalsa/address-view.c
index aa86553..2415c12 100644
--- a/libbalsa/address-view.c
+++ b/libbalsa/address-view.c
@@ -39,7 +39,7 @@
*/
#include "address-book.h"
#include "cell-renderer-button.h"
-#include "misc.h"
+#include "libbalsa.h"
struct _LibBalsaAddressView {
GtkTreeView parent;
@@ -223,7 +223,7 @@ lbav_append_addresses(LibBalsaAddressView * address_view,
for (; match; match = match->next) {
InternetAddress *ia = match->data;
- name = internet_address_to_string(ia, FALSE);
+ name = internet_address_to_string(ia, NULL, FALSE);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, COMPLETION_NAME_COL, name, -1);
g_free(name);
@@ -400,7 +400,7 @@ lbav_add_from_list(LibBalsaAddressView * address_view,
for (i = 0; i < internet_address_list_length(list); i++) {
InternetAddress *ia = internet_address_list_get_address(list, i);
- gchar *name = internet_address_to_string(ia, FALSE);
+ gchar *name = internet_address_to_string(ia, NULL, FALSE);
libbalsa_utf8_sanitize(&name, address_view->fallback, NULL);
lbav_clean_text(name);
@@ -427,7 +427,7 @@ static gboolean
lbav_add_from_string(LibBalsaAddressView * address_view,
GtkTreeIter * iter, const gchar * string)
{
- InternetAddressList *list = internet_address_list_parse_string(string);
+ InternetAddressList *list = internet_address_list_parse(libbalsa_parser_options(), string);
gboolean retval = FALSE;
if (list) {
@@ -771,7 +771,7 @@ lbav_focus_out_cb(GtkEntry * entry, GdkEventFocus * event,
if (!match->next) {
gchar *the_addr =
internet_address_to_string((InternetAddress *) match->
- data, FALSE);
+ data, NULL, FALSE);
g_signal_handlers_block_by_func(entry,
lbav_entry_changed_cb,
@@ -1275,8 +1275,10 @@ libbalsa_address_view_get_list(LibBalsaAddressView * address_view,
ADDRESS_NAME_COL, &name, -1);
if (this_type == type) {
- InternetAddressList *tmp_list =
- internet_address_list_parse_string(name);
+ InternetAddressList *tmp_list = NULL;
+
+ if (name != NULL)
+ tmp_list = internet_address_list_parse(libbalsa_parser_options(), name);
if (tmp_list) {
internet_address_list_append(address_list, tmp_list);
g_object_unref(tmp_list);
diff --git a/libbalsa/address.c b/libbalsa/address.c
index 0e85aab..58ac01b 100644
--- a/libbalsa/address.c
+++ b/libbalsa/address.c
@@ -553,7 +553,7 @@ rfc2822_mailbox(const gchar * full_name, const gchar * address)
gchar *new_str;
ia = internet_address_mailbox_new(full_name, address);
- new_str = internet_address_to_string(ia, FALSE);
+ new_str = internet_address_to_string(ia, NULL, FALSE);
g_object_unref(ia);
return new_str;
@@ -573,7 +573,7 @@ rfc2822_group(const gchar *full_name, GList *addr_list)
internet_address_group_add_member(INTERNET_ADDRESS_GROUP(ia), member);
g_object_unref(member);
}
- res = internet_address_to_string(ia, FALSE);
+ res = internet_address_to_string(ia, NULL, FALSE);
g_object_unref(ia);
return res;
diff --git a/libbalsa/body.c b/libbalsa/body.c
index 6b2bdbc..5e8cfc5 100644
--- a/libbalsa/body.c
+++ b/libbalsa/body.c
@@ -105,7 +105,6 @@ libbalsa_message_body_extract_embedded_headers(GMimeMessage* msg)
{
LibBalsaMessageHeaders *ehdr;
const char *subj;
- int offset;
ehdr = g_new0(LibBalsaMessageHeaders, 1);
@@ -114,12 +113,16 @@ libbalsa_message_body_extract_embedded_headers(GMimeMessage* msg)
subj = g_mime_message_get_subject(msg);
if (subj) {
- ehdr->subject =
- g_mime_utils_header_decode_text(subj);
+ ehdr->subject = g_mime_utils_header_decode_text(libbalsa_parser_options(), subj);
libbalsa_utf8_sanitize(&ehdr->subject, TRUE, NULL);
} else
ehdr->subject = g_strdup(_("(No subject)"));
- g_mime_message_get_date(msg, &ehdr->date, &offset);
+ {
+ GDateTime *datetime;
+
+ datetime = g_mime_message_get_date(msg);
+ ehdr->date = g_date_time_to_unix(datetime);
+ }
return ehdr;
}
@@ -166,7 +169,7 @@ libbalsa_message_body_set_types(LibBalsaMessageBody * body)
else body->body_type = LIBBALSA_MESSAGE_BODY_TYPE_OTHER;
g_free(body->content_type);
- body->content_type = g_mime_content_type_to_string(type);
+ body->content_type = g_mime_content_type_get_mime_type(type);
}
static LibBalsaMessageBody **
@@ -232,7 +235,7 @@ libbalsa_message_body_set_text_rfc822headers(LibBalsaMessageBody *body)
g_mime_stream_reset(headers);
parser = g_mime_parser_new_with_stream(headers);
g_object_unref(headers);
- dummy_msg = g_mime_parser_construct_message(parser);
+ dummy_msg = g_mime_parser_construct_message(parser, libbalsa_parser_options());
g_object_unref(parser);
body->embhdrs = libbalsa_message_body_extract_embedded_headers(dummy_msg);
@@ -307,7 +310,7 @@ libbalsa_message_body_get_parameter(LibBalsaMessageBody * body,
type = g_mime_object_get_content_type(body->mime_part);
res = g_strdup(g_mime_content_type_get_parameter(type, param));
} else if (body->content_type) {
- type = g_mime_content_type_new_from_string(body->content_type);
+ type = g_mime_content_type_parse(libbalsa_parser_options(), body->content_type);
res = g_strdup(g_mime_content_type_get_parameter(type, param));
g_object_unref(type);
}
@@ -485,7 +488,7 @@ libbalsa_message_body_get_part_stream(LibBalsaMessageBody * body,
gchar *mime_type = NULL;
const gchar *charset;
- wrapper = g_mime_part_get_content_object(GMIME_PART(body->mime_part));
+ wrapper = g_mime_part_get_content(GMIME_PART(body->mime_part));
if (!wrapper) {
/* part is incomplete. */
g_set_error(err, LIBBALSA_MAILBOX_ERROR,
@@ -560,7 +563,7 @@ libbalsa_message_body_get_message_part_stream(LibBalsaMessageBody * body,
stream = g_mime_stream_mem_new();
libbalsa_mailbox_lock_store(body->message->mailbox);
bytes_written =
- g_mime_object_write_to_stream(GMIME_OBJECT(msg), stream);
+ g_mime_object_write_to_stream(GMIME_OBJECT(msg), NULL, stream);
libbalsa_mailbox_unlock_store(body->message->mailbox);
printf("Written %ld bytes of embedded message\n",
(long) bytes_written);
@@ -726,7 +729,7 @@ libbalsa_message_body_save_stream(LibBalsaMessageBody * body,
g_mime_stream_reset(stream);
if (filter_crlf) {
- GMimeFilter *filter = g_mime_filter_crlf_new(FALSE, FALSE);
+ GMimeFilter *filter = g_mime_filter_dos2unix_new(FALSE);
stream =
libbalsa_message_body_stream_add_filter(stream, filter);
}
@@ -735,7 +738,7 @@ libbalsa_message_body_save_stream(LibBalsaMessageBody * body,
g_object_unref(stream);
} else
/* body->mime_part is neither a GMimePart nor a GMimeMessagePart. */
- len = g_mime_object_write_to_stream(body->mime_part, dest);
+ len = g_mime_object_write_to_stream(body->mime_part, NULL, dest);
libbalsa_mailbox_unlock_store(body->message->mailbox);
g_object_unref(dest);
diff --git a/libbalsa/filter.c b/libbalsa/filter.c
index 51e48d7..45d8d25 100644
--- a/libbalsa/filter.c
+++ b/libbalsa/filter.c
@@ -132,7 +132,7 @@ libbalsa_condition_matches(LibBalsaCondition* cond,
&& message->headers->to_list) {
str =
internet_address_list_to_string(message->headers->to_list,
- FALSE);
+ NULL, FALSE);
match=libbalsa_utf8_strstr(str,cond->match.string.string);
g_free(str);
if(match) break;
@@ -141,7 +141,7 @@ libbalsa_condition_matches(LibBalsaCondition* cond,
&& message->headers->from) {
str =
internet_address_list_to_string(message->headers->from,
- FALSE);
+ NULL, FALSE);
match=libbalsa_utf8_strstr(str,cond->match.string.string);
g_free(str);
if (match) break;
@@ -157,7 +157,7 @@ libbalsa_condition_matches(LibBalsaCondition* cond,
&& message->headers->cc_list) {
str =
internet_address_list_to_string(message->headers->cc_list,
- FALSE);
+ NULL, FALSE);
match=libbalsa_utf8_strstr(str,cond->match.string.string);
g_free(str);
if (match) break;
diff --git a/libbalsa/gmime-application-pkcs7.c b/libbalsa/gmime-application-pkcs7.c
index e3b76cc..6d38130 100644
--- a/libbalsa/gmime-application-pkcs7.c
+++ b/libbalsa/gmime-application-pkcs7.c
@@ -23,16 +23,8 @@
#include <string.h>
-#include <gmime/gmime-stream-filter.h>
-#include <gmime/gmime-filter-crlf.h>
-#include <gmime/gmime-filter-from.h>
-#include <gmime/gmime-filter-basic.h>
-#include <gmime/gmime-stream-mem.h>
-#include <gmime/gmime-parser.h>
-#include <gmime/gmime-message-part.h>
-#include <gmime/gmime-multipart.h>
-#include <gmime/gmime-multipart-signed.h>
-#include <gmime/gmime-multipart-encrypted.h>
+#include <gmime/gmime.h>
+#include "libbalsa.h"
#include "libbalsa-gpgme.h"
#include "gmime-application-pkcs7.h"
#include <glib/gi18n.h>
@@ -74,7 +66,7 @@ g_mime_application_pkcs7_decrypt_verify(GMimePart * pkcs7,
}
/* get the ciphertext stream */
- wrapper = g_mime_part_get_content_object(GMIME_PART(pkcs7));
+ wrapper = g_mime_part_get_content(GMIME_PART(pkcs7));
g_return_val_if_fail(wrapper, NULL); /* Incomplete part. */
ciphertext = g_mime_stream_mem_new();
g_mime_data_wrapper_write_to_stream(wrapper, ciphertext);
@@ -82,7 +74,7 @@ g_mime_application_pkcs7_decrypt_verify(GMimePart * pkcs7,
stream = g_mime_stream_mem_new();
filtered_stream = g_mime_stream_filter_new(stream);
- crlf_filter = g_mime_filter_crlf_new(FALSE, FALSE);
+ crlf_filter = g_mime_filter_dos2unix_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered_stream),
crlf_filter);
g_object_unref(crlf_filter);
@@ -113,7 +105,7 @@ g_mime_application_pkcs7_decrypt_verify(GMimePart * pkcs7,
g_mime_parser_init_with_stream(parser, stream);
g_object_unref(stream);
- decrypted = g_mime_parser_construct_part(parser);
+ decrypted = g_mime_parser_construct_part(parser, libbalsa_parser_options());
g_object_unref(parser);
if (decrypted)
@@ -150,12 +142,12 @@ g_mime_application_pkcs7_encrypt(GMimePart * pkcs7, GMimeObject * content,
stream = g_mime_stream_mem_new();
filtered_stream = g_mime_stream_filter_new(stream);
- crlf_filter = g_mime_filter_crlf_new(TRUE, FALSE);
+ crlf_filter = g_mime_filter_unix2dos_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered_stream),
crlf_filter);
g_object_unref(crlf_filter);
- g_mime_object_write_to_stream(content, filtered_stream);
+ g_mime_object_write_to_stream(content, NULL, filtered_stream);
g_mime_stream_flush(filtered_stream);
g_object_unref(filtered_stream);
@@ -179,7 +171,7 @@ g_mime_application_pkcs7_encrypt(GMimePart * pkcs7, GMimeObject * content,
wrapper = g_mime_data_wrapper_new();
g_mime_data_wrapper_set_stream(wrapper, ciphertext);
g_object_unref(ciphertext);
- g_mime_part_set_content_object(GMIME_PART(pkcs7), wrapper);
+ g_mime_part_set_content(GMIME_PART(pkcs7), wrapper);
g_mime_part_set_filename(GMIME_PART(pkcs7), "smime.p7m");
g_mime_part_set_content_encoding(GMIME_PART(pkcs7),
GMIME_CONTENT_ENCODING_BASE64);
diff --git a/libbalsa/gmime-multipart-crypt.c b/libbalsa/gmime-multipart-crypt.c
index 2820da2..a8900e9 100644
--- a/libbalsa/gmime-multipart-crypt.c
+++ b/libbalsa/gmime-multipart-crypt.c
@@ -34,6 +34,7 @@
#include <gtk/gtk.h>
#include "libbalsa-gpgme.h"
#include "gmime-multipart-crypt.h"
+#include "libbalsa.h"
/**
@@ -117,14 +118,14 @@ g_mime_gpgme_mps_sign(GMimeMultipartSigned * mps, GMimeObject * content,
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered), filter);
g_object_unref(filter);
- g_mime_object_write_to_stream(content, filtered);
+ g_mime_object_write_to_stream(content, NULL, filtered);
g_mime_stream_flush(filtered);
g_object_unref(filtered);
g_mime_stream_reset(stream);
/* Note: see rfc2015 or rfc3156, section 5.1 */
filtered = g_mime_stream_filter_new(stream);
- filter = g_mime_filter_crlf_new(TRUE, FALSE);
+ filter = g_mime_filter_unix2dos_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered), filter);
g_object_unref(filter);
@@ -164,7 +165,7 @@ g_mime_gpgme_mps_sign(GMimeMultipartSigned * mps, GMimeObject * content,
/* construct the content part */
parser = g_mime_parser_new_with_stream(stream);
- content = g_mime_parser_construct_part(parser);
+ content = g_mime_parser_construct_part(parser, libbalsa_parser_options());
g_object_unref(stream);
g_object_unref(parser);
@@ -173,7 +174,7 @@ g_mime_gpgme_mps_sign(GMimeMultipartSigned * mps, GMimeObject * content,
wrapper = g_mime_data_wrapper_new();
g_mime_data_wrapper_set_stream(wrapper, sigstream);
- g_mime_part_set_content_object(signature, wrapper);
+ g_mime_part_set_content(signature, wrapper);
g_object_unref(sigstream);
g_object_unref(wrapper);
@@ -252,7 +253,7 @@ g_mime_gpgme_mps_verify(GMimeMultipartSigned * mps, GError ** error)
GMIME_MULTIPART_SIGNED_SIGNATURE);
/* make sure the protocol matches the signature content-type */
- content_type = g_mime_content_type_to_string(signature->content_type);
+ content_type = g_mime_content_type_get_mime_type(signature->content_type);
if (g_ascii_strcasecmp(content_type, protocol) != 0) {
g_set_error(error, GMIME_ERROR, GMIME_ERROR_PARSE_ERROR, "%s",
_
@@ -271,18 +272,18 @@ g_mime_gpgme_mps_verify(GMimeMultipartSigned * mps, GError ** error)
filtered_stream = g_mime_stream_filter_new(stream);
/* Note: see rfc2015 or rfc3156, section 5.1 */
- crlf_filter = g_mime_filter_crlf_new(TRUE, FALSE);
+ crlf_filter = g_mime_filter_unix2dos_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered_stream),
crlf_filter);
g_object_unref(crlf_filter);
- g_mime_object_write_to_stream(content, filtered_stream);
+ g_mime_object_write_to_stream(content, NULL, filtered_stream);
g_mime_stream_flush(filtered_stream);
g_object_unref(filtered_stream);
g_mime_stream_reset(stream);
/* get the signature stream */
- wrapper = g_mime_part_get_content_object(GMIME_PART(signature));
+ wrapper = g_mime_part_get_content(GMIME_PART(signature));
/* a s/mime signature is always encoded, a pgp signature shouldn't,
* but there exist implementations which encode it... */
@@ -322,12 +323,12 @@ g_mime_gpgme_mpe_encrypt(GMimeMultipartEncrypted * mpe,
stream = g_mime_stream_mem_new();
filtered_stream = g_mime_stream_filter_new(stream);
- crlf_filter = g_mime_filter_crlf_new(TRUE, FALSE);
+ crlf_filter = g_mime_filter_unix2dos_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered_stream),
crlf_filter);
g_object_unref(crlf_filter);
- g_mime_object_write_to_stream(content, filtered_stream);
+ g_mime_object_write_to_stream(content, NULL, filtered_stream);
g_mime_stream_flush(filtered_stream);
g_object_unref(filtered_stream);
@@ -358,7 +359,7 @@ g_mime_gpgme_mpe_encrypt(GMimeMultipartEncrypted * mpe,
wrapper =
g_mime_data_wrapper_new_with_stream(stream,
GMIME_CONTENT_ENCODING_7BIT);
- g_mime_part_set_content_object(version_part, wrapper);
+ g_mime_part_set_content(version_part, wrapper);
g_object_unref(wrapper);
g_object_unref(stream);
@@ -370,7 +371,7 @@ g_mime_gpgme_mpe_encrypt(GMimeMultipartEncrypted * mpe,
wrapper =
g_mime_data_wrapper_new_with_stream(ciphertext,
GMIME_CONTENT_ENCODING_7BIT);
- g_mime_part_set_content_object(encrypted_part, wrapper);
+ g_mime_part_set_content(encrypted_part, wrapper);
g_object_unref(ciphertext);
g_object_unref(wrapper);
@@ -462,7 +463,7 @@ g_mime_gpgme_mpe_decrypt(GMimeMultipartEncrypted * mpe,
GMIME_MULTIPART_ENCRYPTED_VERSION);
/* make sure the protocol matches the version part's content-type */
- content_type = g_mime_content_type_to_string(version->content_type);
+ content_type = g_mime_content_type_get_mime_type(version->content_type);
if (g_ascii_strcasecmp(content_type, protocol) != 0) {
g_set_error(err, GMIME_ERROR, GMIME_ERROR_PROTOCOL_ERROR, "%s",
_
@@ -486,13 +487,13 @@ g_mime_gpgme_mpe_decrypt(GMimeMultipartEncrypted * mpe,
}
/* get the ciphertext stream */
- wrapper = g_mime_part_get_content_object(GMIME_PART(encrypted));
+ wrapper = g_mime_part_get_content(GMIME_PART(encrypted));
ciphertext = g_mime_data_wrapper_get_decoded_stream(wrapper);
g_mime_stream_reset(ciphertext);
stream = g_mime_stream_mem_new();
filtered_stream = g_mime_stream_filter_new(stream);
- crlf_filter = g_mime_filter_crlf_new(FALSE, FALSE);
+ crlf_filter = g_mime_filter_dos2unix_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filtered_stream),
crlf_filter);
g_object_unref(crlf_filter);
@@ -517,7 +518,7 @@ g_mime_gpgme_mpe_decrypt(GMimeMultipartEncrypted * mpe,
g_mime_parser_init_with_stream(parser, stream);
g_object_unref(stream);
- decrypted = g_mime_parser_construct_part(parser);
+ decrypted = g_mime_parser_construct_part(parser, libbalsa_parser_options());
g_object_unref(parser);
if (!decrypted) {
diff --git a/libbalsa/gmime-part-rfc2440.c b/libbalsa/gmime-part-rfc2440.c
index 22e9de0..44c6003 100644
--- a/libbalsa/gmime-part-rfc2440.c
+++ b/libbalsa/gmime-part-rfc2440.c
@@ -52,7 +52,7 @@ g_mime_part_check_rfc2440(GMimePart * part)
GMimePartRfc2440Mode retval = GMIME_PART_RFC2440_NONE;
/* try to get the content stream */
- wrapper = g_mime_part_get_content_object(part);
+ wrapper = g_mime_part_get_content(part);
g_return_val_if_fail(wrapper, GMIME_PART_RFC2440_NONE);
stream = g_mime_data_wrapper_get_stream(wrapper);
@@ -136,7 +136,7 @@ g_mime_part_rfc2440_sign_encrypt(GMimePart * part, const char *sign_userid,
g_return_val_if_fail(recipients != NULL || sign_userid != NULL, FALSE);
/* get the raw content */
- wrapper = g_mime_part_get_content_object(part);
+ wrapper = g_mime_part_get_content(part);
g_return_val_if_fail(wrapper, FALSE); /* Incomplete part. */
stream = g_mime_data_wrapper_get_stream(wrapper);
g_mime_stream_reset(stream);
@@ -210,7 +210,7 @@ g_mime_part_rfc2440_sign_encrypt(GMimePart * part, const char *sign_userid,
"charset", "US-ASCII");
}
- g_mime_part_set_content_object(part, wrapper);
+ g_mime_part_set_content(part, wrapper);
g_object_unref(cipherstream);
g_object_unref(wrapper);
@@ -241,7 +241,7 @@ g_mime_part_rfc2440_verify(GMimePart * part, GError ** err)
g_return_val_if_fail(GMIME_IS_PART(part), NULL);
/* get the raw content */
- wrapper = g_mime_part_get_content_object(GMIME_PART(part));
+ wrapper = g_mime_part_get_content(GMIME_PART(part));
g_return_val_if_fail(wrapper, NULL); /* Incomplete part. */
stream = g_mime_stream_mem_new();
g_mime_data_wrapper_write_to_stream(wrapper, stream);
@@ -260,7 +260,7 @@ g_mime_part_rfc2440_verify(GMimePart * part, GError ** err)
GMimeDataWrapper *wrapper = g_mime_data_wrapper_new();
g_mime_data_wrapper_set_stream(wrapper, plainstream);
- g_mime_part_set_content_object(GMIME_PART(part), wrapper);
+ g_mime_part_set_content(GMIME_PART(part), wrapper);
g_object_unref(wrapper);
}
g_object_unref(plainstream);
@@ -297,7 +297,7 @@ g_mime_part_rfc2440_decrypt(GMimePart * part, GtkWindow * parent,
g_return_val_if_fail(GMIME_IS_PART(part), NULL);
/* get the raw content */
- wrapper = g_mime_part_get_content_object(part);
+ wrapper = g_mime_part_get_content(part);
g_return_val_if_fail(wrapper, NULL); /* Incomplete part. */
stream = g_mime_stream_mem_new();
g_mime_data_wrapper_write_to_stream(wrapper, stream);
@@ -322,7 +322,7 @@ g_mime_part_rfc2440_decrypt(GMimePart * part, GtkWindow * parent,
/* strip crlf off encrypted stuff coming from Winbloze crap */
filter_stream = g_mime_stream_filter_new(plainstream);
- filter = g_mime_filter_crlf_new(FALSE, FALSE);
+ filter = g_mime_filter_dos2unix_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filter_stream),
filter);
g_object_unref(filter);
@@ -330,7 +330,7 @@ g_mime_part_rfc2440_decrypt(GMimePart * part, GtkWindow * parent,
/* replace the old contents by the decrypted stuff */
out_stream = g_mime_stream_mem_new();
g_mime_data_wrapper_set_stream(wrapper, out_stream);
- g_mime_part_set_content_object(part, wrapper);
+ g_mime_part_set_content(part, wrapper);
g_mime_stream_reset(filter_stream);
g_mime_stream_write_to_stream(filter_stream, out_stream);
g_object_unref(filter_stream);
diff --git a/libbalsa/identity.c b/libbalsa/identity.c
index 04971a3..30343b5 100644
--- a/libbalsa/identity.c
+++ b/libbalsa/identity.c
@@ -2202,7 +2202,7 @@ libbalsa_identity_combo_box(GList * identities,
GtkTreeIter iter;
ident = list->data;
- from = internet_address_to_string(ident->ia, FALSE);
+ from = internet_address_to_string(ident->ia, NULL, FALSE);
name = g_strconcat("(", ident->identity_name, ")", NULL);
gtk_list_store_append(store, &iter);
diff --git a/libbalsa/imap/imap-handle.c b/libbalsa/imap/imap-handle.c
index 9abc84e..9587a1b 100644
--- a/libbalsa/imap/imap-handle.c
+++ b/libbalsa/imap/imap-handle.c
@@ -3322,7 +3322,17 @@ ir_envelope(struct siobuf *sio, ImapEnvelope *env)
date = imap_get_nstring(sio);
if(date) {
+#if (GMIME_MAJOR_VERSION >= 3)
+ if (env != NULL) {
+ GDateTime *datetime;
+
+ datetime = g_mime_utils_header_decode_date(date);
+ env->date = g_date_time_to_unix(datetime);
+ g_date_time_unref(datetime);
+ }
+#else /* (GMIME_MAJOR_VERSION >= 3) */
if(env) env->date = g_mime_utils_header_decode_date(date, NULL);
+#endif /* (GMIME_MAJOR_VERSION >= 3) */
g_free(date);
}
if( (c=sio_getc(sio)) != ' ') return IMR_PROTOCOL;
diff --git a/libbalsa/libbalsa.c b/libbalsa/libbalsa.c
index 861649c..b5e6177 100644
--- a/libbalsa/libbalsa.c
+++ b/libbalsa/libbalsa.c
@@ -89,16 +89,8 @@ libbalsa_init(LibBalsaInformationFunc information_callback)
libbalsa_real_information_func = information_callback;
- g_mime_init(GMIME_ENABLE_RFC2047_WORKAROUNDS);
-
- GMIME_TYPE_DATA_WRAPPER;
- GMIME_TYPE_FILTER;
- GMIME_TYPE_FILTER_CRLF;
- GMIME_TYPE_PARSER;
- GMIME_TYPE_STREAM;
- GMIME_TYPE_STREAM_BUFFER;
- GMIME_TYPE_STREAM_MEM;
- GMIME_TYPE_STREAM_NULL;
+ g_mime_init(); /* Registers all GMime types */
+ libbalsa_parser_options_init();
/* Register our types to avoid possible race conditions. See
output of "valgrind --tool=helgrind --log-file=balsa.log balsa"
diff --git a/libbalsa/mailbox.c b/libbalsa/mailbox.c
index 1accc40..0e659c2 100644
--- a/libbalsa/mailbox.c
+++ b/libbalsa/mailbox.c
@@ -3917,7 +3917,8 @@ lbm_get_mime_msg(LibBalsaMailbox * mailbox, LibBalsaMessage * msg)
TRUE);
parser = g_mime_parser_new_with_stream(stream);
g_object_unref(stream);
- mime_msg = g_mime_parser_construct_message(parser);
+ mime_msg = g_mime_parser_construct_message(parser, libbalsa_parser_options());
+
g_object_unref(parser);
}
libbalsa_mailbox_release_message(mailbox, msg);
diff --git a/libbalsa/mailbox_imap.c b/libbalsa/mailbox_imap.c
index 1c21b2b..957ce88 100644
--- a/libbalsa/mailbox_imap.c
+++ b/libbalsa/mailbox_imap.c
@@ -1927,11 +1927,11 @@ libbalsa_mailbox_imap_sync(LibBalsaMailbox * mailbox, gboolean expunge)
static InternetAddress*
imap_address_to_gmime_mailbox(ImapAddress *addr)
{
- gchar *tmp = g_mime_utils_header_decode_text(addr->addr_spec);
+ gchar *tmp = g_mime_utils_header_decode_text(libbalsa_parser_options(), addr->addr_spec);
InternetAddress *address = internet_address_mailbox_new(NULL, tmp);
g_free(tmp);
if (addr->name) {
- tmp = g_mime_utils_header_decode_text(addr->name);
+ tmp = g_mime_utils_header_decode_text(libbalsa_parser_options(), addr->name);
internet_address_set_name(address, tmp);
g_free(tmp);
}
@@ -1958,7 +1958,7 @@ internet_address_new_list_from_imap_address(ImapAddress *list,
/* Group head */
ImapAddress *tail = NULL;
InternetAddressList *l;
- gchar *tmp = g_mime_utils_header_decode_text(list->name);
+ gchar *tmp = g_mime_utils_header_decode_text(libbalsa_parser_options(), list->name);
addr = internet_address_group_new(tmp);
g_free(tmp);
l = internet_address_new_list_from_imap_address(list->next,
@@ -2008,7 +2008,7 @@ lb_set_headers(LibBalsaMessageHeaders *headers, ImapEnvelope * envelope,
if(is_embedded) {
headers->subject =
- g_mime_utils_header_decode_text(envelope->subject);
+ g_mime_utils_header_decode_text(libbalsa_parser_options(), envelope->subject);
libbalsa_utf8_sanitize(&headers->subject, TRUE, NULL);
}
}
@@ -2134,7 +2134,7 @@ lbm_imap_construct_body(LibBalsaMessageBody *lbbody, ImapBody *imap_body)
if(!str) str = imap_body_get_param(imap_body, "name");
if(str) {
lbbody->filename =
- g_mime_utils_header_decode_text(str);
+ g_mime_utils_header_decode_text(libbalsa_parser_options(), str);
libbalsa_utf8_sanitize(&lbbody->filename, TRUE, NULL);
}
lbbody->charset = g_strdup(imap_body_get_param(imap_body, "charset"));
@@ -2183,15 +2183,15 @@ get_struct_from_cache(LibBalsaMailbox *mailbox, LibBalsaMessage *message,
fstream = g_mime_stream_filter_new(stream);
g_object_unref(stream);
- filter = g_mime_filter_crlf_new(FALSE, FALSE);
+ filter = g_mime_filter_dos2unix_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(fstream), filter);
g_object_unref(filter);
mime_parser = g_mime_parser_new_with_stream(fstream);
g_object_unref(fstream);
- g_mime_parser_set_scan_from(mime_parser, FALSE);
- message->mime_msg = g_mime_parser_construct_message(mime_parser);
+ g_mime_parser_set_format(mime_parser, GMIME_FORMAT_MESSAGE);
+ message->mime_msg = g_mime_parser_construct_message(mime_parser, libbalsa_parser_options());
g_object_unref(mime_parser);
}
@@ -2552,7 +2552,7 @@ lbm_imap_get_msg_part_from_cache(LibBalsaMessage * msg,
{
GMimeParser *parser =
g_mime_parser_new_with_stream (partstream);
- part->mime_part = g_mime_parser_construct_part (parser);
+ part->mime_part = g_mime_parser_construct_part(parser, NULL);
g_object_unref (parser);
}
g_object_unref (partstream);
@@ -2576,7 +2576,7 @@ lbm_imap_get_msg_part(LibBalsaMessage * msg, LibBalsaMessageBody * part,
if (!part->mime_part) {
GMimeContentType *type =
- g_mime_content_type_new_from_string(part->content_type);
+ g_mime_content_type_parse(libbalsa_parser_options(), part->content_type);
if (g_mime_content_type_is_type(type, "multipart", "*")) {
if (g_mime_content_type_is_type(type, "multipart", "signed"))
part->mime_part =
@@ -2857,9 +2857,7 @@ multi_append_cb(char * buf, size_t buflen,
tmpstream = g_mime_stream_filter_new(stream);
- crlffilter =
- g_mime_filter_crlf_new(TRUE,
- FALSE);
+ crlffilter = g_mime_filter_dos2unix_new(TRUE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(tmpstream), crlffilter);
g_object_unref(crlffilter);
diff --git a/libbalsa/mailbox_local.c b/libbalsa/mailbox_local.c
index a8fd168..1894087 100644
--- a/libbalsa/mailbox_local.c
+++ b/libbalsa/mailbox_local.c
@@ -879,7 +879,7 @@ message_match_real(LibBalsaMailbox *mailbox, guint msgno,
if (message->headers->to_list) {
gchar *str =
internet_address_list_to_string(message->headers->
- to_list, FALSE);
+ to_list, NULL, FALSE);
match =
libbalsa_utf8_strstr(str, cond->match.string.string);
g_free(str);
@@ -906,7 +906,7 @@ message_match_real(LibBalsaMailbox *mailbox, guint msgno,
if (message->headers->cc_list) {
gchar *str =
internet_address_list_to_string(message->headers->
- cc_list, FALSE);
+ cc_list, NULL, FALSE);
match =
libbalsa_utf8_strstr(str, cond->match.string.string);
g_free(str);
@@ -1032,7 +1032,7 @@ libbalsa_mailbox_local_cache_message(LibBalsaMailboxLocal * local,
info->sender = NULL;
if (message->headers->from)
info->sender =
- internet_address_list_to_string(message->headers->from, FALSE);
+ internet_address_list_to_string(message->headers->from, NULL, FALSE);
if (!info->sender)
info->sender = g_strdup("");
}
@@ -2103,8 +2103,8 @@ libbalsa_mailbox_local_get_mime_message(LibBalsaMailbox * mailbox,
return NULL;
mime_parser = g_mime_parser_new_with_stream(mime_stream);
- g_mime_parser_set_scan_from(mime_parser, FALSE);
- mime_message = g_mime_parser_construct_message(mime_parser);
+ g_mime_parser_set_format(mime_parser, GMIME_FORMAT_MESSAGE);
+ mime_message = g_mime_parser_construct_message(mime_parser, libbalsa_parser_options());
g_object_unref(mime_parser);
g_object_unref(mime_stream);
diff --git a/libbalsa/mailbox_maildir.c b/libbalsa/mailbox_maildir.c
index 78e7f43..db3358c 100644
--- a/libbalsa/mailbox_maildir.c
+++ b/libbalsa/mailbox_maildir.c
@@ -904,9 +904,7 @@ lbm_maildir_add_message(LibBalsaMailboxLocal * local,
out_stream = g_mime_stream_fs_new(fd);
in_stream = g_mime_stream_filter_new(stream);
- crlffilter =
- g_mime_filter_crlf_new(FALSE,
- FALSE);
+ crlffilter = g_mime_filter_dos2unix_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(in_stream), crlffilter);
g_object_unref(crlffilter);
diff --git a/libbalsa/mailbox_mbox.c b/libbalsa/mailbox_mbox.c
index ff5ecbb..92e258f 100644
--- a/libbalsa/mailbox_mbox.c
+++ b/libbalsa/mailbox_mbox.c
@@ -470,7 +470,7 @@ parse_mailbox(LibBalsaMailboxMbox * mbox)
unsigned msgno = mbox->msgno_2_msg_info->len;
gmime_parser = g_mime_parser_new_with_stream(mbox->gmime_stream);
- g_mime_parser_set_scan_from(gmime_parser, TRUE);
+ g_mime_parser_set_format(gmime_parser, GMIME_FORMAT_MBOX);
g_mime_parser_set_respect_content_length(gmime_parser, TRUE);
g_mime_parser_set_header_regex(gmime_parser,
"^Status|^X-Status|^MIME-Version",
@@ -486,7 +486,7 @@ parse_mailbox(LibBalsaMailboxMbox * mbox)
off_t offset;
msg_info.status = msg_info.x_status = msg_info.mime_version = -1;
- mime_message = g_mime_parser_construct_message(gmime_parser);
+ mime_message = g_mime_parser_construct_message(gmime_parser, libbalsa_parser_options());
if (mime_message == NULL) {
/* Skip to the next message, if any */
GMimeStream *mbox_stream;
@@ -506,10 +506,10 @@ parse_mailbox(LibBalsaMailboxMbox * mbox)
g_mime_parser_init_with_stream(gmime_parser, mbox_stream);
continue;
}
- msg_info.start = g_mime_parser_get_from_offset(gmime_parser);
+ msg_info.start = g_mime_parser_get_mbox_marker_offset(gmime_parser);
msg_info.end = g_mime_parser_tell(gmime_parser);
if (msg_info.end <= msg_info.start
- || !(from = g_mime_parser_get_from(gmime_parser))) {
+ || !(from = g_mime_parser_get_mbox_marker(gmime_parser))) {
g_object_unref(mime_message);
continue;
}
@@ -1160,7 +1160,7 @@ lbm_mbox_get_mime_message(LibBalsaMailbox * mailbox,
libbalsa_mime_stream_shared_lock(stream);
parser = g_mime_parser_new_with_stream(stream);
- mime_message = g_mime_parser_construct_message(parser);
+ mime_message = g_mime_parser_construct_message(parser, libbalsa_parser_options());
g_object_unref(parser);
libbalsa_mime_stream_shared_unlock(stream);
g_object_unref(stream);
@@ -1680,7 +1680,7 @@ libbalsa_mailbox_mbox_sync(LibBalsaMailbox * mailbox, gboolean expunge)
return FALSE;
}
gmime_parser = g_mime_parser_new_with_stream(mbox_stream);
- g_mime_parser_set_scan_from(gmime_parser, TRUE);
+ g_mime_parser_set_format(gmime_parser, GMIME_FORMAT_MBOX);
g_mime_parser_set_respect_content_length(gmime_parser, TRUE);
g_mime_parser_set_header_regex(gmime_parser,
"^Status|^X-Status|^MIME-Version",
@@ -1710,11 +1710,11 @@ libbalsa_mailbox_mbox_sync(LibBalsaMailbox * mailbox, gboolean expunge)
msg_info->local_info.message->msgno = j + 1;
msg_info->status = msg_info->x_status = msg_info->mime_version = -1;
- mime_msg = g_mime_parser_construct_message(gmime_parser);
+ mime_msg = g_mime_parser_construct_message(gmime_parser, libbalsa_parser_options());
if (!mime_msg)
/* Try to recover */
continue;
- msg_info->start = g_mime_parser_get_from_offset(gmime_parser);
+ msg_info->start = g_mime_parser_get_mbox_marker_offset(gmime_parser);
/* Make sure we don't have offsets for any encapsulated headers. */
if (!g_mime_object_get_header(GMIME_OBJECT(mime_msg), "Status"))
@@ -1724,7 +1724,7 @@ libbalsa_mailbox_mbox_sync(LibBalsaMailbox * mailbox, gboolean expunge)
if (!g_mime_object_get_header(GMIME_OBJECT(mime_msg), "MIME-Version"))
msg_info->mime_version = -1;
- from = g_mime_parser_get_from(gmime_parser);
+ from = g_mime_parser_get_mbox_marker(gmime_parser);
if (!from) {
/* Try to recover */
g_object_unref(mime_msg);
@@ -1844,10 +1844,10 @@ static void update_message_status_headers(GMimeMessage *message,
/* Create headers with spaces in place of flags, if necessary, so we
* can later update them in place. */
lbm_mbox_status_hdr(flags, 2, new_header);
- g_mime_object_set_header(GMIME_OBJECT(message), "Status", new_header->str);
+ g_mime_object_set_header(GMIME_OBJECT(message), "Status", new_header->str, NULL);
g_string_truncate(new_header, 0);
lbm_mbox_x_status_hdr(flags, 3, new_header);
- g_mime_object_set_header(GMIME_OBJECT(message), "X-Status", new_header->str);
+ g_mime_object_set_header(GMIME_OBJECT(message), "X-Status", new_header->str, NULL);
g_string_free(new_header, TRUE);
}
@@ -1859,7 +1859,7 @@ lbm_mbox_armored_object(GMimeStream * stream)
GMimeObject *object;
parser = g_mime_parser_new_with_stream(stream);
- object = GMIME_OBJECT(g_mime_parser_construct_message(parser));
+ object = GMIME_OBJECT(g_mime_parser_construct_message(parser, libbalsa_parser_options()));
g_object_unref(parser);
g_mime_object_encode(object, GMIME_ENCODING_CONSTRAINT_7BIT);
@@ -1874,8 +1874,7 @@ lbm_mbox_armored_stream(GMimeStream * stream)
fstream = g_mime_stream_filter_new(stream);
- filter = g_mime_filter_crlf_new(FALSE,
- FALSE);
+ filter = g_mime_filter_dos2unix_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(fstream), filter);
g_object_unref(filter);
@@ -1914,7 +1913,7 @@ lbm_mbox_add_message(LibBalsaMailboxLocal * local,
ctime_r(&(message->headers->date), date_string);
sender = message->headers->from ?
- internet_address_list_to_string(message->headers->from, FALSE) :
+ internet_address_list_to_string(message->headers->from, NULL, FALSE) :
g_strdup("none");
g_object_unref(message);
@@ -1980,7 +1979,7 @@ lbm_mbox_add_message(LibBalsaMailboxLocal * local,
retval = lbm_mbox_newline(dest);
if (retval < 0
|| g_mime_stream_write_string(dest, from) < (gint) strlen(from)
- || g_mime_object_write_to_stream(armored_object, armored_dest) < 0) {
+ || g_mime_object_write_to_stream(armored_object, NULL, armored_dest) < 0) {
g_set_error(err, LIBBALSA_MAILBOX_ERROR,
LIBBALSA_MAILBOX_APPEND_ERROR, _("Data copy error"));
retval = -1;
diff --git a/libbalsa/mailbox_mh.c b/libbalsa/mailbox_mh.c
index 9fe73e3..3e680a1 100644
--- a/libbalsa/mailbox_mh.c
+++ b/libbalsa/mailbox_mh.c
@@ -1086,8 +1086,7 @@ lbm_mh_add_message(LibBalsaMailboxLocal * local,
}
out_stream = g_mime_stream_fs_new(fd);
- crlffilter = g_mime_filter_crlf_new(FALSE,
- FALSE);
+ crlffilter = g_mime_filter_dos2unix_new(FALSE);
in_stream = g_mime_stream_filter_new(stream);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(in_stream), crlffilter);
g_object_unref(crlffilter);
diff --git a/libbalsa/message.c b/libbalsa/message.c
index 85731e7..5fe876f 100644
--- a/libbalsa/message.c
+++ b/libbalsa/message.c
@@ -473,7 +473,8 @@ GList *
libbalsa_message_user_hdrs_from_gmime(GMimeMessage * message)
{
GMimeHeaderList *hdrlist;
- GMimeHeaderIter iter;
+ gint count;
+ gint i;
GList *res = NULL;
const char *value;
@@ -517,16 +518,18 @@ libbalsa_message_user_hdrs_from_gmime(GMimeMessage * message)
g_list_prepend(res,
libbalsa_create_hdr_pair
("In-Reply-To",
- g_mime_utils_header_decode_text(value)));
+ g_mime_utils_header_decode_text(libbalsa_parser_options(), value)));
}
hdrlist = g_mime_object_get_header_list (GMIME_OBJECT(message));
- if (g_mime_header_list_get_iter (hdrlist, &iter)) {
- do {
- prepend_header_misc (g_mime_header_iter_get_name (&iter),
- g_mime_header_iter_get_value (&iter),
- &res);
- } while (g_mime_header_iter_next (&iter));
+ count = g_mime_header_list_get_count(hdrlist);
+ for (i = 0; i < count; i++) {
+ GMimeHeader *header;
+
+ header = g_mime_header_list_get_header_at(hdrlist, i);
+ prepend_header_misc(g_mime_header_get_name(header),
+ g_mime_header_get_value(header),
+ &res);
}
return g_list_reverse(res);
@@ -880,36 +883,43 @@ libbalsa_message_get_no(LibBalsaMessage* msg)
/* Populate headers from mime_msg, but only the members that are needed
* all the time. */
+
static InternetAddressList *
-lb_message_recipients(GMimeMessage * message, GMimeRecipientType type)
+lb_message_address_list_ref(InternetAddressList * list)
{
- const InternetAddressList *list;
- InternetAddressList *copy = NULL;
-
- if ((list = g_mime_message_get_recipients (message, type))) {
- copy = internet_address_list_new ();
- internet_address_list_append (copy, (InternetAddressList *) list);
+ if (list != NULL && internet_address_list_length(list) > 0) {
+ return g_object_ref(list);
}
-
- return copy;
+
+ return NULL;
+}
+
+static InternetAddressList *
+lb_message_recipients(GMimeMessage * message,
+ GMimeAddressType type)
+{
+ return lb_message_address_list_ref(g_mime_message_get_addresses(message, type));
}
static void
lb_message_headers_basic_from_gmime(LibBalsaMessageHeaders *headers,
GMimeMessage *mime_msg)
{
- g_return_if_fail(headers);
- g_return_if_fail(mime_msg != NULL);
+ if (headers->from == NULL) {
+ headers->from =
+ lb_message_address_list_ref(g_mime_message_get_from(mime_msg));
+ }
- if (!headers->from)
- headers->from = internet_address_list_parse_string(mime_msg->from);
+ if (headers->date == 0) {
+ GDateTime *datetime;
- if (!headers->date)
- g_mime_message_get_date(mime_msg, &headers->date, NULL);
+ datetime = g_mime_message_get_date(mime_msg);
+ headers->date = g_date_time_to_unix(datetime);
+ }
- if (!headers->to_list)
+ if (headers->to_list == NULL)
headers->to_list =
- lb_message_recipients(mime_msg, GMIME_RECIPIENT_TYPE_TO);
+ lb_message_recipients(mime_msg, GMIME_ADDRESS_TYPE_TO);
if (!headers->content_type) {
/* If we could:
@@ -921,8 +931,8 @@ lb_message_headers_basic_from_gmime(LibBalsaMessageHeaders *headers,
gchar *str;
g_return_if_fail(headers->content_type == NULL);
content_type = g_mime_object_get_content_type(mime_msg->mime_part);
- str = g_mime_content_type_to_string(content_type);
- headers->content_type = g_mime_content_type_new_from_string(str);
+ str = g_mime_content_type_get_mime_type(content_type);
+ headers->content_type = g_mime_content_type_parse(libbalsa_parser_options(), str);
g_free(str);
}
}
@@ -936,23 +946,29 @@ lb_message_headers_extra_from_gmime(LibBalsaMessageHeaders *headers,
g_return_if_fail(headers);
g_return_if_fail(mime_msg != NULL);
- if (!headers->reply_to)
+ if (headers->reply_to == NULL) {
headers->reply_to =
- internet_address_list_parse_string(mime_msg->reply_to);
+ lb_message_address_list_ref(g_mime_message_get_reply_to(mime_msg));
+ }
+
+ if (headers->dispnotify_to == NULL) {
+ const gchar *value =
+ g_mime_object_get_header(GMIME_OBJECT(mime_msg), "Disposition-Notification-To");
- if (!headers->dispnotify_to)
- headers->dispnotify_to =
- internet_address_list_parse_string(g_mime_object_get_header
- (GMIME_OBJECT(mime_msg),
- "Disposition-Notification-To"));
+ if (value != NULL)
+ headers->dispnotify_to =
+ internet_address_list_parse(libbalsa_parser_options(), value);
+ }
- if (!headers->cc_list)
+ if (headers->cc_list == NULL) {
headers->cc_list =
- lb_message_recipients(mime_msg, GMIME_RECIPIENT_TYPE_CC);
+ lb_message_recipients(mime_msg, GMIME_ADDRESS_TYPE_CC);
+ }
- if (!headers->bcc_list)
+ if (headers->bcc_list == NULL) {
headers->bcc_list =
- lb_message_recipients(mime_msg, GMIME_RECIPIENT_TYPE_BCC);
+ lb_message_recipients(mime_msg, GMIME_ADDRESS_TYPE_BCC);
+ }
/* Get fcc from message */
if (!headers->fcc_url)
@@ -1043,15 +1059,20 @@ libbalsa_message_refs_for_threading(LibBalsaMessage * message)
static GList *
references_decode(const gchar * str)
{
- GMimeReferences *references, *reference;
+ GMimeReferences *references;
GList *list = NULL;
+ gint length;
+ gint i;
- reference = references = g_mime_references_decode(str);
- while (reference) {
- list = g_list_prepend(list, g_strdup(reference->msgid));
- reference = reference->next;
+ references = g_mime_references_parse(NULL, str);
+ length = g_mime_references_length(references);
+ for (i = 0; i < length; i++) {
+ const gchar *message_id;
+
+ message_id = g_mime_references_get_message_id(references, i);
+ list = g_list_prepend(list, g_strdup(message_id));
}
- g_mime_references_clear(&references);
+ g_mime_references_free(references);
return g_list_reverse(list);
}
@@ -1105,7 +1126,7 @@ lbmsg_set_header(LibBalsaMessage *message, const gchar *name,
* appropriate GMime decoder. */
gchar *tmp = g_strdup(value);
libbalsa_utf8_sanitize(&tmp, TRUE, NULL);
- val = g_mime_utils_header_encode_text(tmp);
+ val = g_mime_utils_header_encode_text(NULL, tmp, NULL);
g_free(tmp);
#ifdef DEBUG
g_print("%s: non-ascii “%s” header “%s” encoded as “%s”\n",
@@ -1125,15 +1146,21 @@ lbmsg_set_header(LibBalsaMessage *message, const gchar *name,
#endif
} else
if (g_ascii_strcasecmp(name, "Date") == 0) {
- message->headers->date = g_mime_utils_header_decode_date(value, NULL);
+ GDateTime *datetime;
+
+ datetime = g_mime_utils_header_decode_date(value);
+ message->headers->date = g_date_time_to_unix(datetime);
+ g_date_time_unref(datetime);
} else
if (message->headers->from == NULL &&
g_ascii_strcasecmp(name, "From") == 0) {
- message->headers->from = internet_address_list_parse_string(value);
+ message->headers->from =
+ internet_address_list_parse(libbalsa_parser_options(), value);
} else
if (message->headers->to_list == NULL &&
g_ascii_strcasecmp(name, "To") == 0) {
- message->headers->to_list = internet_address_list_parse_string(value);
+ message->headers->to_list =
+ internet_address_list_parse(libbalsa_parser_options(), value);
} else
if (g_ascii_strcasecmp(name, "In-Reply-To") == 0) {
libbalsa_message_set_in_reply_to_from_string(message, value);
@@ -1148,12 +1175,12 @@ lbmsg_set_header(LibBalsaMessage *message, const gchar *name,
if (message->headers->content_type == NULL &&
g_ascii_strcasecmp(name, "Content-Type") == 0) {
message->headers->content_type =
- g_mime_content_type_new_from_string(value);
+ g_mime_content_type_parse(libbalsa_parser_options(), value);
} else
if (message->headers->dispnotify_to == NULL &&
g_ascii_strcasecmp(name, "Disposition-Notification-To") == 0) {
message->headers->dispnotify_to =
- internet_address_list_parse_string(value);
+ internet_address_list_parse(libbalsa_parser_options(), value);
} else
#ifdef MESSAGE_COPY_CONTENT
if (g_ascii_strcasecmp(name, "Content-Length") == 0) {
@@ -1223,9 +1250,7 @@ libbalsa_message_load_envelope_from_stream(LibBalsaMessage * message,
gmime_stream_filter =
g_mime_stream_filter_new(gmime_stream);
- gmime_filter_crlf =
- g_mime_filter_crlf_new(FALSE,
- FALSE);
+ gmime_filter_crlf = g_mime_filter_dos2unix_new(FALSE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(gmime_stream_filter),
gmime_filter_crlf);
g_object_unref(gmime_filter_crlf);
@@ -1303,7 +1328,7 @@ libbalsa_message_stream(LibBalsaMessage * message)
message->msgno, FALSE);
mime_stream = g_mime_stream_mem_new();
- g_mime_object_write_to_stream(GMIME_OBJECT(message->mime_msg),
+ g_mime_object_write_to_stream(GMIME_OBJECT(message->mime_msg), NULL,
mime_stream);
g_mime_stream_reset(mime_stream);
@@ -1355,7 +1380,7 @@ libbalsa_message_set_subject_from_header(LibBalsaMessage * message,
{
if (header) {
gchar *subject =
- g_mime_utils_header_decode_text(header);
+ g_mime_utils_header_decode_text(libbalsa_parser_options(), header);
libbalsa_message_set_subject(message, subject);
g_free(subject);
}
diff --git a/libbalsa/misc.c b/libbalsa/misc.c
index c05da73..6aa591e 100644
--- a/libbalsa/misc.c
+++ b/libbalsa/misc.c
@@ -290,7 +290,7 @@ libbalsa_set_fallback_codeset(LibBalsaCodeset codeset)
NULL
};
- g_mime_set_user_charsets(charsets);
+ g_mime_parser_options_set_fallback_charsets(libbalsa_parser_options(), charsets);
sanitize_fallback_codeset = codeset;
return ret;
@@ -1224,3 +1224,19 @@ libbalsa_font_string_to_css(const gchar * font_string,
return g_string_free(string, FALSE);
#endif /* !GTK_CHECK_VERSION(3, 22,0) */
}
+
+static GMimeParserOptions *parser_options;
+
+void
+libbalsa_parser_options_init(void)
+{
+ parser_options = g_mime_parser_options_new();
+ g_mime_parser_options_set_rfc2047_compliance_mode(parser_options,
+ GMIME_RFC_COMPLIANCE_LOOSE);
+}
+
+GMimeParserOptions *
+libbalsa_parser_options(void)
+{
+ return parser_options;
+}
diff --git a/libbalsa/misc.h b/libbalsa/misc.h
index b2639e6..0e7ae23 100644
--- a/libbalsa/misc.h
+++ b/libbalsa/misc.h
@@ -158,4 +158,7 @@ gchar * libbalsa_text_to_html(const gchar * title, const gchar * body, const gch
GString * libbalsa_html_encode_hyperlinks(GString * paragraph);
gchar *libbalsa_font_string_to_css(const gchar * font_string, const gchar * name);
+void libbalsa_parser_options_init(void);
+GMimeParserOptions *libbalsa_parser_options(void);
+
#endif /* __LIBBALSA_MISC_H__ */
diff --git a/libbalsa/rfc3156.c b/libbalsa/rfc3156.c
index 59527dc..afcf084 100644
--- a/libbalsa/rfc3156.c
+++ b/libbalsa/rfc3156.c
@@ -67,7 +67,7 @@ body_is_type(LibBalsaMessageBody * body, const gchar * type,
retval = g_mime_content_type_is_type(content_type, type, sub_type);
} else {
GMimeContentType *content_type =
- g_mime_content_type_new_from_string(body->content_type);
+ g_mime_content_type_parse(libbalsa_parser_options(), body->content_type);
retval = g_mime_content_type_is_type(content_type, type, sub_type);
g_object_unref(content_type);
}
diff --git a/libbalsa/send.c b/libbalsa/send.c
index fc447d3..39c7f80 100644
--- a/libbalsa/send.c
+++ b/libbalsa/send.c
@@ -266,7 +266,7 @@ lbs_set_content(GMimePart *mime_part,
GMIME_CONTENT_ENCODING_DEFAULT);
g_object_unref(stream);
- g_mime_part_set_content_object(mime_part, wrapper);
+ g_mime_part_set_content(mime_part, wrapper);
g_object_unref(wrapper);
}
@@ -344,7 +344,7 @@ add_mime_body_plain(LibBalsaMessageBody * body, gboolean flow, gboolean postpone
GMIME_CONTENT_ENCODING_DEFAULT);
g_object_unref(stream);
- g_mime_part_set_content_object(mime_part, wrapper);
+ g_mime_part_set_content(mime_part, wrapper);
g_object_unref(G_OBJECT(wrapper));
} else {
lbs_set_content(mime_part, body->buffer);
@@ -445,12 +445,12 @@ lbs_message_queue_real(LibBalsaMessage *message,
if (fccbox != NULL) {
g_mime_object_set_header(GMIME_OBJECT(message->mime_msg), "X-Balsa-Fcc",
- fccbox->url);
+ fccbox->url, NULL);
}
g_mime_object_set_header(GMIME_OBJECT(message->mime_msg), "X-Balsa-DSN",
- message->request_dsn ? "1" : "0");
+ message->request_dsn ? "1" : "0", NULL);
g_mime_object_set_header(GMIME_OBJECT(message->mime_msg), "X-Balsa-SmtpServer",
- libbalsa_smtp_server_get_name(smtp_server));
+ libbalsa_smtp_server_get_name(smtp_server), NULL);
big_message = libbalsa_smtp_server_get_big_message(smtp_server);
if (big_message > 0) {
@@ -1117,14 +1117,14 @@ message_add_references(const LibBalsaMessage *message,
}
g_string_append_printf(str, "<%s>", (gchar *) list->data);
} while ((list = list->next) != NULL);
- g_mime_object_set_header(GMIME_OBJECT(msg), "References", str->str);
+ g_mime_object_set_header(GMIME_OBJECT(msg), "References", str->str, NULL);
g_string_free(str, TRUE);
}
if (message->in_reply_to != NULL) {
/* There's no specific header function for In-Reply-To */
g_mime_object_set_header(GMIME_OBJECT(msg), "In-Reply-To",
- message->in_reply_to->data);
+ message->in_reply_to->data, NULL);
}
}
@@ -1174,24 +1174,6 @@ parse_content_type(const char *content_type)
}
-/* get_tz_offset() returns tz offset in RFC 5322 format ([-]hhmm) */
-static gint
-get_tz_offset(time_t t)
-{
- GTimeZone *local_tz;
- gint interval;
- gint32 offset;
- gint hours;
-
- local_tz = g_time_zone_new_local();
- interval = g_time_zone_find_interval(local_tz, G_TIME_TYPE_UNIVERSAL, t);
- offset = g_time_zone_get_offset(local_tz, interval);
- g_time_zone_unref(local_tz);
- hours = offset / 3600;
- return (hours * 100) + ((offset - (hours * 3600)) / 60);
-}
-
-
static LibBalsaMsgCreateResult
libbalsa_message_create_mime_message(LibBalsaMessage *message,
gboolean flow,
@@ -1230,7 +1212,7 @@ libbalsa_message_create_mime_message(LibBalsaMessage *message,
if (body->attach_mode == LIBBALSA_ATTACH_AS_EXTBODY) {
GMimeContentType *content_type =
g_mime_content_type_new("message", "external-body");
- mime_part = g_mime_object_new_type("message", "external-body");
+ mime_part = g_mime_object_new_type(libbalsa_parser_options(), "message", "external-body");
g_mime_object_set_content_type(mime_part, content_type);
g_mime_part_set_content_encoding(GMIME_PART(mime_part),
GMIME_CONTENT_ENCODING_7BIT);
@@ -1273,7 +1255,7 @@ libbalsa_message_create_mime_message(LibBalsaMessage *message,
}
parser = g_mime_parser_new_with_stream(stream);
g_object_unref(stream);
- mime_message = g_mime_parser_construct_message(parser);
+ mime_message = g_mime_parser_construct_message(parser, libbalsa_parser_options());
g_object_unref(parser);
mime_part =
GMIME_OBJECT(g_mime_message_part_new_with_message
@@ -1341,8 +1323,7 @@ libbalsa_message_create_mime_message(LibBalsaMessage *message,
content = g_mime_data_wrapper_new_with_stream(stream,
GMIME_CONTENT_ENCODING_DEFAULT);
g_object_unref(stream);
- g_mime_part_set_content_object(GMIME_PART(mime_part),
- content);
+ g_mime_part_set_content(GMIME_PART(mime_part), content);
g_object_unref(content);
}
g_strfreev(mime_type);
@@ -1410,56 +1391,58 @@ libbalsa_message_create_mime_message(LibBalsaMessage *message,
message_add_references(message, mime_message);
if (message->headers->from != NULL) {
- tmp = internet_address_list_to_string(message->headers->from,
- TRUE);
- if (tmp != NULL) {
- g_mime_message_set_sender(mime_message, tmp);
- g_free(tmp);
- }
+ InternetAddressList *list;
+
+ list = g_mime_message_get_from(mime_message);
+ internet_address_list_append(list, message->headers->from);
}
if (message->headers->reply_to != NULL) {
- tmp = internet_address_list_to_string(message->headers->reply_to,
- TRUE);
- if (tmp != NULL) {
- g_mime_message_set_reply_to(mime_message, tmp);
- g_free(tmp);
- }
+ InternetAddressList *list;
+
+ list = g_mime_message_get_reply_to(mime_message);
+ internet_address_list_append(list, message->headers->reply_to);
}
if (LIBBALSA_MESSAGE_GET_SUBJECT(message)) {
g_mime_message_set_subject(mime_message,
- LIBBALSA_MESSAGE_GET_SUBJECT(message));
+ LIBBALSA_MESSAGE_GET_SUBJECT(message), NULL);
}
- g_mime_message_set_date(mime_message, message->headers->date,
- get_tz_offset(message->headers->date));
+ {
+ GDateTime *datetime;
+
+ datetime = g_date_time_new_from_unix_local(message->headers->date);
+ g_mime_message_set_date(mime_message, datetime);
+ g_date_time_unref(datetime);
+ }
if ((ia_list = message->headers->to_list)) {
InternetAddressList *recipients =
- g_mime_message_get_recipients(mime_message,
- GMIME_RECIPIENT_TYPE_TO);
+ g_mime_message_get_addresses(mime_message,
+ GMIME_ADDRESS_TYPE_TO);
internet_address_list_append(recipients, ia_list);
}
if ((ia_list = message->headers->cc_list)) {
InternetAddressList *recipients =
- g_mime_message_get_recipients(mime_message,
- GMIME_RECIPIENT_TYPE_CC);
+ g_mime_message_get_addresses(mime_message,
+ GMIME_ADDRESS_TYPE_CC);
internet_address_list_append(recipients, ia_list);
}
if ((ia_list = message->headers->bcc_list)) {
InternetAddressList *recipients =
- g_mime_message_get_recipients(mime_message,
- GMIME_RECIPIENT_TYPE_BCC);
+ g_mime_message_get_addresses(mime_message,
+ GMIME_ADDRESS_TYPE_BCC);
internet_address_list_append(recipients, ia_list);
}
if (message->headers->dispnotify_to != NULL) {
- tmp = internet_address_list_to_string(message->headers->dispnotify_to, TRUE);
+ tmp = internet_address_list_to_string(message->headers->dispnotify_to,
+ NULL, TRUE);
if (tmp != NULL) {
g_mime_object_append_header(GMIME_OBJECT(mime_message),
- "Disposition-Notification-To", tmp);
+ "Disposition-Notification-To", tmp, NULL);
g_free(tmp);
}
}
@@ -1467,14 +1450,14 @@ libbalsa_message_create_mime_message(LibBalsaMessage *message,
for (list = message->headers->user_hdrs; list; list = list->next) {
gchar **pair = list->data;
g_strchug(pair[1]);
- g_mime_object_append_header(GMIME_OBJECT(mime_message), pair[0], pair[1]);
+ g_mime_object_append_header(GMIME_OBJECT(mime_message), pair[0], pair[1], NULL);
#if DEBUG_USER_HEADERS
printf("adding header '%s:%s'\n", pair[0], pair[1]);
#endif
}
tmp = g_strdup_printf("Balsa %s", VERSION);
- g_mime_object_append_header(GMIME_OBJECT(mime_message), "X-Mailer", tmp);
+ g_mime_object_append_header(GMIME_OBJECT(mime_message), "X-Mailer", tmp, NULL);
g_free(tmp);
message->mime_msg = mime_message;
@@ -1509,7 +1492,7 @@ libbalsa_message_postpone(LibBalsaMessage *message,
for (i = 0; extra_headers[i] && extra_headers[i + 1]; i += 2) {
g_mime_object_set_header(GMIME_OBJECT(message->mime_msg), extra_headers[i],
- extra_headers[i + 1]);
+ extra_headers[i + 1], NULL);
}
}
@@ -1633,7 +1616,7 @@ libbalsa_fill_msg_queue_item_from_queu(LibBalsaMessage *message,
if (message->mime_msg != NULL) {
msg_stream = g_mime_stream_mem_new();
libbalsa_mailbox_lock_store(message->mailbox);
- g_mime_object_write_to_stream(GMIME_OBJECT(message->mime_msg), msg_stream);
+ g_mime_object_write_to_stream(GMIME_OBJECT(message->mime_msg), NULL, msg_stream);
libbalsa_mailbox_unlock_store(message->mailbox);
g_mime_stream_reset(msg_stream);
} else {
@@ -1652,7 +1635,7 @@ libbalsa_fill_msg_queue_item_from_queu(LibBalsaMessage *message,
g_object_unref(G_OBJECT(filter));
/* add CRLF, encode dot */
- filter = g_mime_filter_crlf_new(TRUE, TRUE);
+ filter = g_mime_filter_unix2dos_new(TRUE);
g_mime_stream_filter_add(GMIME_STREAM_FILTER(filter_stream), filter);
g_object_unref(G_OBJECT(filter));
diff --git a/src/ab-main.c b/src/ab-main.c
index 6d0d2ef..a0c7797 100644
--- a/src/ab-main.c
+++ b/src/ab-main.c
@@ -1089,7 +1089,8 @@ main(int argc, char *argv[])
bab_init();
libbalsa_real_information_func = (LibBalsaInformationFunc)information_real;
- g_mime_init(GMIME_ENABLE_RFC2047_WORKAROUNDS);
+ g_mime_init();
+ libbalsa_parser_options_init();
/* load address book data */
libbalsa_conf_push_group("Globals");
diff --git a/src/balsa-message.c b/src/balsa-message.c
index 31b24aa..2168a0f 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -1105,9 +1105,9 @@ balsa_message_sender_to_gchar(InternetAddressList * list, gint which)
if (!list)
return g_strdup(_("(No sender)"));
if (which < 0)
- return internet_address_list_to_string(list, FALSE);
+ return internet_address_list_to_string(list, NULL, FALSE);
ia = internet_address_list_get_address (list, which);
- return internet_address_to_string(ia, FALSE);
+ return internet_address_to_string(ia, NULL, FALSE);
}
static void
@@ -2155,7 +2155,7 @@ add_multipart_mixed(BalsaMessage * bm, LibBalsaMessageBody * body,
for (body = body->next; body; body = body->next) {
#ifdef HAVE_GPGME
GMimeContentType *type =
- g_mime_content_type_new_from_string(body->content_type);
+ g_mime_content_type_parse(libbalsa_parser_options(), body->content_type);
if (libbalsa_message_body_is_inline(body) ||
bm->force_inline ||
@@ -2189,7 +2189,7 @@ add_multipart(BalsaMessage *bm, LibBalsaMessageBody *body,
if (!body->parts)
return body;
- type=g_mime_content_type_new_from_string(body->content_type);
+ type = g_mime_content_type_parse(libbalsa_parser_options(), body->content_type);
if (g_mime_content_type_is_type(type, "multipart", "related")) {
/* FIXME: more processing required see RFC1872 */
@@ -2463,10 +2463,10 @@ handle_mdn_request(GtkWindow *parent, LibBalsaMessage *message)
if (action == BALSA_MDN_REPLY_ASKME) {
gchar *sender;
gchar *reply_to;
- sender = from ? internet_address_to_string (from, FALSE) : NULL;
+ sender = from ? internet_address_to_string (from, NULL, FALSE) : NULL;
reply_to =
- internet_address_list_to_string (message->headers->dispnotify_to,
- FALSE);
+ internet_address_list_to_string(message->headers->dispnotify_to,
+ NULL, FALSE);
gtk_widget_show_all (create_mdn_dialog (parent, sender, reply_to, mdn,
mdn_ident));
g_free (reply_to);
@@ -2523,7 +2523,7 @@ static LibBalsaMessage *create_mdn_reply (const LibBalsaIdentity *mdn_ident,
/* the first part of the body is an informational note */
body = libbalsa_message_body_new(message);
date = libbalsa_message_date_to_utf8(for_msg, balsa_app.date_string);
- dummy = internet_address_list_to_string(for_msg->headers->to_list, FALSE);
+ dummy = internet_address_list_to_string(for_msg->headers->to_list, NULL, FALSE);
body->buffer = g_strdup_printf(
"The message sent on %s to %s with subject “%s” has been displayed.\n"
"There is no guarantee that the message has been read or understood.\n\n",
diff --git a/src/balsa-mime-widget-message.c b/src/balsa-mime-widget-message.c
index 7adfcde..7f715a1 100644
--- a/src/balsa-mime-widget-message.c
+++ b/src/balsa-mime-widget-message.c
@@ -347,7 +347,8 @@ extbody_send_mail(GtkWidget * button, LibBalsaMessageBody * mime_body)
}
data = libbalsa_message_body_get_parameter(mime_body, "server");
- message->headers->to_list = internet_address_list_parse_string(data);
+ message->headers->to_list =
+ internet_address_list_parse(libbalsa_parser_options(), data);
g_free(data);
/* the original body my have some data to be returned as commands... */
@@ -666,7 +667,7 @@ add_header_address_list(BalsaMessage * bm, GtkGrid * grid,
libbalsa_find_word(header, balsa_app.selected_headers)))
return;
- value = internet_address_list_to_string(list, FALSE);
+ value = internet_address_list_to_string(list, NULL, FALSE);
add_header_gchar(grid, header, label, value, show_all_headers);
@@ -731,14 +732,14 @@ bmw_message_set_headers_d(BalsaMessage * bm,
if (headers->from) {
gchar *from =
- internet_address_list_to_string(headers->from, FALSE);
+ internet_address_list_to_string(headers->from, NULL, FALSE);
add_header_gchar(grid, "from", _("From:"), from, show_all_headers);
g_free(from);
}
if (headers->reply_to) {
gchar *reply_to =
- internet_address_list_to_string(headers->reply_to, FALSE);
+ internet_address_list_to_string(headers->reply_to, NULL, FALSE);
add_header_gchar(grid, "reply-to", _("Reply-To:"), reply_to,
show_all_headers);
g_free(reply_to);
@@ -758,7 +759,7 @@ bmw_message_set_headers_d(BalsaMessage * bm,
if (headers->dispnotify_to) {
gchar *mdn_to =
- internet_address_list_to_string(headers->dispnotify_to, FALSE);
+ internet_address_list_to_string(headers->dispnotify_to, NULL, FALSE);
add_header_gchar(grid, "disposition-notification-to",
_("Disposition-Notification-To:"), mdn_to,
show_all_headers);
diff --git a/src/balsa-mime-widget-vcalendar.c b/src/balsa-mime-widget-vcalendar.c
index 4438fe0..7e28a3d 100644
--- a/src/balsa-mime-widget-vcalendar.c
+++ b/src/balsa-mime-widget-vcalendar.c
@@ -220,7 +220,7 @@ balsa_vevent_widget(LibBalsaVEvent * event, gboolean may_reply,
g_object_ref(event);
g_object_ref(sender);
g_object_set_data_full(G_OBJECT(event), "ev:sender",
- internet_address_to_string(sender, FALSE),
+ internet_address_to_string(sender, NULL, FALSE),
(GDestroyNotify) g_free);
g_object_set_data_full(G_OBJECT(event), "ev:ident",
g_object_ref(vevent_ident),
@@ -295,7 +295,8 @@ vevent_reply(GObject * button, GtkWidget * box)
message = libbalsa_message_new();
message->headers->from = internet_address_list_new();
internet_address_list_add(message->headers->from, ident->ia);
- message->headers->to_list = internet_address_list_parse_string(rcpt);
+ message->headers->to_list =
+ internet_address_list_parse(libbalsa_parser_options(), rcpt);
message->headers->date = time(NULL);
/* create the message subject */
diff --git a/src/balsa-print-object-header.c b/src/balsa-print-object-header.c
index 9c272e1..352a461 100644
--- a/src/balsa-print-object-header.c
+++ b/src/balsa-print-object-header.c
@@ -531,7 +531,7 @@ header_add_list(PangoLayout * layout, GString * header_buf,
balsa_app.shown_headers == HEADERS_ALL ||
libbalsa_find_word(field_id, balsa_app.selected_headers)) ||
!values ||
- !(_value = internet_address_list_to_string(values, FALSE)))
+ !(_value = internet_address_list_to_string(values, NULL, FALSE)))
return;
p_width = p_string_width_from_layout(layout, label);
diff --git a/src/message-window.c b/src/message-window.c
index 5a76993..0d179b2 100644
--- a/src/message-window.c
+++ b/src/message-window.c
@@ -744,7 +744,7 @@ mw_select_part_cb(BalsaMessage * bm, gpointer data)
/* set window title */
if (bm && bm->message) {
from = internet_address_list_to_string(bm->message->headers->from,
- FALSE);
+ NULL, FALSE);
title = g_strdup_printf(_("Message from %s: %s"), from,
LIBBALSA_MESSAGE_GET_SUBJECT(bm->message));
g_free(from);
diff --git a/src/print-gtk.c b/src/print-gtk.c
index ed0a96c..2ac1bed 100644
--- a/src/print-gtk.c
+++ b/src/print-gtk.c
@@ -286,7 +286,7 @@ begin_print(GtkPrintOperation * operation, GtkPrintContext * context,
if (pdata->message->headers->from) {
gchar *from =
- internet_address_list_to_string(pdata->message->headers->from, FALSE);
+ internet_address_list_to_string(pdata->message->headers->from, NULL, FALSE);
libbalsa_utf8_sanitize(&from, balsa_app.convert_unknown_8bit,
NULL);
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index 8eab501..05349ff 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -510,8 +510,8 @@ delete_handler(BalsaSendmsg * bsmsg)
ia = internet_address_list_get_address(list, 0);
if (ia) {
tmp = ia->name;
- if (!tmp || !*tmp)
- tmp = free_me = internet_address_to_string(ia, FALSE);
+ if (tmp == NULL || *tmp == '\0')
+ tmp = free_me = internet_address_to_string(ia, NULL, FALSE);
}
if (!tmp || !*tmp)
tmp = _("(No name)");
@@ -844,7 +844,7 @@ sw_edit_activated(GSimpleAction * action,
InternetAddressList *list =
libbalsa_address_view_get_list(bsmsg->recipient_view,
address_types[type]);
- gchar *p = internet_address_list_to_string(list, FALSE);
+ gchar *p = internet_address_list_to_string(list, NULL, FALSE);
g_object_unref(list);
fprintf(tmp, "%s %s\n", _(address_types[type]), p);
g_free(p);
@@ -1118,7 +1118,8 @@ update_bsmsg_identity(BalsaSendmsg* bsmsg, LibBalsaIdentity* ident)
bcc_list =
libbalsa_address_view_get_list(bsmsg->recipient_view, "BCC:");
- ident_list = internet_address_list_parse_string(bsmsg->ident->bcc);
+ ident_list =
+ internet_address_list_parse(libbalsa_parser_options(), bsmsg->ident->bcc);
if (ident_list) {
/* Remove any Bcc addresses that came from the old identity
* from the list. */
@@ -1147,7 +1148,8 @@ update_bsmsg_identity(BalsaSendmsg* bsmsg, LibBalsaIdentity* ident)
}
/* Add the new Bcc addresses, if any: */
- ident_list = internet_address_list_parse_string(ident->bcc);
+ ident_list =
+ internet_address_list_parse(libbalsa_parser_options(), ident->bcc);
if (ident_list) {
internet_address_list_append(bcc_list, ident_list);
g_object_unref(ident_list);
@@ -1669,7 +1671,7 @@ get_fwd_mail_headers(const gchar *mailfile)
/* parse the file */
parser = g_mime_parser_new();
g_mime_parser_init_with_stream(parser, stream);
- message = g_mime_parser_construct_message (parser);
+ message = g_mime_parser_construct_message(parser, libbalsa_parser_options());
g_object_unref (parser);
g_object_unref(stream);
close(fd);
@@ -1683,7 +1685,8 @@ get_fwd_mail_headers(const gchar *mailfile)
if (!subject)
headers->subject = g_strdup(_("(no subject)"));
else
- headers->subject = g_mime_utils_header_decode_text(subject);
+ headers->subject =
+ g_mime_utils_header_decode_text(libbalsa_parser_options(), subject);
}
libbalsa_utf8_sanitize(&headers->subject,
balsa_app.convert_unknown_8bit,
@@ -1771,7 +1774,7 @@ add_attachment(BalsaSendmsg * bsmsg, const gchar *filename,
else {
gchar *tmp =
internet_address_list_to_string(attach_data->headers->from,
- FALSE);
+ NULL, FALSE);
utf8name = g_strdup_printf(_("Message from %s, subject: “%s”"),
tmp,
attach_data->headers->subject);
@@ -3514,25 +3517,22 @@ quote_body(BalsaSendmsg * bsmsg, LibBalsaMessageHeaders *headers,
g_free(subject);
if (headers->from) {
- gchar *from =
- internet_address_list_to_string(headers->from,
- FALSE);
+ gchar *from =
+ internet_address_list_to_string(headers->from, NULL, FALSE);
g_string_append_printf(body, "%s %s\n", _("From:"), from);
g_free(from);
}
if (internet_address_list_length(headers->to_list) > 0) {
- gchar *to_list =
- internet_address_list_to_string(headers->to_list,
- FALSE);
+ gchar *to_list =
+ internet_address_list_to_string(headers->to_list, NULL, FALSE);
g_string_append_printf(body, "%s %s\n", _("To:"), to_list);
g_free(to_list);
}
if (internet_address_list_length(headers->cc_list) > 0) {
- gchar *cc_list =
- internet_address_list_to_string(headers->cc_list,
- FALSE);
+ gchar *cc_list =
+ internet_address_list_to_string(headers->cc_list, NULL, FALSE);
g_string_append_printf(body, "%s %s\n", _("CC:"), cc_list);
g_free(cc_list);
}
@@ -6396,7 +6396,7 @@ sendmsg_window_set_title(BalsaSendmsg * bsmsg)
}
list = libbalsa_address_view_get_list(bsmsg->recipient_view, "To:");
- to_string = internet_address_list_to_string(list, FALSE);
+ to_string = internet_address_list_to_string(list, NULL, FALSE);
g_object_unref(list);
title = g_strdup_printf(title_format, to_string ? to_string : "",
diff --git a/src/store-address.c b/src/store-address.c
index 5efd9ae..e1609ed 100644
--- a/src/store-address.c
+++ b/src/store-address.c
@@ -373,7 +373,7 @@ store_address_add_address(StoreAddressInfo * info,
entries = g_new(GtkWidget *, NUM_FIELDS);
info->entries_list = g_list_append(info->entries_list, entries);
- text = internet_address_to_string(ia, FALSE);
+ text = internet_address_to_string(ia, NULL, FALSE);
address = libbalsa_address_new();
address->full_name =
g_strdup(ia->name ? ia->name : group ? group->name : NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]