[balsa] mailbox-remote: declare it derivable
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa] mailbox-remote: declare it derivable
- Date: Fri, 5 Jul 2019 22:51:13 +0000 (UTC)
commit 0e5135c9084c756a05b48abe40a335f2cd12489b
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Fri Jul 5 17:51:12 2019 -0400
mailbox-remote: declare it derivable
Use G_DECLARE_DERIVABLE_TYPE to declare LibBalsaMailboxRemote
and provide libbalsa_mailbox_remote_get_server().
* libbalsa/mailbox_imap.c (libbalsa_mailbox_imap_class_init),
(libbalsa_mailbox_imap_dispose), (libbalsa_mailbox_imap_finalize),
(get_header_cache_path), (get_cache_name_pair),
(libbalsa_mailbox_imap_close), (libbalsa_mailbox_imap_save_config),
(libbalsa_mailbox_imap_load_config),
(libbalsa_mailbox_imap_add_messages),
(libbalsa_mailbox_imap_messages_copy):
* libbalsa/mailbox_imap.h:
* libbalsa/mailbox_pop3.c (libbalsa_mailbox_pop3_class_init),
(libbalsa_mailbox_pop3_init), (libbalsa_mailbox_pop3_finalize),
(libbalsa_mailbox_pop3_new), (libbalsa_mailbox_pop3_open),
(libbalsa_mailbox_pop3_startup), (update_msg_list),
(libbalsa_mailbox_pop3_check), (libbalsa_mailbox_pop3_save_config),
(libbalsa_mailbox_pop3_load_config),
(libbalsa_mailbox_pop3_set_inbox),
(libbalsa_mailbox_pop3_set_msg_size_limit):
* libbalsa/mailbox_pop3.h:
* libbalsa/mailbox_remote.c (libbalsa_mailbox_remote_class_init),
(libbalsa_mailbox_remote_init), (libbalsa_mailbox_remote_dispose),
(libbalsa_mailbox_remote_test_can_reach),
(libbalsa_mailbox_remote_set_server),
(libbalsa_mailbox_remote_get_server):
* libbalsa/mailbox_remote.h:
* libinit_balsa/assistant_page_user.c (create_pop3_mbx),
(create_imap_mbx):
* src/mailbox-conf.c (update_pop_mailbox),
(create_pop_mailbox_dialog):
* src/main-window.c (bw_check_mailbox_list):
ChangeLog | 36 ++++++
libbalsa/mailbox_imap.c | 219 +++++++++++++++++-------------------
libbalsa/mailbox_imap.h | 2 +-
libbalsa/mailbox_pop3.c | 154 ++++++++++---------------
libbalsa/mailbox_pop3.h | 16 +--
libbalsa/mailbox_remote.c | 94 +++++++++-------
libbalsa/mailbox_remote.h | 43 +++----
libinit_balsa/assistant_page_user.c | 26 ++---
src/mailbox-conf.c | 36 +++---
src/main-window.c | 2 +-
10 files changed, 308 insertions(+), 320 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index f26b62b05..e73fd2fb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,39 @@
+2019-07-05 Peter Bloomfield <pbloomfield bellsouth net>
+
+ mailbox-remote: declare it derivable
+
+ Use G_DECLARE_DERIVABLE_TYPE to declare LibBalsaMailboxRemote
+ and provide libbalsa_mailbox_remote_get_server().
+
+ * libbalsa/mailbox_imap.c (libbalsa_mailbox_imap_class_init),
+ (libbalsa_mailbox_imap_dispose), (libbalsa_mailbox_imap_finalize),
+ (get_header_cache_path), (get_cache_name_pair),
+ (libbalsa_mailbox_imap_close), (libbalsa_mailbox_imap_save_config),
+ (libbalsa_mailbox_imap_load_config),
+ (libbalsa_mailbox_imap_add_messages),
+ (libbalsa_mailbox_imap_messages_copy):
+ * libbalsa/mailbox_imap.h:
+ * libbalsa/mailbox_pop3.c (libbalsa_mailbox_pop3_class_init),
+ (libbalsa_mailbox_pop3_init), (libbalsa_mailbox_pop3_finalize),
+ (libbalsa_mailbox_pop3_new), (libbalsa_mailbox_pop3_open),
+ (libbalsa_mailbox_pop3_startup), (update_msg_list),
+ (libbalsa_mailbox_pop3_check), (libbalsa_mailbox_pop3_save_config),
+ (libbalsa_mailbox_pop3_load_config),
+ (libbalsa_mailbox_pop3_set_inbox),
+ (libbalsa_mailbox_pop3_set_msg_size_limit):
+ * libbalsa/mailbox_pop3.h:
+ * libbalsa/mailbox_remote.c (libbalsa_mailbox_remote_class_init),
+ (libbalsa_mailbox_remote_init), (libbalsa_mailbox_remote_dispose),
+ (libbalsa_mailbox_remote_test_can_reach),
+ (libbalsa_mailbox_remote_set_server),
+ (libbalsa_mailbox_remote_get_server):
+ * libbalsa/mailbox_remote.h:
+ * libinit_balsa/assistant_page_user.c (create_pop3_mbx),
+ (create_imap_mbx):
+ * src/mailbox-conf.c (update_pop_mailbox),
+ (create_pop_mailbox_dialog):
+ * src/main-window.c (bw_check_mailbox_list):
+
2019-07-04 Peter Bloomfield <pbloomfield bellsouth net>
mailbox-mh: Declare it final
diff --git a/libbalsa/mailbox_imap.c b/libbalsa/mailbox_imap.c
index e3e91794c..7ca4c80ad 100644
--- a/libbalsa/mailbox_imap.c
+++ b/libbalsa/mailbox_imap.c
@@ -1,6 +1,6 @@
/* -*-mode:c; c-basic-offset:4; -*- */
/* Balsa E-Mail Client
- * Copyright (C) 1997-2016 Stuart Parmenter and others,
+ * Copyright (C) 1997-2019 Stuart Parmenter and others,
* See the file AUTHORS for a list.
*
* This program is free software; you can redistribute it and/or modify
@@ -91,16 +91,12 @@ struct message_info {
LibBalsaMessageFlag user_flags;
};
-static LibBalsaMailboxClass *parent_class = NULL;
-
static off_t ImapCacheSize = 30*1024*1024; /* 30MB */
/* issue message if downloaded part has more than this size */
static unsigned SizeMsgThreshold = 50*1024;
+static void libbalsa_mailbox_imap_dispose(GObject * object);
static void libbalsa_mailbox_imap_finalize(GObject * object);
-static void libbalsa_mailbox_imap_class_init(LibBalsaMailboxImapClass *
- klass);
-static void libbalsa_mailbox_imap_init(LibBalsaMailboxImap * mailbox);
static gboolean libbalsa_mailbox_imap_open(LibBalsaMailbox * mailbox,
GError **err);
static void libbalsa_mailbox_imap_close(LibBalsaMailbox * mailbox,
@@ -204,32 +200,7 @@ static struct message_info *message_info_from_msgno(
#define IMAP_MAILBOX_UID_VALIDITY(mailbox) (LIBBALSA_MAILBOX_IMAP(mailbox)->uid_validity)
-GType
-libbalsa_mailbox_imap_get_type(void)
-{
- static GType mailbox_type = 0;
-
- if (!mailbox_type) {
- static const GTypeInfo mailbox_info = {
- sizeof(LibBalsaMailboxImapClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) libbalsa_mailbox_imap_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(LibBalsaMailboxImap),
- 0, /* n_preallocs */
- (GInstanceInitFunc) libbalsa_mailbox_imap_init
- };
-
- mailbox_type =
- g_type_register_static(LIBBALSA_TYPE_MAILBOX_REMOTE,
- "LibBalsaMailboxImap",
- &mailbox_info, 0);
- }
-
- return mailbox_type;
-}
+G_DEFINE_TYPE(LibBalsaMailboxImap, libbalsa_mailbox_imap, LIBBALSA_TYPE_MAILBOX_REMOTE)
static void
libbalsa_mailbox_imap_class_init(LibBalsaMailboxImapClass * klass)
@@ -240,15 +211,14 @@ libbalsa_mailbox_imap_class_init(LibBalsaMailboxImapClass * klass)
object_class = G_OBJECT_CLASS(klass);
libbalsa_mailbox_class = LIBBALSA_MAILBOX_CLASS(klass);
- parent_class = g_type_class_peek_parent(klass);
-
+ object_class->dispose = libbalsa_mailbox_imap_dispose;
object_class->finalize = libbalsa_mailbox_imap_finalize;
libbalsa_mailbox_class->open_mailbox = libbalsa_mailbox_imap_open;
libbalsa_mailbox_class->close_mailbox = libbalsa_mailbox_imap_close;
libbalsa_mailbox_class->check = libbalsa_mailbox_imap_check;
-
+
libbalsa_mailbox_class->search_iter_free =
libbalsa_mailbox_imap_search_iter_free;
libbalsa_mailbox_class->message_match =
@@ -309,39 +279,43 @@ libbalsa_mailbox_imap_init(LibBalsaMailboxImap * mailbox)
and close requires server for proper operation.
*/
static void
-libbalsa_mailbox_imap_finalize(GObject * object)
+libbalsa_mailbox_imap_dispose(GObject * object)
{
- LibBalsaMailboxImap *mailbox;
+ LibBalsaMailboxImap *mimap;
LibBalsaMailboxRemote *remote;
+ LibBalsaServer *server;
- g_return_if_fail(LIBBALSA_IS_MAILBOX_IMAP(object));
-
- mailbox = LIBBALSA_MAILBOX_IMAP(object);
+ mimap = LIBBALSA_MAILBOX_IMAP(object);
- g_assert(libbalsa_mailbox_get_open_ref(LIBBALSA_MAILBOX(mailbox)) == 0);
+ g_assert(libbalsa_mailbox_get_open_ref(LIBBALSA_MAILBOX(mimap)) == 0);
remote = LIBBALSA_MAILBOX_REMOTE(object);
- g_free(mailbox->path); mailbox->path = NULL;
-
- if(remote->server) {
- g_signal_handlers_disconnect_matched(remote->server,
+ server = libbalsa_mailbox_remote_get_server(remote);
+ if (server != NULL) {
+ g_signal_handlers_disconnect_matched(server,
G_SIGNAL_MATCH_DATA, 0,
(GQuark) 0, NULL, NULL,
remote);
- g_object_unref(G_OBJECT(remote->server));
- remote->server = NULL;
}
- g_array_free(mailbox->sort_ranks, TRUE); mailbox->sort_ranks = NULL;
- if(mailbox->unread_update_id) {
- g_source_remove(mailbox->unread_update_id);
- mailbox->unread_update_id = 0;
+ if (mimap->unread_update_id != 0) {
+ g_source_remove(mimap->unread_update_id);
+ mimap->unread_update_id = 0;
}
- g_list_free_full(mailbox->acls, (GDestroyNotify) imap_user_acl_free);
+ G_OBJECT_CLASS(libbalsa_mailbox_imap_parent_class)->dispose(object);
+}
+
+static void
+libbalsa_mailbox_imap_finalize(GObject * object)
+{
+ LibBalsaMailboxImap *mimap = LIBBALSA_MAILBOX_IMAP(object);
+
+ g_free(mimap->path);
+ g_array_free(mimap->sort_ranks, TRUE);
+ g_list_free_full(mimap->acls, (GDestroyNotify) imap_user_acl_free);
- if (G_OBJECT_CLASS(parent_class)->finalize)
- G_OBJECT_CLASS(parent_class)->finalize(object);
+ G_OBJECT_CLASS(libbalsa_mailbox_imap_parent_class)->finalize(object);
}
LibBalsaMailbox*
@@ -466,37 +440,45 @@ get_cache_dir(gboolean is_persistent)
static gchar*
get_header_cache_path(LibBalsaMailboxImap *mimap)
{
- LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE(mimap)->server;
- gchar *cache_dir = get_cache_dir(TRUE); /* FIXME */
- gchar *header_file = g_strdup_printf("%s@%s-%s-%u-headers2",
- libbalsa_server_get_user(s),
- libbalsa_server_get_host(s),
- (mimap->path ? mimap->path : "INBOX"),
- mimap->uid_validity);
- gchar *encoded_path = libbalsa_urlencode(header_file);
+ LibBalsaMailboxRemote *remote = LIBBALSA_MAILBOX_REMOTE(mimap);
+ LibBalsaServer *server = libbalsa_mailbox_remote_get_server(remote);
+ gchar *cache_dir;
+ gchar *header_file;
+ gchar *encoded_path;
+
+ header_file = g_strdup_printf("%s@%s-%s-%u-headers2",
+ libbalsa_server_get_user(server),
+ libbalsa_server_get_host(server),
+ (mimap->path != NULL ? mimap->path : "INBOX"),
+ mimap->uid_validity);
+ encoded_path = libbalsa_urlencode(header_file);
g_free(header_file);
+
+ cache_dir = get_cache_dir(TRUE); /* FIXME */
header_file = g_build_filename(cache_dir, encoded_path, NULL);
- g_free(cache_dir);
g_free(encoded_path);
+ g_free(cache_dir);
return header_file;
}
static gchar**
-get_cache_name_pair(LibBalsaMailboxImap* mailbox, const gchar *type,
+get_cache_name_pair(LibBalsaMailboxImap *mimap, const gchar *type,
ImapUID uid)
{
- LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE(mailbox)->server;
- LibBalsaImapServer *is = LIBBALSA_IMAP_SERVER(s);
- gboolean is_persistent = libbalsa_imap_server_has_persistent_cache(is);
+ LibBalsaMailboxRemote *remote = LIBBALSA_MAILBOX_REMOTE(mimap);
+ LibBalsaServer *server = libbalsa_mailbox_remote_get_server(remote);
+ LibBalsaImapServer *imap_server = LIBBALSA_IMAP_SERVER(server);
+ gboolean is_persistent = libbalsa_imap_server_has_persistent_cache(imap_server);
gchar **res = g_malloc(3*sizeof(gchar*));
- ImapUID uid_validity = LIBBALSA_MAILBOX_IMAP(mailbox)->uid_validity;
+ ImapUID uid_validity = mimap->uid_validity;
gchar *fname;
res[0] = get_cache_dir(is_persistent);
fname = g_strdup_printf("%s@%s-%s-%u-%u-%s",
- libbalsa_server_get_user(s), libbalsa_server_get_host(s),
- (mailbox->path ? mailbox->path : "INBOX"),
+ libbalsa_server_get_user(server),
+ libbalsa_server_get_host(server),
+ (mimap->path != NULL ? mimap->path : "INBOX"),
uid_validity, uid, type);
res[1] = libbalsa_urlencode(fname);
g_free(fname);
@@ -1168,13 +1150,14 @@ free_messages_info(LibBalsaMailboxImap * mbox)
static void
libbalsa_mailbox_imap_close(LibBalsaMailbox * mailbox, gboolean expunge)
{
- LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE(mailbox)->server;
- LibBalsaImapServer *is = LIBBALSA_IMAP_SERVER(s);
- gboolean is_persistent = libbalsa_imap_server_has_persistent_cache(is);
- LibBalsaMailboxImap *mbox = LIBBALSA_MAILBOX_IMAP(mailbox);
- struct ImapCacheManager *icm = icm_store_cached_data(mbox->handle);
+ LibBalsaMailboxRemote *remote = LIBBALSA_MAILBOX_REMOTE(mailbox);
+ LibBalsaServer *server = libbalsa_mailbox_remote_get_server(remote);
+ LibBalsaImapServer *imap_server = LIBBALSA_IMAP_SERVER(server);
+ gboolean is_persistent = libbalsa_imap_server_has_persistent_cache(imap_server);
+ LibBalsaMailboxImap *mimap = LIBBALSA_MAILBOX_IMAP(mailbox);
+ struct ImapCacheManager *icm = icm_store_cached_data(mimap->handle);
- mbox->opened = FALSE;
+ mimap->opened = FALSE;
g_object_set_data_full(G_OBJECT(mailbox), "cache-manager", icm,
(GDestroyNotify) imap_cache_manager_free);
@@ -1182,26 +1165,26 @@ libbalsa_mailbox_imap_close(LibBalsaMailbox * mailbox, gboolean expunge)
if (expunge) {
if (is_persistent) { /* We appreciate expunge info to simplify
next resync. */
- imap_mbox_expunge_a(mbox->handle);
+ imap_mbox_expunge_a(mimap->handle);
}
- imap_mbox_close(mbox->handle);
+ imap_mbox_close(mimap->handle);
} else
- imap_mbox_unselect(mbox->handle);
+ imap_mbox_unselect(mimap->handle);
/* We have received last notificiations, we can save the cache now. */
if(is_persistent) {
/* Implement only for persistent. Cache dir is shared for all
non-persistent caches. */
- gchar *header_file = get_header_cache_path(mbox);
+ gchar *header_file = get_header_cache_path(mimap);
icm_save_to_file(icm, header_file);
g_free(header_file);
}
clean_cache(mailbox);
- free_messages_info(mbox);
- libbalsa_mailbox_imap_release_handle(mbox);
- mbox->sort_field = -1; /* Invalidate. */
+ free_messages_info(mimap);
+ libbalsa_mailbox_imap_release_handle(mimap);
+ mimap->sort_field = -1; /* Invalidate. */
}
static FILE*
@@ -1668,8 +1651,8 @@ libbalsa_mailbox_imap_save_config(LibBalsaMailbox * mailbox,
libbalsa_server_save_config(LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox));
- if (LIBBALSA_MAILBOX_CLASS(parent_class)->save_config)
- LIBBALSA_MAILBOX_CLASS(parent_class)->save_config(mailbox, prefix);
+ if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_imap_parent_class)->save_config)
+ LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_imap_parent_class)->save_config(mailbox, prefix);
}
static void
@@ -1678,6 +1661,7 @@ libbalsa_mailbox_imap_load_config(LibBalsaMailbox * mailbox,
{
LibBalsaMailboxImap *mimap;
LibBalsaMailboxRemote *remote;
+ LibBalsaImapServer *imap_server;
g_return_if_fail(LIBBALSA_IS_MAILBOX_IMAP(mailbox));
@@ -1694,14 +1678,15 @@ libbalsa_mailbox_imap_load_config(LibBalsaMailbox * mailbox,
}
remote = LIBBALSA_MAILBOX_REMOTE(mailbox);
- remote->server = LIBBALSA_SERVER(libbalsa_imap_server_new_from_config());
+ imap_server = libbalsa_imap_server_new_from_config();
+ libbalsa_mailbox_remote_set_server(remote, LIBBALSA_SERVER(imap_server));
- g_signal_connect(G_OBJECT(remote->server), "config-changed",
+ g_signal_connect(imap_server, "config-changed",
G_CALLBACK(server_host_settings_changed_cb),
(gpointer) mailbox);
- if (LIBBALSA_MAILBOX_CLASS(parent_class)->load_config)
- LIBBALSA_MAILBOX_CLASS(parent_class)->load_config(mailbox, prefix);
+ if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_imap_parent_class)->load_config)
+ LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_imap_parent_class)->load_config(mailbox, prefix);
libbalsa_mailbox_imap_update_url(mimap);
}
@@ -2993,15 +2978,15 @@ libbalsa_mailbox_imap_add_messages(LibBalsaMailbox * mailbox,
if(!imap_sequence_empty(&uid_sequence) &&
g_list_length(macd.outfiles) == imap_sequence_length(&uid_sequence)) {
/* Hurray, server returned UID data on appended messages! */
- LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE(mailbox)->server;
- LibBalsaImapServer *is = LIBBALSA_IMAP_SERVER(s);
- gboolean is_persistent = libbalsa_imap_server_has_persistent_cache(is);
+ LibBalsaServer *server = libbalsa_mailbox_remote_get_server(LIBBALSA_MAILBOX_REMOTE(mailbox));
+ LibBalsaImapServer *imap_server = LIBBALSA_IMAP_SERVER(server);
+ gboolean is_persistent = libbalsa_imap_server_has_persistent_cache(imap_server);
struct append_to_cache_data atcd;
gchar *cache_dir;
- atcd.user = libbalsa_server_get_user(s);
- atcd.host = libbalsa_server_get_host(s);
- atcd.path = mimap->path ? mimap->path : "INBOX";
+ atcd.user = libbalsa_server_get_user(server);
+ atcd.host = libbalsa_server_get_host(server);
+ atcd.path = mimap->path != NULL ? mimap->path : "INBOX";
atcd.cache_dir = cache_dir = get_cache_dir(is_persistent);
atcd.curr_name = macd.outfiles;
atcd.uid_validity = uid_sequence.uid_validity;
@@ -3312,17 +3297,21 @@ libbalsa_mailbox_imap_messages_copy(LibBalsaMailbox * mailbox,
GArray * msgnos,
LibBalsaMailbox * dest, GError **err)
{
- if (LIBBALSA_IS_MAILBOX_IMAP(dest) &&
- LIBBALSA_MAILBOX_REMOTE(dest)->server ==
- LIBBALSA_MAILBOX_REMOTE(mailbox)->server) {
+ LibBalsaMailboxImap *mimap = LIBBALSA_MAILBOX_IMAP(mailbox);
+ LibBalsaMailboxRemote *remote = LIBBALSA_MAILBOX_REMOTE(mimap);
+ LibBalsaServer *server = libbalsa_mailbox_remote_get_server(remote);
+ LibBalsaMailboxImap *mimap_dest = LIBBALSA_MAILBOX_IMAP(dest);
+ LibBalsaMailboxRemote *remote_dest = LIBBALSA_MAILBOX_REMOTE(mimap_dest);
+ LibBalsaServer *server_dest = libbalsa_mailbox_remote_get_server(remote_dest);
+
+ if (server == server_dest) {
gboolean ret;
- LibBalsaMailboxImap *mimap = LIBBALSA_MAILBOX_IMAP(mailbox);
- ImapMboxHandle *handle = LIBBALSA_MAILBOX_IMAP(mailbox)->handle;
+ ImapMboxHandle *handle = mimap->handle;
ImapSequence uid_sequence;
unsigned *seqno = (unsigned*)msgnos->data, *uids;
unsigned im;
g_return_val_if_fail(handle, FALSE);
-
+
imap_sequence_init(&uid_sequence);
/* User server-side copy. */
g_array_sort(msgnos, cmp_msgno);
@@ -3331,10 +3320,10 @@ libbalsa_mailbox_imap_messages_copy(LibBalsaMailbox * mailbox,
ImapMessage * imsg = imap_mbox_handle_get_msg(handle, seqno[im]);
uids[im] = imsg ? imsg->uid : 0;
}
-
+
ret = imap_mbox_handle_copy(handle, msgnos->len,
(guint *) msgnos->data,
- LIBBALSA_MAILBOX_IMAP(dest)->path,
+ mimap_dest->path,
&uid_sequence)
== IMR_OK;
if(!ret) {
@@ -3346,21 +3335,20 @@ libbalsa_mailbox_imap_messages_copy(LibBalsaMailbox * mailbox,
} else if(!imap_sequence_empty(&uid_sequence)) {
/* Copy cache files. */
GDir *dir;
- LibBalsaServer *s = LIBBALSA_MAILBOX_REMOTE(mailbox)->server;
- LibBalsaImapServer *is = LIBBALSA_IMAP_SERVER(s);
- LibBalsaMailboxImap *dst_imap = LIBBALSA_MAILBOX_IMAP(dest);
+ LibBalsaImapServer *imap_server = LIBBALSA_IMAP_SERVER(server);
gboolean is_persistent =
- libbalsa_imap_server_has_persistent_cache(is);
+ libbalsa_imap_server_has_persistent_cache(imap_server);
gchar *dir_name = get_cache_dir(is_persistent);
gchar *src_prefix = g_strdup_printf("%s@%s-%s-%u-",
- libbalsa_server_get_user(s), libbalsa_server_get_host(s),
- (mimap->path
+ libbalsa_server_get_user(server),
+ libbalsa_server_get_host(server),
+ (mimap->path
? mimap->path : "INBOX"),
mimap->uid_validity);
gchar *encoded_path = libbalsa_urlencode(src_prefix);
g_free(src_prefix);
dir = g_dir_open(dir_name, 0, NULL);
- if(dir) {
+ if (dir != NULL) {
const gchar *filename;
size_t prefix_length = strlen(encoded_path);
unsigned nth;
@@ -3379,10 +3367,10 @@ libbalsa_mailbox_imap_messages_copy(LibBalsaMailbox * mailbox,
g_build_filename(dir_name, filename, NULL);
gchar *dst_prefix =
g_strdup_printf("%s@%s-%s-%u-%u%s",
- libbalsa_server_get_user(s),
- libbalsa_server_get_host(s),
- (dst_imap->path
- ? dst_imap->path : "INBOX"),
+ libbalsa_server_get_user(server),
+ libbalsa_server_get_host(server),
+ (mimap_dest->path != NULL ?
+ mimap_dest->path : "INBOX"),
uid_sequence.uid_validity,
nth, tail);
@@ -3402,7 +3390,8 @@ libbalsa_mailbox_imap_messages_copy(LibBalsaMailbox * mailbox,
}
/* Couldn't use server-side copy, fall back to default method. */
- return parent_class->messages_copy(mailbox, msgnos, dest, err);
+ return LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_imap_parent_class)->
+ messages_copy(mailbox, msgnos, dest, err);
}
void
diff --git a/libbalsa/mailbox_imap.h b/libbalsa/mailbox_imap.h
index f1a19caf7..ae81a3529 100644
--- a/libbalsa/mailbox_imap.h
+++ b/libbalsa/mailbox_imap.h
@@ -1,6 +1,6 @@
/* -*-mode:c; c-style:k&r; c-basic-offset:4; -*- */
/* Balsa E-Mail Client
- * Copyright (C) 1997-2016 Stuart Parmenter and others,
+ * Copyright (C) 1997-2019 Stuart Parmenter and others,
* See the file AUTHORS for a list.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/libbalsa/mailbox_pop3.c b/libbalsa/mailbox_pop3.c
index b6436f262..06b810fdf 100644
--- a/libbalsa/mailbox_pop3.c
+++ b/libbalsa/mailbox_pop3.c
@@ -1,7 +1,7 @@
/* -*-mode:c; c-style:k&r; c-basic-offset:4; -*- */
/* Balsa E-Mail Client
*
- * Copyright (C) 1997-2016 Stuart Parmenter and others,
+ * Copyright (C) 1997-2019 Stuart Parmenter and others,
* See the file AUTHORS for a list.
*
* This program is free software; you can redistribute it and/or modify
@@ -40,23 +40,18 @@
enum {
LAST_SIGNAL
};
-static LibBalsaMailboxClass *parent_class = NULL;
-struct _LibBalsaMailboxPop3Class {
+struct _LibBalsaMailboxPOP3Class {
LibBalsaMailboxRemoteClass klass;
- void (*config_changed) (LibBalsaMailboxPop3* mailbox);
+ void (*config_changed) (LibBalsaMailboxPOP3 *mailbox_pop3);
};
static void libbalsa_mailbox_pop3_finalize(GObject * object);
-static void libbalsa_mailbox_pop3_class_init(LibBalsaMailboxPop3Class *
- klass);
-static void libbalsa_mailbox_pop3_init(LibBalsaMailboxPop3 * mailbox);
static gboolean libbalsa_mailbox_pop3_open(LibBalsaMailbox * mailbox,
GError **err);
static void libbalsa_mailbox_pop3_check(LibBalsaMailbox * mailbox);
-
static void libbalsa_mailbox_pop3_save_config(LibBalsaMailbox * mailbox,
const gchar * prefix);
static void libbalsa_mailbox_pop3_load_config(LibBalsaMailbox * mailbox,
@@ -65,36 +60,10 @@ static void libbalsa_mailbox_pop3_load_config(LibBalsaMailbox * mailbox,
#define MBOX_POP3_ERROR (g_quark_from_static_string("mailbox-pop3"))
-
-GType
-libbalsa_mailbox_pop3_get_type(void)
-{
- static GType mailbox_type = 0;
-
- if (!mailbox_type) {
- static const GTypeInfo mailbox_info = {
- sizeof(LibBalsaMailboxPop3Class),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) libbalsa_mailbox_pop3_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(LibBalsaMailboxPop3),
- 0, /* n_preallocs */
- (GInstanceInitFunc) libbalsa_mailbox_pop3_init
- };
-
- mailbox_type =
- g_type_register_static(LIBBALSA_TYPE_MAILBOX_REMOTE,
- "LibBalsaMailboxPOP3",
- &mailbox_info, 0);
- }
-
- return mailbox_type;
-}
+G_DEFINE_TYPE(LibBalsaMailboxPOP3, libbalsa_mailbox_pop3, LIBBALSA_TYPE_MAILBOX_REMOTE)
static void
-libbalsa_mailbox_pop3_class_init(LibBalsaMailboxPop3Class * klass)
+libbalsa_mailbox_pop3_class_init(LibBalsaMailboxPOP3Class * klass)
{
GObjectClass *object_class;
LibBalsaMailboxClass *libbalsa_mailbox_class;
@@ -102,8 +71,6 @@ libbalsa_mailbox_pop3_class_init(LibBalsaMailboxPop3Class * klass)
object_class = G_OBJECT_CLASS(klass);
libbalsa_mailbox_class = LIBBALSA_MAILBOX_CLASS(klass);
- parent_class = g_type_class_peek_parent(klass);
-
object_class->finalize = libbalsa_mailbox_pop3_finalize;
libbalsa_mailbox_class->open_mailbox = libbalsa_mailbox_pop3_open;
@@ -117,38 +84,38 @@ libbalsa_mailbox_pop3_class_init(LibBalsaMailboxPop3Class * klass)
}
static void
-libbalsa_mailbox_pop3_init(LibBalsaMailboxPop3 * mailbox)
+libbalsa_mailbox_pop3_init(LibBalsaMailboxPOP3 * mailbox_pop3)
{
- LibBalsaMailboxRemote *remote;
- mailbox->check = FALSE;
- mailbox->delete_from_server = FALSE;
- mailbox->inbox = NULL;
- mailbox->msg_size_limit = -1;
-
- mailbox->filter = FALSE;
- mailbox->filter_cmd = g_strdup("procmail -f -");
- remote = LIBBALSA_MAILBOX_REMOTE(mailbox);
- remote->server = libbalsa_server_new();
- libbalsa_server_set_protocol(remote->server, "pop3");
+ LibBalsaMailboxRemote *remote = LIBBALSA_MAILBOX_REMOTE(mailbox_pop3);
+ LibBalsaServer *server;
+
+ mailbox_pop3->check = FALSE;
+ mailbox_pop3->delete_from_server = FALSE;
+ mailbox_pop3->inbox = NULL;
+ mailbox_pop3->msg_size_limit = -1;
+
+ mailbox_pop3->filter = FALSE;
+ mailbox_pop3->filter_cmd = g_strdup("procmail -f -");
+
+ server = libbalsa_server_new();
+ libbalsa_server_set_protocol(server, "pop3");
+ libbalsa_mailbox_remote_set_server(remote, server);
}
static void
libbalsa_mailbox_pop3_finalize(GObject * object)
{
- LibBalsaMailboxRemote *remote = LIBBALSA_MAILBOX_REMOTE(object);
- LibBalsaMailboxPop3 *mailbox = LIBBALSA_MAILBOX_POP3(object);
+ LibBalsaMailboxPOP3 *mailbox_pop3 = LIBBALSA_MAILBOX_POP3(object);
- g_object_unref(G_OBJECT(remote->server));
- g_free(mailbox->filter_cmd);
+ g_free(mailbox_pop3->filter_cmd);
- if (G_OBJECT_CLASS(parent_class)->finalize)
- G_OBJECT_CLASS(parent_class)->finalize(object);
+ G_OBJECT_CLASS(libbalsa_mailbox_pop3_parent_class)->finalize(object);
}
-LibBalsaMailboxPop3*
+LibBalsaMailboxPOP3*
libbalsa_mailbox_pop3_new(void)
{
- LibBalsaMailboxPop3 *mailbox_pop3;
+ LibBalsaMailboxPOP3 *mailbox_pop3;
mailbox_pop3 = g_object_new(LIBBALSA_TYPE_MAILBOX_POP3, NULL);
@@ -159,8 +126,6 @@ libbalsa_mailbox_pop3_new(void)
static gboolean
libbalsa_mailbox_pop3_open(LibBalsaMailbox * mailbox, GError **err)
{
- g_return_val_if_fail(LIBBALSA_IS_MAILBOX_POP3(mailbox), FALSE);
-
/* FIXME: it should never be called. */
g_print("Opened a POP3 mailbox!\n");
@@ -473,7 +438,7 @@ message_cb(const gchar *buffer,
static NetClientPop *
libbalsa_mailbox_pop3_startup(LibBalsaServer *server,
- LibBalsaMailboxPop3 *mailbox_pop3,
+ LibBalsaMailboxPOP3 *mailbox_pop3,
const gchar *name,
GList **msg_list)
{
@@ -559,7 +524,7 @@ libbalsa_mailbox_pop3_startup(LibBalsaServer *server,
static GList *
update_msg_list(struct fetch_data *fd,
- const LibBalsaMailboxPop3 *mailbox_pop3,
+ const LibBalsaMailboxPOP3 *mailbox_pop3,
GHashTable **current_uids,
LibBalsaServer *server,
GList *msg_list)
@@ -645,7 +610,7 @@ update_msg_list(struct fetch_data *fd,
static void
libbalsa_mailbox_pop3_check(LibBalsaMailbox * mailbox)
{
- LibBalsaMailboxPop3 *mailbox_pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
+ LibBalsaMailboxPOP3 *mailbox_pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
LibBalsaServer *server;
NetClientPop *pop;
GList *msg_list;
@@ -738,24 +703,22 @@ static void
libbalsa_mailbox_pop3_save_config(LibBalsaMailbox * mailbox,
const gchar * prefix)
{
- LibBalsaMailboxPop3 *pop;
-
- g_return_if_fail(LIBBALSA_IS_MAILBOX_POP3(mailbox));
-
- pop = LIBBALSA_MAILBOX_POP3(mailbox);
+ LibBalsaMailboxPOP3 *mailbox_pop3;
libbalsa_server_save_config(LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox));
- libbalsa_conf_set_bool("Check", pop->check);
- libbalsa_conf_set_bool("Delete", pop->delete_from_server);
- libbalsa_conf_set_bool("DisableApop", pop->disable_apop);
- libbalsa_conf_set_bool("EnablePipe", pop->enable_pipe);
- libbalsa_conf_set_bool("Filter", pop->filter);
- if(pop->filter_cmd)
- libbalsa_conf_set_string("FilterCmd", pop->filter_cmd);
+ mailbox_pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
- if (LIBBALSA_MAILBOX_CLASS(parent_class)->save_config)
- LIBBALSA_MAILBOX_CLASS(parent_class)->save_config(mailbox, prefix);
+ libbalsa_conf_set_bool("Check", mailbox_pop3->check);
+ libbalsa_conf_set_bool("Delete", mailbox_pop3->delete_from_server);
+ libbalsa_conf_set_bool("DisableApop", mailbox_pop3->disable_apop);
+ libbalsa_conf_set_bool("EnablePipe", mailbox_pop3->enable_pipe);
+ libbalsa_conf_set_bool("Filter", mailbox_pop3->filter);
+ if (mailbox_pop3->filter_cmd != NULL)
+ libbalsa_conf_set_string("FilterCmd", mailbox_pop3->filter_cmd);
+
+ if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_pop3_parent_class)->save_config != NULL)
+ LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_pop3_parent_class)->save_config(mailbox, prefix);
}
@@ -763,44 +726,45 @@ static void
libbalsa_mailbox_pop3_load_config(LibBalsaMailbox * mailbox,
const gchar * prefix)
{
- LibBalsaMailboxPop3 *pop;
-
- g_return_if_fail(LIBBALSA_IS_MAILBOX_POP3(mailbox));
+ LibBalsaMailboxPOP3 *mailbox_pop3;
- pop = LIBBALSA_MAILBOX_POP3(mailbox);
+ mailbox_pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
libbalsa_server_load_config(LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox));
- pop->check = libbalsa_conf_get_bool("Check=false");
- pop->delete_from_server = libbalsa_conf_get_bool("Delete=false");
- pop->disable_apop = libbalsa_conf_get_bool("DisableApop=false");
- pop->enable_pipe = libbalsa_conf_get_bool("EnablePipe=false");
- pop->filter = libbalsa_conf_get_bool("Filter=false");
- g_free(pop->filter_cmd);
- pop->filter_cmd = libbalsa_conf_get_string("FilterCmd");
- if(pop->filter_cmd && *pop->filter_cmd == '\0') {
- g_free(pop->filter_cmd); pop->filter_cmd = NULL;
+ mailbox_pop3->check = libbalsa_conf_get_bool("Check=false");
+ mailbox_pop3->delete_from_server = libbalsa_conf_get_bool("Delete=false");
+ mailbox_pop3->disable_apop = libbalsa_conf_get_bool("DisableApop=false");
+ mailbox_pop3->enable_pipe = libbalsa_conf_get_bool("EnablePipe=false");
+ mailbox_pop3->filter = libbalsa_conf_get_bool("Filter=false");
+
+ g_free(mailbox_pop3->filter_cmd);
+ mailbox_pop3->filter_cmd = libbalsa_conf_get_string("FilterCmd");
+ if (mailbox_pop3->filter_cmd != NULL && mailbox_pop3->filter_cmd[0] == '\0') {
+ g_free(mailbox_pop3->filter_cmd);
+ mailbox_pop3->filter_cmd = NULL;
}
- if (LIBBALSA_MAILBOX_CLASS(parent_class)->load_config)
- LIBBALSA_MAILBOX_CLASS(parent_class)->load_config(mailbox, prefix);
+ if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_pop3_parent_class)->load_config != NULL)
+ LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_pop3_parent_class)->load_config(mailbox, prefix);
}
void
libbalsa_mailbox_pop3_set_inbox(LibBalsaMailbox *mailbox,
LibBalsaMailbox *inbox)
{
- LibBalsaMailboxPop3 *mailbox_pop3;
+ LibBalsaMailboxPOP3 *mailbox_pop3;
g_return_if_fail(LIBBALSA_IS_MAILBOX_POP3(mailbox));
+ g_return_if_fail(LIBBALSA_IS_MAILBOX(inbox));
mailbox_pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
- mailbox_pop3->inbox=inbox;
+ mailbox_pop3->inbox=inbox;
}
void
-libbalsa_mailbox_pop3_set_msg_size_limit(LibBalsaMailboxPop3 *mailbox_pop3,
+libbalsa_mailbox_pop3_set_msg_size_limit(LibBalsaMailboxPOP3 *mailbox_pop3,
gint sz_limit)
{
mailbox_pop3->msg_size_limit = sz_limit;
diff --git a/libbalsa/mailbox_pop3.h b/libbalsa/mailbox_pop3.h
index 1e345a234..4c2ed7f7a 100644
--- a/libbalsa/mailbox_pop3.h
+++ b/libbalsa/mailbox_pop3.h
@@ -1,7 +1,7 @@
/* -*-mode:c; c-style:k&r; c-basic-offset:4; -*- */
/* Balsa E-Mail Client
*
- * Copyright (C) 1997-2016 Stuart Parmenter and others,
+ * Copyright (C) 1997-2019 Stuart Parmenter and others,
* See the file AUTHORS for a list.
*
* This program is free software; you can redistribute it and/or modify
@@ -25,10 +25,10 @@
(libbalsa_mailbox_pop3_get_type())
#define LIBBALSA_MAILBOX_POP3(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), LIBBALSA_TYPE_MAILBOX_POP3, \
- LibBalsaMailboxPop3))
+ LibBalsaMailboxPOP3))
#define LIBBALSA_MAILBOX_POP3_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), LIBBALSA_TYPE_MAILBOX_POP3, \
- LibBalsaMailboxPop3Class))
+ LibBalsaMailboxPOP3Class))
#define LIBBALSA_IS_MAILBOX_POP3(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIBBALSA_TYPE_MAILBOX_POP3))
#define LIBBALSA_IS_MAILBOX_POP3_CLASS(klass) \
@@ -36,10 +36,10 @@
GType libbalsa_mailbox_pop3_get_type(void);
-typedef struct _LibBalsaMailboxPop3 LibBalsaMailboxPop3;
-typedef struct _LibBalsaMailboxPop3Class LibBalsaMailboxPop3Class;
+typedef struct _LibBalsaMailboxPOP3 LibBalsaMailboxPOP3;
+typedef struct _LibBalsaMailboxPOP3Class LibBalsaMailboxPOP3Class;
-struct _LibBalsaMailboxPop3 {
+struct _LibBalsaMailboxPOP3 {
LibBalsaMailboxRemote mailbox;
gboolean check;
@@ -53,10 +53,10 @@ struct _LibBalsaMailboxPop3 {
gboolean enable_pipe; /* ditto */
};
-LibBalsaMailboxPop3 *libbalsa_mailbox_pop3_new(void);
+LibBalsaMailboxPOP3 *libbalsa_mailbox_pop3_new(void);
void libbalsa_mailbox_pop3_set_inbox(LibBalsaMailbox *mailbox,
LibBalsaMailbox *inbox);
-void libbalsa_mailbox_pop3_set_msg_size_limit(LibBalsaMailboxPop3 *mailbox,
+void libbalsa_mailbox_pop3_set_msg_size_limit(LibBalsaMailboxPOP3 *mailbox,
gint sz_limit);
#endif /* __LIBBALSA_MAILBOX_POP3_H__ */
diff --git a/libbalsa/mailbox_remote.c b/libbalsa/mailbox_remote.c
index c9be8e23f..cafcfe542 100644
--- a/libbalsa/mailbox_remote.c
+++ b/libbalsa/mailbox_remote.c
@@ -1,7 +1,7 @@
/* -*-mode:c; c-style:k&r; c-basic-offset:4; -*- */
/* Balsa E-Mail Client
*
- * Copyright (C) 1997-2016 Stuart Parmenter and others,
+ * Copyright (C) 1997-2019 Stuart Parmenter and others,
* See the file AUTHORS for a list.
*
* This program is free software; you can redistribute it and/or modify
@@ -25,55 +25,52 @@
#include "libbalsa.h"
#include "server.h"
-static void libbalsa_mailbox_remote_class_init(LibBalsaMailboxRemoteClass *
- klass);
-static void libbalsa_mailbox_remote_init(LibBalsaMailboxRemote * mailbox);
+static void libbalsa_mailbox_remote_dispose(GObject * object);
static void libbalsa_mailbox_remote_test_can_reach(LibBalsaMailbox * mailbox,
LibBalsaCanReachCallback * cb,
gpointer cb_data);
-GType
-libbalsa_mailbox_remote_get_type(void)
-{
- static GType mailbox_type = 0;
-
- if (!mailbox_type) {
- static const GTypeInfo mailbox_info = {
- sizeof(LibBalsaMailboxClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) libbalsa_mailbox_remote_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(LibBalsaMailbox),
- 0, /* n_preallocs */
- (GInstanceInitFunc) libbalsa_mailbox_remote_init
- };
-
- mailbox_type =
- g_type_register_static(LIBBALSA_TYPE_MAILBOX,
- "LibBalsaMailboxRemote",
- &mailbox_info, 0);
- }
-
- return mailbox_type;
-}
+typedef struct _LibBalsaMailboxRemotePrivate LibBalsaMailboxRemotePrivate;
+struct _LibBalsaMailboxRemotePrivate {
+ LibBalsaServer *server;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(LibBalsaMailboxRemote,
+ libbalsa_mailbox_remote,
+ LIBBALSA_TYPE_MAILBOX)
static void
libbalsa_mailbox_remote_class_init(LibBalsaMailboxRemoteClass * klass)
{
+ GObjectClass *object_class;
LibBalsaMailboxClass *libbalsa_mailbox_class;
+ object_class = G_OBJECT_CLASS(klass);
libbalsa_mailbox_class = LIBBALSA_MAILBOX_CLASS(klass);
+ object_class->dispose = libbalsa_mailbox_remote_dispose;
+
libbalsa_mailbox_class->test_can_reach =
libbalsa_mailbox_remote_test_can_reach;
}
static void
-libbalsa_mailbox_remote_init(LibBalsaMailboxRemote * mailbox)
+libbalsa_mailbox_remote_init(LibBalsaMailboxRemote * remote)
+{
+ LibBalsaMailboxRemotePrivate *priv =
+ libbalsa_mailbox_remote_get_instance_private(remote);
+
+ priv->server = NULL;
+}
+
+static void
+libbalsa_mailbox_remote_dispose(GObject * object)
{
- mailbox->server = NULL;
+ LibBalsaMailboxRemote *remote = (LibBalsaMailboxRemote *) object;
+ LibBalsaMailboxRemotePrivate *priv =
+ libbalsa_mailbox_remote_get_instance_private(remote);
+
+ g_clear_object(&priv->server);
}
/* Test whether a mailbox is reachable */
@@ -83,16 +80,35 @@ libbalsa_mailbox_remote_test_can_reach(LibBalsaMailbox * mailbox,
LibBalsaCanReachCallback * cb,
gpointer cb_data)
{
- libbalsa_server_test_can_reach_full(LIBBALSA_MAILBOX_REMOTE(mailbox)->server,
+ LibBalsaMailboxRemote *remote = LIBBALSA_MAILBOX_REMOTE(mailbox);
+ LibBalsaMailboxRemotePrivate *priv =
+ libbalsa_mailbox_remote_get_instance_private(remote);
+
+ libbalsa_server_test_can_reach_full(priv->server,
cb, cb_data, (GObject *) mailbox);
}
-/* Public method */
+/* Public methods */
-void
-libbalsa_mailbox_remote_set_server(LibBalsaMailboxRemote *m, LibBalsaServer *s)
+void
+libbalsa_mailbox_remote_set_server(LibBalsaMailboxRemote *remote, LibBalsaServer *server)
{
- if(m->server) g_object_unref(G_OBJECT(m->server));
- m->server = s;
- if(s) g_object_ref(G_OBJECT(s));
+ LibBalsaMailboxRemotePrivate *priv =
+ libbalsa_mailbox_remote_get_instance_private(remote);
+
+ g_return_if_fail(LIBBALSA_IS_MAILBOX_REMOTE(remote));
+ g_return_if_fail(server == NULL || LIBBALSA_IS_SERVER(server));
+
+ g_set_object(&priv->server, server);
+}
+
+LibBalsaServer *
+libbalsa_mailbox_remote_get_server(LibBalsaMailboxRemote *remote)
+{
+ LibBalsaMailboxRemotePrivate *priv =
+ libbalsa_mailbox_remote_get_instance_private(remote);
+
+ g_return_val_if_fail(LIBBALSA_IS_MAILBOX_REMOTE(remote), NULL);
+
+ return priv->server;
}
diff --git a/libbalsa/mailbox_remote.h b/libbalsa/mailbox_remote.h
index 1e9594f6b..050e33f4a 100644
--- a/libbalsa/mailbox_remote.h
+++ b/libbalsa/mailbox_remote.h
@@ -1,7 +1,7 @@
/* -*-mode:c; c-style:k&r; c-basic-offset:4; -*- */
/* Balsa E-Mail Client
*
- * Copyright (C) 1997-2016 Stuart Parmenter and others,
+ * Copyright (C) 1997-2019 Stuart Parmenter and others,
* See the file AUTHORS for a list.
*
* This program is free software; you can redistribute it and/or modify
@@ -27,43 +27,26 @@
/* Imap and Pop3 are remote mailboxes
this object doesn't do any real work. it is abstract
-
- this mini-struct greatly helps in getting the server
- from the mailbox without having a Server pointer off of
- all mailboxes.... which arguably we might want eventually,
- and claim that a directory is a "server", but until then...
*/
-#define LIBBALSA_TYPE_MAILBOX_REMOTE \
- (libbalsa_mailbox_remote_get_type())
-#define LIBBALSA_MAILBOX_REMOTE(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIBBALSA_TYPE_MAILBOX_REMOTE, \
- LibBalsaMailboxRemote))
-#define LIBBALSA_MAILBOX_REMOTE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), LIBBALSA_TYPE_MAILBOX, \
- LibBalsaMailboxRemoteClass))
-#define LIBBALSA_IS_MAILBOX_REMOTE(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIBBALSA_TYPE_MAILBOX_REMOTE))
-#define LIBBALSA_IS_MAILBOX_REMOTE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), LIBBALSA_TYPE_MAILBOX_REMOTE))
-
-#define LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox) \
- (LIBBALSA_SERVER(LIBBALSA_MAILBOX_REMOTE(mailbox)->server))
-typedef struct _LibBalsaMailboxRemoteClass LibBalsaMailboxRemoteClass;
+#define LIBBALSA_TYPE_MAILBOX_REMOTE libbalsa_mailbox_remote_get_type()
-struct _LibBalsaMailboxRemote {
- LibBalsaMailbox mailbox;
-
- LibBalsaServer *server;
-};
+G_DECLARE_DERIVABLE_TYPE(LibBalsaMailboxRemote,
+ libbalsa_mailbox_remote,
+ LIBBALSA,
+ MAILBOX_REMOTE,
+ LibBalsaMailbox)
struct _LibBalsaMailboxRemoteClass {
LibBalsaMailboxClass parent_class;
};
-GType libbalsa_mailbox_remote_get_type(void);
+LibBalsaServer *libbalsa_mailbox_remote_get_server(LibBalsaMailboxRemote *remote);
+/* Macro to avoid casts: */
+#define LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox) \
+ libbalsa_mailbox_remote_get_server(LIBBALSA_MAILBOX_REMOTE(mailbox))
-void libbalsa_mailbox_remote_set_server(LibBalsaMailboxRemote* m,
- LibBalsaServer* s);
+void libbalsa_mailbox_remote_set_server(LibBalsaMailboxRemote *remote,
+ LibBalsaServer *server);
#endif /* __LIBBALSA_MAILBOX_REMOTE_H__ */
diff --git a/libinit_balsa/assistant_page_user.c b/libinit_balsa/assistant_page_user.c
index 5f9a92117..66b11f96f 100644
--- a/libinit_balsa/assistant_page_user.c
+++ b/libinit_balsa/assistant_page_user.c
@@ -197,9 +197,9 @@ create_pop3_mbx(const gchar *name, const gchar* host, gint security,
const gchar *login, const gchar *passwd,
gboolean remember)
{
- LibBalsaMailboxPop3 *pop = libbalsa_mailbox_pop3_new();
- LibBalsaMailbox *mbx = LIBBALSA_MAILBOX(pop);
- LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_SERVER(pop);
+ LibBalsaMailboxPOP3 *mailbox_pop3 = libbalsa_mailbox_pop3_new();
+ LibBalsaMailbox *mailbox = LIBBALSA_MAILBOX(mailbox_pop3);
+ LibBalsaServer *server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox);
gchar *mailbox_name;
libbalsa_server_set_username(server, login);
@@ -207,17 +207,17 @@ create_pop3_mbx(const gchar *name, const gchar* host, gint security,
libbalsa_server_set_host(server, host, security);
libbalsa_server_set_remember_password(server, remember);
- mailbox_name = g_strdup(name && *name ? name : host);
- libbalsa_mailbox_set_name(mbx, mailbox_name);
+ mailbox_name = g_strdup(name != NULL && name[0] != '\0' ? name : host);
+ libbalsa_mailbox_set_name(mailbox, mailbox_name);
g_free(mailbox_name);
- pop->check = TRUE;
- pop->disable_apop = FALSE;
- pop->delete_from_server = TRUE;
- pop->filter = FALSE;
- pop->filter_cmd = g_strdup("procmail -f -");
-
- return mbx;
+ mailbox_pop3->check = TRUE;
+ mailbox_pop3->disable_apop = FALSE;
+ mailbox_pop3->delete_from_server = TRUE;
+ mailbox_pop3->filter = FALSE;
+ mailbox_pop3->filter_cmd = g_strdup("procmail -f -");
+
+ return mailbox;
}
static void
@@ -233,7 +233,7 @@ create_imap_mbx(const gchar *name, const gchar* host, NetClientCryptMode securit
libbalsa_server_set_host(server, host, security);
libbalsa_server_set_remember_password(server, remember);
mbnode = balsa_mailbox_node_new_imap_folder(server, NULL);
- mbnode->name = g_strdup(name && *name ? name : host);
+ mbnode->name = g_strdup(name != NULL && name[0] != '\0' ? name : host);
config_folder_add(mbnode, NULL);
/* memory leak? */
diff --git a/src/mailbox-conf.c b/src/mailbox-conf.c
index 265cd0b33..94fc10944 100644
--- a/src/mailbox-conf.c
+++ b/src/mailbox-conf.c
@@ -484,14 +484,14 @@ check_for_blank_fields(GtkWidget G_GNUC_UNUSED *widget,
static void
update_pop_mailbox(MailboxConfWindow *mcw)
{
- LibBalsaMailboxPop3 *pop3;
+ LibBalsaMailboxPOP3 *mailbox_pop3;
LibBalsaMailbox *mailbox;
LibBalsaServer *server;
gchar *name;
- pop3 = LIBBALSA_MAILBOX_POP3(mcw->mailbox);
- server = LIBBALSA_MAILBOX_REMOTE_SERVER(pop3);
- mailbox = (LibBalsaMailbox *) pop3;
+ mailbox_pop3 = LIBBALSA_MAILBOX_POP3(mcw->mailbox);
+ server = LIBBALSA_MAILBOX_REMOTE_SERVER(mailbox_pop3);
+ mailbox = (LibBalsaMailbox *) mailbox_pop3;
/* basic data */
name = g_strdup(libbalsa_server_cfg_get_name(mcw->mb_data.pop3.server_cfg));
@@ -501,15 +501,15 @@ update_pop_mailbox(MailboxConfWindow *mcw)
libbalsa_server_cfg_assign_server(mcw->mb_data.pop3.server_cfg, server);
libbalsa_server_config_changed(server);
- pop3->check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.check));
- pop3->delete_from_server = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
(mcw->mb_data.pop3.delete_from_server));
- pop3->filter = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.filter));
- g_free(pop3->filter_cmd);
- pop3->filter_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(mcw->mb_data.pop3.filter_cmd)));
+ mailbox_pop3->check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.check));
+ mailbox_pop3->delete_from_server = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
(mcw->mb_data.pop3.delete_from_server));
+ mailbox_pop3->filter = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.filter));
+ g_free(mailbox_pop3->filter_cmd);
+ mailbox_pop3->filter_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(mcw->mb_data.pop3.filter_cmd)));
/* advanced settings */
- pop3->disable_apop = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.disable_apop));
- pop3->enable_pipe = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.enable_pipe));
+ mailbox_pop3->disable_apop =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.disable_apop));
+ mailbox_pop3->enable_pipe =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mcw->mb_data.pop3.enable_pipe));
}
/* conf_update_mailbox:
@@ -782,7 +782,7 @@ static GtkWidget *
create_pop_mailbox_dialog(MailboxConfWindow *mcw)
{
LibBalsaMailbox *mailbox = mcw->mailbox;
- LibBalsaMailboxPop3 *pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
+ LibBalsaMailboxPOP3 *mailbox_pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
mcw->window = GTK_DIALOG(gtk_dialog_new_with_buttons(_("Remote Mailbox Configurator"),
GTK_WINDOW(balsa_app.main_window),
@@ -802,25 +802,25 @@ create_pop_mailbox_dialog(MailboxConfWindow *mcw)
/* toggle for deletion from server */
mcw->mb_data.pop3.delete_from_server = libbalsa_server_cfg_add_check(mcw->mb_data.pop3.server_cfg, TRUE,
- _("_Delete messages from server after download"), pop3->delete_from_server, NULL, NULL);
+ _("_Delete messages from server after download"), mailbox_pop3->delete_from_server, NULL, NULL);
/* toggle for check */
mcw->mb_data.pop3.check = libbalsa_server_cfg_add_check(mcw->mb_data.pop3.server_cfg, TRUE, _("_Enable
check for new mail"),
- pop3->check, NULL, NULL);
+ mailbox_pop3->check, NULL, NULL);
/* Procmail */
mcw->mb_data.pop3.filter = libbalsa_server_cfg_add_check(mcw->mb_data.pop3.server_cfg, TRUE,
- _("_Filter messages through procmail"), pop3->filter, G_CALLBACK(check_for_blank_fields), mcw);
+ _("_Filter messages through procmail"), mailbox_pop3->filter, G_CALLBACK(check_for_blank_fields),
mcw);
mcw->mb_data.pop3.filter_cmd = libbalsa_server_cfg_add_entry(mcw->mb_data.pop3.server_cfg, TRUE,
_("Fi_lter Command:"),
- pop3->filter_cmd, G_CALLBACK(check_for_blank_fields), mcw);
+ mailbox_pop3->filter_cmd, G_CALLBACK(check_for_blank_fields), mcw);
/* advanced - toggle for apop */
mcw->mb_data.pop3.disable_apop = libbalsa_server_cfg_add_check(mcw->mb_data.pop3.server_cfg, FALSE,
_("Disable _APOP"),
- pop3->disable_apop, NULL, NULL);
+ mailbox_pop3->disable_apop, NULL, NULL);
/* toggle for enabling pipeling */
mcw->mb_data.pop3.enable_pipe = libbalsa_server_cfg_add_check(mcw->mb_data.pop3.server_cfg, FALSE,
_("Overlap commands"),
- pop3->enable_pipe, NULL, NULL);
+ mailbox_pop3->enable_pipe, NULL, NULL);
/* initially call the check */
check_for_blank_fields(NULL, mcw);
diff --git a/src/main-window.c b/src/main-window.c
index 9257f81a1..36ff76e27 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -3238,7 +3238,7 @@ bw_check_mailbox_list(struct check_messages_thread_info *info, GList *mailbox_li
for ( ; mailbox_list; mailbox_list = mailbox_list->next) {
LibBalsaMailbox *mailbox = BALSA_MAILBOX_NODE(mailbox_list->data)->mailbox;
- LibBalsaMailboxPop3 *pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
+ LibBalsaMailboxPOP3 *pop3 = LIBBALSA_MAILBOX_POP3(mailbox);
bw_pop_mbox_t *bw_pop_mbox;
bw_pop_mbox = g_malloc0(sizeof(bw_pop_mbox_t));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]