talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 888581a8f49f2d5cf819fe92414e3d8494ef1e9a
parent b1f29de94828a155f76d1996fcc7aff269ac88f4
Author: Oliver Lowe <o@olowe.co>
Date:   Wed,  6 Aug 2025 18:09:46 +0700

Remove networkmanager and dbus support

Don't want to have such massive dependency to check whether we can
connect to an IMAP or NNTP server.

Diffstat:
Mclaws-features.h.in | 2--
Mconfigure.ac | 51+--------------------------------------------------
Msrc/Makefile.am | 3---
Msrc/gtk/about.c | 10----------
Msrc/imap.c | 612++++++++++++++++++++++++++++++++++++++-----------------------------------------
Msrc/inc.c | 84+++++++++++++++++++++++++++++++++++++------------------------------------------
Msrc/main.c | 182+------------------------------------------------------------------------------
Msrc/main.h | 6+-----
Msrc/mainwindow.c | 14+++-----------
Msrc/news.c | 136++++++++++++++++++++++++++++++++++---------------------------------------------
Msrc/prefs_common.c | 2--
Msrc/prefs_common.h | 1-
12 files changed, 402 insertions(+), 701 deletions(-)

diff --git a/claws-features.h.in b/claws-features.h.in @@ -1,7 +1,5 @@ -#undef HAVE_DBUS_GLIB #undef HAVE_DIRENT_D_TYPE #undef HAVE_LIBETPAN -#undef HAVE_NETWORKMANAGER_SUPPORT #undef HAVE_STARTUP_NOTIFICATION #undef HAVE_VALGRIND #undef HAVE_SVG diff --git a/configure.ac b/configure.ac @@ -270,14 +270,6 @@ AC_ARG_ENABLE(startup-notification, [ --disable-startup-notification Do not startup notification support], [enable_startup_notification=$enableval], [enable_startup_notification=yes]) -AC_ARG_ENABLE(dbus, - [ --disable-dbus Do not build DBUS support], - [enable_dbus=$enableval], [enable_dbus=yes]) - -AC_ARG_ENABLE(networkmanager, - [ --disable-networkmanager Do not build NetworkManager support], - [enable_networkmanager=$enableval], [enable_networkmanager=yes]) - AC_ARG_ENABLE(libetpan, [ --disable-libetpan Do not build libetpan support for IMAP4/NNTP], [enable_libetpan=$enableval], [enable_libetpan=yes]) @@ -613,7 +605,7 @@ dnl ####################################################################### dnl # Check for startup notification dnl ####################################################################### if test "x$enable_startup_notification" = "xyes"; then - PKG_CHECK_MODULES(STARTUP_NOTIFICATION, libstartup-notification-1.0 >= 0.5, + PKG_CHECK_MODULES(STARTUP_NOTIFICATION, pkg_info libstartup-notification-1.0 >= 0.5, [ AC_DEFINE(HAVE_STARTUP_NOTIFICATION, 1, [Define if we're using libstartup-notification.]) echo "Building with libstartup-notification" @@ -628,45 +620,6 @@ if test "x$enable_startup_notification" = "xyes"; then AC_SUBST(STARTUP_NOTIFICATION_LIBS) fi -dnl ####################################################################### -dnl # Check for D-Bus support -dnl ####################################################################### -if test "x$enable_dbus" = "xyes"; then - PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60, dbus-glib-1 >= 0.60], - [ - AC_DEFINE(HAVE_DBUS_GLIB, 1, [Define if glib bindings of D-Bus are available]) - enable_dbus=yes - ], - [ - echo "D-Bus requirements not met. D-Bus support not activated." - enable_dbus=no - ]) - AC_SUBST(DBUS_CFLAGS) - AC_SUBST(DBUS_LIBS) -fi - -dnl ####################################################################### -dnl # Check for NetworkManager support -dnl ####################################################################### -if test x"$enable_dbus" = xyes; then - if test x"$enable_networkmanager" = xyes; then - PKG_CHECK_MODULES(NETWORKMANAGER_SUPPORT, libnm, - [ - AC_DEFINE(HAVE_NETWORKMANAGER_SUPPORT, 1, [Define if NetworkManager support is to be included.]) - echo "Building with NetworkManager support" - enable_networkmanager=yes - ], - [ - echo "NetworkManager not found." - enable_networkmanager=no - ]) - AC_SUBST(NETWORKMANAGER_SUPPORT_CFLAGS) - fi -else - echo "NetworkManager support deactivated as D-Bus requirements were not met." - enable_networkmanager=no -fi - dnl Libetpan AC_MSG_CHECKING([whether to use libetpan]) if test x"$enable_libetpan" = xyes; then @@ -1019,8 +972,6 @@ echo "enchant : $enable_enchant" echo "IMAP4 (libetpan) : $enable_libetpan" echo "NNTP (libetpan) : $enable_libetpan" echo "Crash dialog : $enable_crash_dialog" -echo "DBUS : $enable_dbus" -echo "NetworkManager : $enable_networkmanager" echo "Manual : $enable_manual" echo "Generic UMPC code : $enable_generic_umpc" echo "SVG support : $enable_svg" diff --git a/src/Makefile.am b/src/Makefile.am @@ -547,7 +547,6 @@ claws_mail_LDADD = \ $(LIBICONV) \ $(STARTUP_NOTIFICATION_LIBS) \ $(LIBETPAN_LIBS) \ - $(DBUS_LIBS) \ $(SVG_LIBS) \ $(CONTACTS_LIBS) @@ -569,9 +568,7 @@ AM_CPPFLAGS = \ $(GPGME_CFLAGS) \ $(LIBETPAN_CPPFLAGS) \ $(STARTUP_NOTIFICATION_CFLAGS) \ - $(DBUS_CFLAGS) \ $(SVG_CFLAGS) \ - $(NETWORKMANAGER_SUPPORT_CFLAGS) \ $(VALGRIND_CFLAGS) \ $(CONTACTS_CFLAGS) diff --git a/src/gtk/about.c b/src/gtk/about.c @@ -482,16 +482,6 @@ static GtkWidget *about_create_child_page_features(void) gtk_text_buffer_insert(buffer, &iter, (gchar *)C_("librSVG", "adds support for SVG themes\n"), -1); -#if HAVE_NETWORKMANAGER_SUPPORT - gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf); -#else - gtk_text_buffer_insert_pixbuf(buffer, &iter, inactive_pixbuf); -#endif - gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (" NetworkManager "), -1, - "bold", NULL); - gtk_text_buffer_insert(buffer, &iter, - (gchar *)C_("NetworkManager", "adds support for detection of network connection changes\n"), -1); - #if USE_OAUTH2 gtk_text_buffer_insert_pixbuf(buffer, &iter, active_pixbuf); #else diff --git a/src/imap.c b/src/imap.c @@ -200,32 +200,32 @@ static gint imap_session_authenticate(IMAPSession *session, PrefsAccount *account); static void imap_session_destroy (Session *session); -static gchar *imap_fetch_msg (Folder *folder, - FolderItem *item, +static gchar *imap_fetch_msg (Folder *folder, + FolderItem *item, gint uid); -static gchar *imap_fetch_msg_full (Folder *folder, - FolderItem *item, +static gchar *imap_fetch_msg_full (Folder *folder, + FolderItem *item, gint uid, gboolean headers, gboolean body); -static void imap_remove_cached_msg (Folder *folder, - FolderItem *item, +static void imap_remove_cached_msg (Folder *folder, + FolderItem *item, MsgInfo *msginfo); static gint imap_add_msg (Folder *folder, FolderItem *dest, - const gchar *file, + const gchar *file, MsgFlags *flags); -static gint imap_add_msgs (Folder *folder, +static gint imap_add_msgs (Folder *folder, FolderItem *dest, GSList *file_list, GHashTable *relation); static gint imap_copy_msg (Folder *folder, - FolderItem *dest, + FolderItem *dest, MsgInfo *msginfo); -static gint imap_copy_msgs (Folder *folder, - FolderItem *dest, - MsgInfoList *msglist, +static gint imap_copy_msgs (Folder *folder, + FolderItem *dest, + MsgInfoList *msglist, GHashTable *relation); static gint search_msgs (Folder *folder, @@ -236,23 +236,23 @@ static gint search_msgs (Folder *folder, SearchProgressNotify progress_cb, gpointer progress_data); -static gint imap_remove_msg (Folder *folder, - FolderItem *item, +static gint imap_remove_msg (Folder *folder, + FolderItem *item, gint uid); -static gint imap_remove_msgs (Folder *folder, - FolderItem *dest, - MsgInfoList *msglist, +static gint imap_remove_msgs (Folder *folder, + FolderItem *dest, + MsgInfoList *msglist, GHashTable *relation); -static gint imap_expunge (Folder *folder, +static gint imap_expunge (Folder *folder, FolderItem *dest); -static gint imap_remove_all_msg (Folder *folder, +static gint imap_remove_all_msg (Folder *folder, FolderItem *item); static gboolean imap_is_msg_changed (Folder *folder, - FolderItem *item, + FolderItem *item, MsgInfo *msginfo); -static gint imap_close (Folder *folder, +static gint imap_close (Folder *folder, FolderItem *item); static gint imap_scan_tree (Folder *folder); @@ -263,9 +263,9 @@ static FolderItem *imap_create_folder (Folder *folder, FolderItem *parent, const gchar *name); static gint imap_rename_folder (Folder *folder, - FolderItem *item, + FolderItem *item, const gchar *name); -static gint imap_remove_folder (Folder *folder, +static gint imap_remove_folder (Folder *folder, FolderItem *item); static FolderItem *imap_folder_item_new (Folder *folder); @@ -331,7 +331,7 @@ static gint imap_status (IMAPSession *session, guint32 *uid_validity, gint *unseen, gboolean block); -static void imap_commit_tags (FolderItem *item, +static void imap_commit_tags (FolderItem *item, MsgInfo *msginfo, GSList *set_tags, GSList *unset_tags); @@ -511,7 +511,7 @@ FolderClass *imap_get_class(void) imap_class.remove_cached_msg = imap_remove_cached_msg; imap_class.commit_tags = imap_commit_tags; } - + return &imap_class; } @@ -562,7 +562,7 @@ static gboolean imap_ping(gpointer data) return FALSE; if (imap_session->busy || !imap_session->authenticated) return TRUE; - + lock_session(imap_session); r = imap_cmd_noop(imap_session); unlock_session(imap_session); @@ -578,7 +578,7 @@ static void imap_disc_session_destroy(IMAPSession *session) return; rfolder = REMOTE_FOLDER(IMAP_SESSION(session)->folder); - + if (rfolder == NULL) return; log_warning(LOG_PROTOCOL, _("IMAP connection broken\n")); @@ -801,7 +801,7 @@ static void imap_folder_init(Folder *folder, const gchar *name, static FolderItem *imap_folder_item_new(Folder *folder) { IMAPFolderItem *item; - + item = g_new0(IMAPFolderItem, 1); item->lastuid = 0; item->uid_next = 0; @@ -823,11 +823,11 @@ static void imap_folder_item_destroy(Folder *folder, FolderItem *_item) static gboolean imap_reset_uid_lists_func(GNode *node, gpointer data) { IMAPFolderItem *item = (IMAPFolderItem *)node->data; - + item->lastuid = 0; g_slist_free(item->uid_list); item->uid_list = NULL; - + return FALSE; } @@ -835,9 +835,9 @@ static void imap_reset_uid_lists(Folder *folder) { if(folder->node == NULL) return; - + /* Destroy all uid lists and rest last uid */ - g_node_traverse(folder->node, G_IN_ORDER, G_TRAVERSE_ALL, -1, imap_reset_uid_lists_func, NULL); + g_node_traverse(folder->node, G_IN_ORDER, G_TRAVERSE_ALL, -1, imap_reset_uid_lists_func, NULL); } static int imap_get_capabilities(IMAPSession *session) @@ -861,7 +861,7 @@ static int imap_get_capabilities(IMAPSession *session) for(cur = clist_begin(capabilities->cap_list) ; cur != NULL ; cur = clist_next(cur)) { - struct mailimap_capability * cap = + struct mailimap_capability * cap = clist_content(cur); if (!cap || cap->cap_data.cap_name == NULL) continue; @@ -874,7 +874,7 @@ static int imap_get_capabilities(IMAPSession *session) return MAILIMAP_NO_ERROR; } -static gboolean imap_has_capability(IMAPSession *session, const gchar *cap) +static gboolean imap_has_capability(IMAPSession *session, const gchar *cap) { GSList *cur; for (cur = session->capability; cur; cur = cur->next) { @@ -954,7 +954,7 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass "\t OAUTH2 %d\n" #endif "\t LOGIN %d\n" - "\t GSSAPI %d\n", + "\t GSSAPI %d\n", imap_has_capability(session, "ANONYMOUS"), imap_has_capability(session, "CRAM-MD5"), imap_has_capability(session, "DIGEST-MD5"), @@ -1004,13 +1004,13 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass ext_info = _("\n\nCRAM-MD5 logins only work if libetpan has been " "compiled with SASL support and the " "CRAM-MD5 SASL plugin is installed."); - } + } if (type == IMAP_AUTH_DIGEST_MD5) { ext_info = _("\n\nDIGEST-MD5 logins only work if libetpan has been " "compiled with SASL support and the " "DIGEST-MD5 SASL plugin is installed."); - } + } if (type == IMAP_AUTH_SCRAM_SHA1) { ext_info = _("\n\nSCRAM-SHA-1 logins only work if libetpan has been " @@ -1057,7 +1057,7 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass if (type == IMAP_AUTH_OAUTH2) { ext_info = _("\n\nOAuth2 error. Check and correct your OAuth2 " "account preferences."); - } + } #endif if (time(NULL) - last_login_err > 10) { if (prefs_common.show_recv_err_dialog) { @@ -1120,8 +1120,8 @@ static IMAPSession *imap_session_get(Folder *folder) g_return_val_if_fail(folder != NULL, NULL); g_return_val_if_fail(FOLDER_CLASS(folder) == &imap_class, NULL); g_return_val_if_fail(folder->account != NULL, NULL); - - if (prefs_common.work_offline && + + if (prefs_common.work_offline && !inc_offline_should_override(FALSE, _("Claws Mail needs network access in order " "to access the IMAP server."))) { @@ -1165,7 +1165,7 @@ new_conn: /* Make sure session is authenticated */ if (!IMAP_SESSION(session)->authenticated) r = imap_session_authenticate(IMAP_SESSION(session), folder->account); - + if (r != MAILIMAP_NO_ERROR || (!is_fatal(r) && !IMAP_SESSION(session)->authenticated)) { rfolder->session = NULL; if (!is_fatal(r)) { @@ -1225,12 +1225,12 @@ static IMAPSession *imap_session_new(Folder * folder, gchar *buf; #ifdef USE_GNUTLS - /* FIXME: IMAP over SSL only... */ + /* FIXME: IMAP over SSL only... */ SSLType ssl_type; port = account->set_imapport ? account->imapport : account->ssl_imap == SSL_TUNNEL ? IMAPS_PORT : IMAP4_PORT; - ssl_type = account->ssl_imap; + ssl_type = account->ssl_imap; #else if (account->ssl_imap != SSL_NONE) { if (alertpanel_full(_("Insecure connection"), @@ -1278,7 +1278,7 @@ static IMAPSession *imap_session_new(Folder * folder, account->recv_server, port); } - else + else #endif { #ifdef USE_GNUTLS @@ -1289,7 +1289,7 @@ static IMAPSession *imap_session_new(Folder * folder, port, proxy_info); } - else + else #endif { r = imap_threaded_connect(folder, @@ -1298,7 +1298,7 @@ static IMAPSession *imap_session_new(Folder * folder, proxy_info); } } - + statusbar_pop_all(); if (r == MAILIMAP_NO_ERROR_AUTHENTICATED) { authenticated = TRUE; @@ -1320,11 +1320,11 @@ static IMAPSession *imap_session_new(Folder * folder, } else { log_error(LOG_PROTOCOL, _("Can't connect to IMAP server: %s:%d\n"), account->recv_server, port); - } - + } + return NULL; } - + session = g_new0(IMAPSession, 1); session_init(SESSION(session), account, FALSE); SESSION(session)->type = SESSION_IMAP; @@ -1368,13 +1368,13 @@ static IMAPSession *imap_session_new(Folder * folder, log_message(LOG_PROTOCOL, "IMAP connection is %s-authenticated\n", (session->authenticated) ? "pre" : "un"); - + session_register_ping(SESSION(session), imap_ping); return session; } -static gint imap_session_authenticate(IMAPSession *session, +static gint imap_session_authenticate(IMAPSession *session, PrefsAccount *account) { gchar *pass, *acc_pass = NULL; @@ -1395,7 +1395,7 @@ try_again: pass = acc_pass; if (!pass && account->imap_auth_type != IMAP_AUTH_ANON && account->imap_auth_type != IMAP_AUTH_GSSAPI) { gchar *tmp_pass; - tmp_pass = input_dialog_query_password_keep(account->recv_server, + tmp_pass = input_dialog_query_password_keep(account->recv_server, account->userid, &(account->session_passwd)); if (!tmp_pass) { @@ -1407,7 +1407,7 @@ try_again: pass = ""; } if ((ok = imap_auth(session, account->userid, pass, account->imap_auth_type)) != MAILIMAP_NO_ERROR) { - + if (!failed && !is_fatal(ok)) { if (acc_pass != NULL) { memset(acc_pass, 0, strlen(acc_pass)); @@ -1435,7 +1435,7 @@ try_again: } return ok; - } + } if (acc_pass) { memset(acc_pass, 0, strlen(acc_pass)); @@ -1450,7 +1450,7 @@ static void imap_session_destroy(Session *session) { if (session->state != SESSION_DISCONNECTED) imap_threaded_disconnect(IMAP_SESSION(session)->folder); - + imap_free_capabilities(IMAP_SESSION(session)); g_free(IMAP_SESSION(session)->mbox); } @@ -1460,25 +1460,25 @@ static gchar *imap_fetch_msg(Folder *folder, FolderItem *item, gint uid) return imap_fetch_msg_full(folder, item, uid, TRUE, TRUE); } -static guint get_file_size_with_crs(const gchar *filename) +static guint get_file_size_with_crs(const gchar *filename) { FILE *fp = NULL; guint cnt = 0; gchar buf[4096]; - + if (filename == NULL) return -1; - + fp = claws_fopen(filename, "rb"); if (!fp) return -1; - + while (claws_fgets(buf, sizeof (buf), fp) != NULL) { cnt += strlen(buf); if (!strstr(buf, "\r\n") && strstr(buf, "\n")) cnt++; } - + claws_fclose(fp); return cnt; } @@ -1541,7 +1541,7 @@ static void imap_commit_tags(FolderItem *item, MsgInfo *msginfo, GSList *tags_se folder = item->folder; debug_print("getting session...\n"); session = imap_session_get(folder); - + if (!session) { debug_print("can't get session\n"); return; @@ -1554,10 +1554,10 @@ static void imap_commit_tags(FolderItem *item, MsgInfo *msginfo, GSList *tags_se return; } - + if (IMAP_FOLDER_ITEM(item)->can_create_flags != ITEM_CAN_CREATE_FLAGS) return; - + if (IMAP_FOLDER_ITEM(item)->batching) { /* instead of performing an UID STORE command for each message change, * as a lot of them can change "together", we just fill in hashtables @@ -1568,28 +1568,28 @@ static void imap_commit_tags(FolderItem *item, MsgInfo *msginfo, GSList *tags_se for (cur = tags_set; cur; cur = cur->next) { gint cur_tag = GPOINTER_TO_INT(cur->data); if (cur_tag) { - ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->tags_set_table, + ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->tags_set_table, GINT_TO_POINTER(cur_tag)); if (ht_data == NULL) { ht_data = g_new0(TagsData, 1); ht_data->str = g_strdup(tags_get_tag(cur_tag)); ht_data->item = IMAP_FOLDER_ITEM(item); - g_hash_table_insert(IMAP_FOLDER_ITEM(item)->tags_set_table, + g_hash_table_insert(IMAP_FOLDER_ITEM(item)->tags_set_table, GINT_TO_POINTER(cur_tag), ht_data); } ht_data->msglist = g_slist_prepend(ht_data->msglist, GINT_TO_POINTER(msginfo->msgnum)); - } + } } for (cur = tags_unset; cur; cur = cur->next) { gint cur_tag = GPOINTER_TO_INT(cur->data); if (cur_tag) { - ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->tags_unset_table, + ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->tags_unset_table, GINT_TO_POINTER(cur_tag)); if (ht_data == NULL) { ht_data = g_new0(TagsData, 1); ht_data->str = g_strdup(tags_get_tag(cur_tag)); ht_data->item = IMAP_FOLDER_ITEM(item); - g_hash_table_insert(IMAP_FOLDER_ITEM(item)->tags_unset_table, + g_hash_table_insert(IMAP_FOLDER_ITEM(item)->tags_unset_table, GINT_TO_POINTER(cur_tag), ht_data); } ht_data->msglist = g_slist_prepend(ht_data->msglist, GINT_TO_POINTER(msginfo->msgnum)); @@ -1599,10 +1599,10 @@ static void imap_commit_tags(FolderItem *item, MsgInfo *msginfo, GSList *tags_se GSList *list_set = NULL; GSList *list_unset = NULL; GSList numlist; - + numlist.data = GINT_TO_POINTER(msginfo->msgnum); numlist.next = NULL; - + debug_print("IMAP changing tags NOW\n"); for (cur = tags_set; cur; cur = cur->next) { gint cur_tag = GPOINTER_TO_INT(cur->data); @@ -1611,7 +1611,7 @@ static void imap_commit_tags(FolderItem *item, MsgInfo *msginfo, GSList *tags_se list_set = g_slist_prepend(list_set, g_strdup(str)); } if (list_set) { - ok = imap_set_message_flags(session, + ok = imap_set_message_flags(session, IMAP_FOLDER_ITEM(item), &numlist, 0, list_set, TRUE); slist_free_strings_full(list_set); if (ok != MAILIMAP_NO_ERROR) { @@ -1626,7 +1626,7 @@ static void imap_commit_tags(FolderItem *item, MsgInfo *msginfo, GSList *tags_se list_unset = g_slist_prepend(list_unset, g_strdup(str)); } if (list_unset) { - ok = imap_set_message_flags(session, + ok = imap_set_message_flags(session, IMAP_FOLDER_ITEM(item), &numlist, 0, list_unset, FALSE); slist_free_strings_full(list_unset); if (ok != MAILIMAP_NO_ERROR) { @@ -1670,7 +1670,7 @@ static gchar *imap_fetch_msg_full(Folder *folder, FolderItem *item, gint uid, if (cached) debug_print("message %d has been already %scached.\n", uid, MSG_IS_FULLY_CACHED(cached->flags) ? "fully ":""); - + if (!cached || !MSG_IS_FULLY_CACHED(cached->flags)) { have_size = get_file_size_with_crs(filename); if (cached && (cached->size <= have_size || !body)) { @@ -1706,7 +1706,7 @@ static gchar *imap_fetch_msg_full(Folder *folder, FolderItem *item, gint uid, debug_print("getting session...\n"); session = imap_session_get(folder); - + if (!session) { g_free(filename); return NULL; @@ -1760,7 +1760,7 @@ static gboolean imap_is_msg_fully_cached(Folder *folder, FolderItem *item, gint gchar *filename; guint size = 0; MsgInfo *cached = msgcache_get_msg(item->cache,uid); - + if (!cached) return FALSE; @@ -1790,17 +1790,17 @@ static gboolean imap_is_msg_fully_cached(Folder *folder, FolderItem *item, gint } if (cached) procmsg_msginfo_free(&cached); - return FALSE; + return FALSE; } void imap_cache_msg(FolderItem *item, gint msgnum) { Folder *folder = NULL; - + if (!item) return; folder = item->folder; - + if (!imap_is_msg_fully_cached(folder, item, msgnum)) { gchar *tmp = imap_fetch_msg_full(folder, item, msgnum, TRUE, TRUE); debug_print("fetched %s\n", tmp); @@ -1808,7 +1808,7 @@ void imap_cache_msg(FolderItem *item, gint msgnum) } } -static gint imap_add_msg(Folder *folder, FolderItem *dest, +static gint imap_add_msg(Folder *folder, FolderItem *dest, const gchar *file, MsgFlags *flags) { gint ret; @@ -1842,7 +1842,7 @@ static gint imap_add_msgs(Folder *folder, FolderItem *dest, GSList *file_list, g_return_val_if_fail(folder != NULL, -1); g_return_val_if_fail(dest != NULL, -1); g_return_val_if_fail(file_list != NULL, -1); - + debug_print("getting session...\n"); session = imap_session_get(folder); if (!session) { @@ -1877,19 +1877,19 @@ static gint imap_add_msgs(Folder *folder, FolderItem *dest, GSList *file_list, iflags |= IMAP_FLAG_HAM; if (!MSG_IS_UNREAD(*fileinfo->flags)) iflags |= IMAP_FLAG_SEEN; - + } - + if (real_file == NULL) real_file = g_strdup(fileinfo->file); - + if (folder_has_parent_of_type(dest, F_QUEUE) || folder_has_parent_of_type(dest, F_OUTBOX) || folder_has_parent_of_type(dest, F_DRAFT) || folder_has_parent_of_type(dest, F_TRASH)) iflags |= IMAP_FLAG_SEEN; - ok = imap_cmd_append(session, IMAP_FOLDER_ITEM(dest), destdir, real_file, iflags, + ok = imap_cmd_append(session, IMAP_FOLDER_ITEM(dest), destdir, real_file, iflags, &new_uid); if (ok != MAILIMAP_NO_ERROR) { @@ -1903,7 +1903,7 @@ static gint imap_add_msgs(Folder *folder, FolderItem *dest, GSList *file_list, debug_print("appended new message as %d\n", new_uid); /* put the local file in the imapcache, so that we don't * have to fetch it back later. */ - + if (new_uid == 0) { missing_uids = TRUE; debug_print("Missing UID (0)\n"); @@ -1914,7 +1914,7 @@ static gint imap_add_msgs(Folder *folder, FolderItem *dest, GSList *file_list, make_dir_hier(cache_path); if (is_dir_exist(cache_path)) { gchar *cache_file = g_strconcat( - cache_path, G_DIR_SEPARATOR_S, + cache_path, G_DIR_SEPARATOR_S, itos(new_uid), NULL); if (copy_file(real_file, cache_file, TRUE) < 0) { g_warning("can't copy %s to %s.bak", real_file, cache_file); @@ -1928,7 +1928,7 @@ static gint imap_add_msgs(Folder *folder, FolderItem *dest, GSList *file_list, } if (relation != NULL) - g_hash_table_insert(relation, fileinfo->msginfo != NULL ? + g_hash_table_insert(relation, fileinfo->msginfo != NULL ? (gpointer) fileinfo->msginfo : (gpointer) fileinfo, GINT_TO_POINTER(new_uid)); if (last_uid < new_uid) { @@ -1937,11 +1937,11 @@ static gint imap_add_msgs(Folder *folder, FolderItem *dest, GSList *file_list, g_free(real_file); } - + statusbar_progress_all(0,0,0); statusbar_pop_all(); - - + + g_free(destdir); imap_scan_required(folder, dest); @@ -1958,7 +1958,7 @@ static gint imap_add_msgs(Folder *folder, FolderItem *dest, GSList *file_list, return last_uid; } -static GSList *flatten_mailimap_set(struct mailimap_set * set) +static GSList *flatten_mailimap_set(struct mailimap_set * set) { GSList *result = NULL; clistiter *list; @@ -1986,10 +1986,10 @@ static GSList *flatten_mailimap_set(struct mailimap_set * set) } debug_print("\n"); } - + return result; } -static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, +static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, MsgInfoList *msglist, GHashTable *relation, gboolean same_dest_ok) { @@ -2005,10 +2005,10 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, g_return_val_if_fail(folder != NULL, -1); g_return_val_if_fail(dest != NULL, -1); g_return_val_if_fail(msglist != NULL, -1); - + debug_print("getting session...\n"); session = imap_session_get(folder); - + if (!session) { return -1; } @@ -2039,7 +2039,7 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, } g_slist_free(infolist); return res; - } + } lock_session(session); /* unlocked later in the function */ @@ -2060,7 +2060,7 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, seq_list = imap_get_lep_set_from_msglist(IMAP_FOLDER(folder), msglist); uid_hash = g_hash_table_new(g_direct_hash, g_direct_equal); - + statusbar_print_all(_("Copying messages...")); for (cur = seq_list; cur != NULL; cur = g_slist_next(cur)) { struct mailimap_set * seq_set; @@ -2074,7 +2074,7 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, lock_session(session); /* unlocked later in the function */ ok = imap_cmd_copy(session, seq_set, destdir, &source, &dest); - + if (is_fatal(ok)) { session = NULL; } @@ -2087,8 +2087,8 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, GSList *s_cur, *d_cur; if (g_slist_length(s_list) == g_slist_length(d_list)) { - for (s_cur = s_list, d_cur = d_list; - s_cur && d_cur; + for (s_cur = s_list, d_cur = d_list; + s_cur && d_cur; s_cur = s_cur->next, d_cur = d_cur->next) { g_hash_table_insert(uid_hash, s_cur->data, d_cur->data); } @@ -2120,7 +2120,7 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, gpointer hashval; hashval = g_hash_table_lookup(uid_hash, GINT_TO_POINTER(msginfo->msgnum)); - + if (hashval != NULL) { gint num = GPOINTER_TO_INT(hashval); g_hash_table_insert(relation, msginfo, @@ -2133,13 +2133,13 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, if (num > 0) { gchar *cache_path = folder_item_get_path(msginfo->folder); gchar *real_file = g_strconcat( - cache_path, G_DIR_SEPARATOR_S, + cache_path, G_DIR_SEPARATOR_S, itos(msginfo->msgnum), NULL); gchar *cache_file = NULL; g_free(cache_path); cache_path = folder_item_get_path(dest); cache_file = g_strconcat( - cache_path, G_DIR_SEPARATOR_S, + cache_path, G_DIR_SEPARATOR_S, itos(num), NULL); if (!is_dir_exist(cache_path)) make_dir_hier(cache_path); @@ -2164,7 +2164,7 @@ static gint imap_do_copy_msgs(Folder *folder, FolderItem *dest, imap_lep_set_free(seq_list); g_free(destdir); - + IMAP_FOLDER_ITEM(dest)->lastuid = 0; IMAP_FOLDER_ITEM(dest)->uid_next = 0; g_slist_free(IMAP_FOLDER_ITEM(dest)->uid_list); @@ -2189,7 +2189,7 @@ static gint imap_copy_msg(Folder *folder, FolderItem *dest, MsgInfo *msginfo) return imap_copy_msgs(folder, dest, &msglist, NULL); } -static gint imap_copy_msgs(Folder *folder, FolderItem *dest, +static gint imap_copy_msgs(Folder *folder, FolderItem *dest, MsgInfoList *msglist, GHashTable *relation) { MsgInfo *msginfo; @@ -2266,7 +2266,7 @@ static IMAPSearchKey* search_make_key(MatcherProp* match, gboolean* is_all) case MATCHCRITERIA_NOT_INREPLYTO: invert = TRUE; matchertype = MATCHCRITERIA_INREPLYTO; break; } - /* + /* * this aborts conversion even for predicates understood by the following code. * while that might seem wasteful, claws local search for information listed below * has proven faster than IMAP search plus network roundtrips. once this changes, @@ -2425,7 +2425,7 @@ static void imap_change_search_charset(IMAPFolder *folder) /* If server supports charset in searches, but the last used one failed, * changed to the next preferred charset. If none are still available, * disable charset searches. - * Charsets are tried in the following order: + * Charsets are tried in the following order: * UTF-8, locale's charset, UTF-7. */ @@ -2593,7 +2593,7 @@ static gint search_msgs (Folder *folder, return result; } - + if (result == MAILIMAP_NO_ERROR) { gint result = 0; @@ -2610,7 +2610,7 @@ static gint search_msgs (Folder *folder, * available charset to search if there still are some. */ g_free(charset_to_use); - + imap_change_search_charset(IMAP_FOLDER(folder)); if (IMAP_FOLDER(folder)->search_charset_supported) return search_msgs(folder, container, msgs, on_server, predicate, @@ -2626,7 +2626,7 @@ static gint search_msgs (Folder *folder, } -static gint imap_do_remove_msgs(Folder *folder, FolderItem *dest, +static gint imap_do_remove_msgs(Folder *folder, FolderItem *dest, MsgInfoList *msglist, GHashTable *relation) { gchar *destdir, *dir; @@ -2634,7 +2634,7 @@ static gint imap_do_remove_msgs(Folder *folder, FolderItem *dest, MsgInfo *msginfo; IMAPSession *session; gint ok = MAILIMAP_NO_ERROR; - + g_return_val_if_fail(folder != NULL, -1); g_return_val_if_fail(dest != NULL, -1); g_return_val_if_fail(msglist != NULL, -1); @@ -2682,7 +2682,7 @@ static gint imap_do_remove_msgs(Folder *folder, FolderItem *dest, g_free(destdir); return ok; } - + session->folder_content_changed = TRUE; unlock_session(session); @@ -2704,7 +2704,7 @@ static gint imap_do_remove_msgs(Folder *folder, FolderItem *dest, return 0; } -static gint imap_remove_msgs(Folder *folder, FolderItem *dest, +static gint imap_remove_msgs(Folder *folder, FolderItem *dest, MsgInfoList *msglist, GHashTable *relation) { MsgInfo *msginfo; @@ -2800,13 +2800,13 @@ static gint imap_scan_tree_real(Folder *folder, gboolean subs_only) return -1; } mailimap_list_result_free(lep_list); - + g_free(real_path); } if (folder->node) item = FOLDER_ITEM(folder->node->data); - + if (item && !item->path && root_folder) { item->path = g_strdup(root_folder); } @@ -2856,7 +2856,7 @@ static gint imap_scan_tree_recursive_dive(IMAPSession *session, FolderItem *item gchar wildcard[3]; clist * lep_list; int r = MAILIMAP_NO_ERROR; - + g_return_val_if_fail(item != NULL, -1); g_return_val_if_fail(item->folder != NULL, -1); g_return_val_if_fail(item->no_sub == FALSE, -1); @@ -2898,7 +2898,7 @@ static gint imap_scan_tree_recursive_dive(IMAPSession *session, FolderItem *item Xstrcat_a(wildcard_path, real_path, wildcard, {g_free(real_path); return MAILIMAP_ERROR_BAD_STATE;}); lep_list = NULL; - + if (subs_only) r = imap_threaded_lsub(folder, "", wildcard_path, &lep_list); else @@ -2915,7 +2915,7 @@ static gint imap_scan_tree_recursive_dive(IMAPSession *session, FolderItem *item lep_list, real_path, FALSE); mailimap_list_result_free(lep_list); } - + g_free(real_path); node = item->node->children; @@ -3051,12 +3051,12 @@ GList *imap_scan_subtree(Folder *folder, FolderItem *item, gboolean unsubs_only, Xstrcat_a(wildcard_path, real_path, wildcard, {g_free(real_path); return NULL;}); lep_list = NULL; - + if (unsubs_only) - statusbar_print_all(_("Looking for unsubscribed folders in %s..."), + statusbar_print_all(_("Looking for unsubscribed folders in %s..."), item->path?item->path:item->name); else - statusbar_print_all(_("Looking for subfolders of %s..."), + statusbar_print_all(_("Looking for subfolders of %s..."), item->path?item->path:item->name); r = imap_threaded_list(folder, "", wildcard_path, &lep_list); @@ -3072,13 +3072,13 @@ GList *imap_scan_subtree(Folder *folder, FolderItem *item, gboolean unsubs_only, for (cur = item_list; cur != NULL; cur = cur->next) { FolderItem *cur_item = FOLDER_ITEM(cur->data); if (recursive) { - tmplist = imap_scan_subtree(folder, cur_item, + tmplist = imap_scan_subtree(folder, cur_item, unsubs_only, recursive); if (tmplist) child_list = g_list_concat(child_list, tmplist); } child_list = g_list_prepend(child_list, - imap_get_real_path(session, + imap_get_real_path(session, IMAP_FOLDER(folder), cur_item->path, &r)); if (is_fatal(r)) { g_free(real_path); @@ -3104,7 +3104,7 @@ GList *imap_scan_subtree(Folder *folder, FolderItem *item, gboolean unsubs_only, for (cur = sub_list; cur != NULL; cur = cur->next) { FolderItem *cur_item = FOLDER_ITEM(cur->data); GList *oldlitem = NULL; - gchar *tmp = imap_get_real_path(session, + gchar *tmp = imap_get_real_path(session, IMAP_FOLDER(folder), cur_item->path, &r); if (r) { g_free(real_path); @@ -3200,7 +3200,7 @@ static gchar *imap_encode_unsafe_chars(const gchar *str) { gchar *ret = NULL, *o_ret; gchar *i; - if (!str) + if (!str) return NULL; ret = g_malloc(3*strlen(str)+1); o_ret = ret; @@ -3229,7 +3229,7 @@ static gchar *imap_item_get_path(Folder *folder, FolderItem *item) { gchar *folder_path, *path; gchar *item_path = NULL; - + g_return_val_if_fail(folder != NULL, NULL); g_return_val_if_fail(folder->account != NULL, NULL); g_return_val_if_fail(item != NULL, NULL); @@ -3241,7 +3241,7 @@ static gchar *imap_item_get_path(Folder *folder, FolderItem *item) item_path = g_strdup(item->path); #else item_path = imap_encode_unsafe_chars(item->path); -#endif +#endif if (g_path_is_absolute(folder_path)) { if (item_path) @@ -3280,7 +3280,7 @@ static FolderItem *imap_create_folder(Folder *folder, FolderItem *parent, gint ok = MAILIMAP_NO_ERROR; gboolean no_select = FALSE, no_sub = FALSE; gboolean exist = FALSE; - + g_return_val_if_fail(folder != NULL, NULL); g_return_val_if_fail(folder->account != NULL, NULL); g_return_val_if_fail(parent != NULL, NULL); @@ -3317,8 +3317,8 @@ static FolderItem *imap_create_folder(Folder *folder, FolderItem *parent, dirpath = g_strconcat(imap_dir, "/", name, NULL); } else dirpath = g_strdup(name); - - + + /* keep trailing directory separator to create a folder that contains sub folder */ @@ -3326,7 +3326,7 @@ static FolderItem *imap_create_folder(Folder *folder, FolderItem *parent, strtailchomp(dirpath, '/'); Xstrdup_a(new_name, name, { - g_free(dirpath); + g_free(dirpath); g_free(imap_path); return NULL;}); @@ -3343,7 +3343,7 @@ static FolderItem *imap_create_folder(Folder *folder, FolderItem *parent, if (strcasecmp(dirpath, "INBOX") != 0) { int r; clist * lep_list; - + r = imap_threaded_list(folder, "", imap_path, &lep_list); if (r != MAILIMAP_NO_ERROR) { imap_handle_error(SESSION(session), NULL, r); @@ -3352,7 +3352,7 @@ static FolderItem *imap_create_folder(Folder *folder, FolderItem *parent, g_free(dirpath); return NULL; } - + if (clist_count(lep_list) > 0) exist = TRUE; mailimap_list_result_free(lep_list); @@ -3374,7 +3374,7 @@ static FolderItem *imap_create_folder(Folder *folder, FolderItem *parent, no_select = cur_item->no_select; no_sub = cur_item->no_sub; g_slist_free(item_list); - } + } mailimap_list_result_free(lep_list); } else { imap_handle_error(SESSION(session), NULL, r); @@ -3394,7 +3394,7 @@ static FolderItem *imap_create_folder(Folder *folder, FolderItem *parent, no_select = cur_item->no_select; no_sub = cur_item->no_sub; g_slist_free(item_list); - } + } mailimap_list_result_free(lep_list); } else { imap_handle_error(SESSION(session), NULL, r); @@ -3592,9 +3592,9 @@ static gint imap_remove_folder_real(Folder *folder, FolderItem *item) ok = imap_cmd_delete(session, path); if (ok != MAILIMAP_NO_ERROR && !is_fatal(ok)) { gchar *tmp = NULL; - + ok = MAILIMAP_NO_ERROR; - tmp = g_strdup_printf("%s%c", path, + tmp = g_strdup_printf("%s%c", path, imap_get_path_separator(session, IMAP_FOLDER(folder), path, &ok)); g_free(path); path = tmp; @@ -3661,13 +3661,13 @@ static void *imap_get_uncached_messages_thread(void *data) gboolean got_alien_tags = FALSE; debug_print("uncached_messages\n"); - + if (session == NULL || item == NULL || item->folder == NULL || FOLDER_CLASS(item->folder) != &imap_class) { stuff->done = TRUE; return NULL; } - + seq_list = imap_get_lep_set_from_numlist(IMAP_FOLDER(item->folder), numlist); debug_print("get msgs info\n"); for (cur = seq_list; cur != NULL; cur = g_slist_next(cur)) { @@ -3675,13 +3675,12 @@ static void *imap_get_uncached_messages_thread(void *data) unsigned int i; int r; carray * env_list; - int count; - + if (session->cancelled) break; - + imapset = cur->data; - + r = imap_threaded_fetch_env(session->folder, imapset, &env_list); if (r != MAILIMAP_NO_ERROR) { @@ -3695,7 +3694,6 @@ static void *imap_get_uncached_messages_thread(void *data) session_set_access_time(SESSION(session)); - count = 0; for(i = 0 ; i < carray_count(env_list) ; i += 2) { struct imap_fetch_env_info * info; MsgInfo * msginfo; @@ -3735,19 +3733,18 @@ static void *imap_get_uncached_messages_thread(void *data) llast = g_slist_append(llast, msginfo); llast = llast->next; } - count ++; } - + imap_fetch_env_free(env_list); } - + if (got_alien_tags) { tags_write_tags(); main_window_reflect_tags_changes(mainwindow_get_mainwindow()); } imap_lep_set_free(seq_list); - + session_set_access_time(SESSION(session)); stuff->done = TRUE; return newlist; @@ -3763,7 +3760,7 @@ static GSList *imap_get_uncached_messages(IMAPSession *session, GSList *result = NULL; GSList * cur; uncached_data *data = g_new0(uncached_data, 1); - + cur = numlist; data->total = g_slist_length(numlist); data->ok = MAILIMAP_NO_ERROR; @@ -3774,15 +3771,15 @@ static GSList *imap_get_uncached_messages(IMAPSession *session, int count; GSList * newlist; GSList * llast; - + llast = NULL; count = 0; newlist = NULL; while (count < MAX_MSG_NUM) { void * p; - + p = cur->data; - + if (newlist == NULL) llast = newlist = g_slist_append(newlist, p); else { @@ -3790,26 +3787,26 @@ static GSList *imap_get_uncached_messages(IMAPSession *session, llast = llast->next; } count ++; - + cur = cur->next; if (cur == NULL) break; } - + data->done = FALSE; data->session = session; data->item = item; data->numlist = newlist; data->cur += count; - - if (prefs_common.work_offline && + + if (prefs_common.work_offline && !inc_offline_should_override(FALSE, _("Claws Mail needs network access in order " "to access the IMAP server."))) { g_free(data); return NULL; } - + partial_result = (GSList *)imap_get_uncached_messages_thread(data); *r = data->ok; @@ -3817,17 +3814,17 @@ static GSList *imap_get_uncached_messages(IMAPSession *session, goto bail; } statusbar_progress_all(data->cur,data->total, 1); - + g_slist_free(newlist); - + result = g_slist_concat(result, partial_result); } bail: g_free(data); - + statusbar_progress_all(0,0,0); statusbar_pop_all(); - + return result; } @@ -3876,10 +3873,10 @@ static gchar imap_refresh_path_separator(IMAPSession *session, IMAPFolder *folde clist * lep_list; int r; gchar separator = '\0'; - + g_return_val_if_fail(session != NULL, '/'); r = imap_threaded_list((Folder *)folder, "", subfolder, &lep_list); - + if (r != MAILIMAP_NO_ERROR) { imap_handle_error(SESSION(session), NULL, r); log_warning(LOG_PROTOCOL, _("LIST failed\n")); @@ -3888,7 +3885,7 @@ static gchar imap_refresh_path_separator(IMAPSession *session, IMAPFolder *folde } if (lep_list != NULL && clist_count(lep_list) > 0) { - clistiter * iter = clist_begin(lep_list); + clistiter * iter = clist_begin(lep_list); struct mailimap_mailbox_list * mb; mb = clist_content(iter); @@ -3924,12 +3921,12 @@ static gchar *imap_get_real_path(IMAPSession *session, IMAPFolder *folder, const { gchar *real_path = NULL; gchar separator; - + g_return_val_if_fail(folder != NULL, NULL); g_return_val_if_fail(path != NULL, NULL); *ok = MAILIMAP_NO_ERROR; - + real_path = imap_utf8_to_modified_utf7(path, FALSE); separator = imap_get_path_separator(session, folder, path, ok); if (*ok == MAILIMAP_NO_ERROR) @@ -3954,17 +3951,17 @@ static gint imap_set_message_flags(IMAPSession *session, if (numlist == NULL || session == NULL) return MAILIMAP_ERROR_BAD_STATE; - + folder = IMAP_FOLDER(session->folder); - + sorted_list = g_slist_copy(numlist); sorted_list = g_slist_sort(sorted_list, g_int_compare); - + cur = g_slist_last(sorted_list); if (cur) total = GPOINTER_TO_INT(cur->data); - + seq_list = imap_get_lep_set_from_numlist(IMAP_FOLDER(session->folder), sorted_list); statusbar_print_all(_("Flagging messages...")); @@ -3972,7 +3969,7 @@ static gint imap_set_message_flags(IMAPSession *session, for(cur = seq_list ; cur != NULL ; cur = g_slist_next(cur)) { struct mailimap_set * imapset = (struct mailimap_set *)cur->data; struct mailimap_set_item *set_item = NULL; - + if (imapset->set_list) set_item = clist_content(clist_begin(imapset->set_list)); else @@ -3994,14 +3991,14 @@ static gint imap_set_message_flags(IMAPSession *session, break; } } - + g_slist_free(sorted_list); statusbar_progress_all(0,0,0); statusbar_pop_all(); imap_lep_set_free(seq_list); - + return ok; } @@ -4062,12 +4059,12 @@ static gint imap_select(IMAPSession *session, IMAPFolder *folder, real_path = imap_get_real_path(session, folder, path, &ok); if (is_fatal(ok)) { g_free(real_path); - return ok; - } + return ok; + } g_slist_free(IMAP_FOLDER_ITEM(item)->ok_flags); IMAP_FOLDER_ITEM(item)->ok_flags = NULL; ok = imap_cmd_select(session, real_path, - exists, recent, unseen, uid_validity, can_create_flags, + exists, recent, unseen, uid_validity, can_create_flags, &(IMAP_FOLDER_ITEM(item)->ok_flags), block); if (ok != MAILIMAP_NO_ERROR) { log_warning(LOG_PROTOCOL, _("can't select folder: %s\n"), real_path); @@ -4079,7 +4076,7 @@ static gint imap_select(IMAPSession *session, IMAPFolder *folder, session->expunge = 0; session->unseen = *unseen; session->uid_validity = *uid_validity; - debug_print("select: exists %d recent %d expunge %d uid_validity %d can_create_flags %d\n", + debug_print("select: exists %d recent %d expunge %d uid_validity %d can_create_flags %d\n", session->exists, session->recent, session->expunge, session->uid_validity, *can_create_flags); } @@ -4105,7 +4102,7 @@ static gint imap_status(IMAPSession *session, IMAPFolder *folder, int got_values; gchar *real_path; guint mask = 0; - + real_path = imap_get_real_path(session, folder, path, &r); if (is_fatal(r)) { g_free(real_path); @@ -4127,7 +4124,7 @@ static gint imap_status(IMAPSession *session, IMAPFolder *folder, mask |= 1 << 4; *unseen = 0; } - + if (session->mbox != NULL && !strcmp(session->mbox, item->item.path)) { r = imap_cmd_close(session); @@ -4137,8 +4134,8 @@ static gint imap_status(IMAPSession *session, IMAPFolder *folder, return r; } } - - r = imap_threaded_status(FOLDER(folder), real_path, + + r = imap_threaded_status(FOLDER(folder), real_path, &data_status, mask); g_free(real_path); @@ -4147,7 +4144,7 @@ static gint imap_status(IMAPSession *session, IMAPFolder *folder, debug_print("status err %d\n", r); return r; } - + if (data_status == NULL || data_status->st_info_list == NULL) { debug_print("data_status %p\n", data_status); if (data_status) { @@ -4156,12 +4153,12 @@ static gint imap_status(IMAPSession *session, IMAPFolder *folder, } return MAILIMAP_ERROR_BAD_STATE; } - + got_values = 0; if (data_status->st_info_list) { for(iter = clist_begin(data_status->st_info_list) ; iter != NULL ; iter = clist_next(iter)) { - struct mailimap_status_info * info; + struct mailimap_status_info * info; info = clist_content(iter); switch (info->st_att) { @@ -4196,7 +4193,7 @@ static gint imap_status(IMAPSession *session, IMAPFolder *folder, } } mailimap_mailbox_data_status_free(data_status); - + if (got_values != mask) { g_warning("status: incomplete values received (%d)", got_values); } @@ -4236,7 +4233,7 @@ static gint imap_cmd_login(IMAPSession *session, return r; } } -#else +#else log_error(LOG_PROTOCOL, _("Connection to %s failed: " "server requires STARTTLS, but Claws Mail " "has been compiled without STARTTLS " @@ -4250,7 +4247,7 @@ static gint imap_cmd_login(IMAPSession *session, } } - log_print(LOG_PROTOCOL, "IMAP> Logging %s to %s using %s\n", + log_print(LOG_PROTOCOL, "IMAP> Logging %s to %s using %s\n", user, SESSION(session)->server, type); @@ -4272,7 +4269,7 @@ static gint imap_cmd_noop(IMAPSession *session) { int r; unsigned int exists, recent, expunge, unseen, uidnext, uidval; - + r = imap_threaded_noop(session->folder, &exists, &recent, &expunge, &unseen, &uidnext, &uidval); if (r != MAILIMAP_NO_ERROR) { imap_handle_error(SESSION(session), NULL, r); @@ -4309,8 +4306,8 @@ static gint imap_cmd_noop(IMAPSession *session) static gint imap_cmd_starttls(IMAPSession *session) { int r; - - r = imap_threaded_starttls(session->folder, + + r = imap_threaded_starttls(session->folder, SESSION(session)->server, SESSION(session)->port); if (r != MAILIMAP_NO_ERROR) { imap_handle_error(SESSION(session), NULL, r); @@ -4367,7 +4364,7 @@ static gint imap_cmd_examine(IMAPSession *session, const gchar *folder, if (r != MAILIMAP_NO_ERROR) { imap_handle_error(SESSION(session), NULL, r); debug_print("examine err %d\n", r); - + return r; } return MAILIMAP_NO_ERROR; @@ -4404,7 +4401,7 @@ static gint imap_cmd_rename(IMAPSession *session, const gchar *old_folder, static gint imap_cmd_delete(IMAPSession *session, const gchar *folder) { int r; - + r = imap_threaded_delete(session->folder, folder); if (r != MAILIMAP_NO_ERROR) { @@ -4431,7 +4428,7 @@ static void *imap_cmd_fetch_thread(void *data) guint32 uid = stuff->uid; const gchar *filename = stuff->filename; int r; - + if (stuff->body) { r = imap_threaded_fetch_content(session->folder, uid, 1, filename); @@ -4461,7 +4458,7 @@ static gint imap_cmd_fetch(IMAPSession *session, guint32 uid, data->headers = headers; data->body = body; - if (prefs_common.work_offline && + if (prefs_common.work_offline && !inc_offline_should_override(FALSE, _("Claws Mail needs network access in order " "to access the IMAP server."))) { @@ -4476,15 +4473,15 @@ static gint imap_cmd_fetch(IMAPSession *session, guint32 uid, } -static gint imap_cmd_append(IMAPSession *session, +static gint imap_cmd_append(IMAPSession *session, IMAPFolderItem *item, const gchar *destfolder, - const gchar *file, IMAPFlags flags, + const gchar *file, IMAPFlags flags, guint32 *new_uid) { struct mailimap_flag_list * flag_list; int r; - + cm_return_val_if_fail(file != NULL, MAILIMAP_ERROR_BAD_STATE); flag_list = imap_flag_to_lep(item, flags, NULL); @@ -4509,7 +4506,7 @@ static gint imap_cmd_copy(IMAPSession *session, struct mailimap_set * set, struct mailimap_set **source, struct mailimap_set **dest) { int r; - + g_return_val_if_fail(session != NULL, MAILIMAP_ERROR_BAD_STATE); g_return_val_if_fail(set != NULL, MAILIMAP_ERROR_BAD_STATE); g_return_val_if_fail(destfolder != NULL, MAILIMAP_ERROR_BAD_STATE); @@ -4523,7 +4520,7 @@ static gint imap_cmd_copy(IMAPSession *session, struct mailimap_set * set, return MAILIMAP_NO_ERROR; } -static gint imap_cmd_store(IMAPSession *session, +static gint imap_cmd_store(IMAPSession *session, IMAPFolderItem *item, struct mailimap_set * set, IMAPFlags flags, GSList *tags, int do_add) @@ -4531,7 +4528,7 @@ static gint imap_cmd_store(IMAPSession *session, int r; struct mailimap_flag_list * flag_list = NULL; struct mailimap_store_att_flags * store_att_flags; - + flag_list = imap_flag_to_lep(item, flags, tags); if (do_add) @@ -4540,22 +4537,22 @@ static gint imap_cmd_store(IMAPSession *session, else store_att_flags = mailimap_store_att_flags_new_remove_flags_silent(flag_list); - + r = imap_threaded_store(session->folder, set, store_att_flags); mailimap_store_att_flags_free(store_att_flags); if (r != MAILIMAP_NO_ERROR) { imap_handle_error(SESSION(session), NULL, r); return r; } - + return MAILIMAP_NO_ERROR; } static gint imap_cmd_expunge(IMAPSession *session) { int r; - - if (prefs_common.work_offline && + + if (prefs_common.work_offline && !inc_offline_should_override(FALSE, _("Claws Mail needs network access in order " "to access the IMAP server."))) { @@ -4578,7 +4575,7 @@ gint imap_expunge(Folder *folder, FolderItem *item) IMAPSession *session = imap_session_get(folder); if (session == NULL) return -1; - + return imap_cmd_expunge(session); } @@ -4628,9 +4625,9 @@ static gboolean imap_rename_folder_func(GNode *node, gpointer data) real_oldpath = imap_get_real_path(session, IMAP_FOLDER(item->folder), item->path, &ok); g_free(item->path); item->path = new_itempath; - + real_newpath = imap_get_real_path(session, IMAP_FOLDER(item->folder), item->path, &ok); - + imap_threaded_subscribe(item->folder, real_oldpath, FALSE); imap_threaded_subscribe(item->folder, real_newpath, TRUE); @@ -4660,12 +4657,12 @@ static gint get_list_of_uids(IMAPSession *session, Folder *folder, IMAPFolderIte item->uid_list = NULL; uidlist = NULL; - + if (folder->account && folder->account->low_bandwidth) { r = imap_threaded_search(folder, IMAP_SEARCH_TYPE_SIMPLE, NULL, NULL, NULL, &lep_uidlist); } - + if (r == MAILIMAP_NO_ERROR) { uidlist = imap_uid_list_from_lep(lep_uidlist, NULL); mailimap_search_result_free(lep_uidlist); @@ -4683,7 +4680,7 @@ static gint get_list_of_uids(IMAPSession *session, Folder *folder, IMAPFolderIte imap_fetch_uid_list_free(lep_uidtab); } } - + if (r != MAILIMAP_NO_ERROR) { imap_handle_error(SESSION(session), NULL, r); return -1; @@ -4715,7 +4712,7 @@ gint imap_get_num_list(Folder *folder, FolderItem *_item, GSList **msgnum_list, gchar *path; debug_print("get_num_list\n"); - + g_return_val_if_fail(folder != NULL, -1); g_return_val_if_fail(item != NULL, -1); g_return_val_if_fail(item->item.path != NULL, -1); @@ -4735,13 +4732,13 @@ gint imap_get_num_list(Folder *folder, FolderItem *_item, GSList **msgnum_list, } } - if (prefs_common.work_offline && + if (prefs_common.work_offline && !inc_offline_should_override(FALSE, _("Claws Mail needs network access in order " "to access the IMAP server."))) { return -1; } - + path = folder_item_get_path(_item); if (!is_dir_exist(path)) { if(is_file_exist(path)) @@ -4755,9 +4752,9 @@ gint imap_get_num_list(Folder *folder, FolderItem *_item, GSList **msgnum_list, g_return_val_if_fail(session != NULL, -1); lock_session(session); - if (FOLDER_ITEM(item)->path) + if (FOLDER_ITEM(item)->path) statusbar_print_all(_("Scanning folder %s/%s..."), - FOLDER_ITEM(item)->folder->name, + FOLDER_ITEM(item)->folder->name, FOLDER_ITEM(item)->path); else statusbar_print_all(_("Scanning folder %s..."), @@ -4796,7 +4793,7 @@ gint imap_get_num_list(Folder *folder, FolderItem *_item, GSList **msgnum_list, debug_print("removing old messages from %s\n", dir); remove_numbered_files_not_in_list(dir, *msgnum_list); g_free(dir); - + debug_print("get_num_list - ok - %i\n", nummsgs); statusbar_pop_all(); item->should_trash_cache = FALSE; @@ -4823,7 +4820,7 @@ static MsgInfo *imap_parse_msg(const gchar *file, FolderItem *item) msginfo = procheader_parse_file(file, flags, FALSE, FALSE); if (!msginfo) return NULL; - + msginfo->plaintext_file = g_strdup(file); msginfo->folder = item; @@ -4836,9 +4833,9 @@ GSList *imap_get_msginfos(Folder *folder, FolderItem *item, IMAPSession *session; MsgInfoList *ret = NULL; gint ok; - + debug_print("get_msginfos\n"); - + g_return_val_if_fail(folder != NULL, NULL); g_return_val_if_fail(item != NULL, NULL); g_return_val_if_fail(msgnum_list != NULL, NULL); @@ -4855,7 +4852,7 @@ GSList *imap_get_msginfos(Folder *folder, FolderItem *item, if (ok != MAILIMAP_NO_ERROR) { return NULL; } - if (!(folder_has_parent_of_type(item, F_DRAFT) || + if (!(folder_has_parent_of_type(item, F_DRAFT) || folder_has_parent_of_type(item, F_QUEUE))) { ret = g_slist_concat(ret, imap_get_uncached_messages(session, item, @@ -4866,7 +4863,7 @@ GSList *imap_get_msginfos(Folder *folder, FolderItem *item, } else { MsgNumberList *sorted_list, *elem, *llast = NULL; gint startnum, lastnum; - + unlock_session(session); sorted_list = g_slist_sort(g_slist_copy(msgnum_list), g_int_compare); @@ -4938,7 +4935,7 @@ gboolean imap_scan_required(Folder *folder, FolderItem *_item) gint ok, exists = 0, unseen = 0; guint32 uid_next = 0, uid_val = 0; gboolean selected_folder; - + g_return_val_if_fail(folder != NULL, FALSE); g_return_val_if_fail(item != NULL, FALSE); g_return_val_if_fail(item->item.folder != NULL, FALSE); @@ -4953,7 +4950,7 @@ gboolean imap_scan_required(Folder *folder, FolderItem *_item) } debug_print("getting session...\n"); session = imap_session_get(folder); - + g_return_val_if_fail(session != NULL, FALSE); lock_session(session); /* unlocked later in the function */ @@ -4998,7 +4995,7 @@ gboolean imap_scan_required(Folder *folder, FolderItem *_item) if (ok != MAILIMAP_NO_ERROR) { return FALSE; } - + debug_print("exists %d, item->item.total_msgs %d\n" "\tunseen %d, item->item.unread_msgs %d\n" "\tuid_next %d, item->uid_next %d\n" @@ -5006,7 +5003,7 @@ gboolean imap_scan_required(Folder *folder, FolderItem *_item) exists, item->item.total_msgs, unseen, item->item.unread_msgs, uid_next, item->uid_next, uid_val, (long)(item->item.mtime)); if (exists != item->item.total_msgs - || unseen != item->item.unread_msgs + || unseen != item->item.unread_msgs || uid_next != item->uid_next || uid_val != item->item.mtime) { debug_print("CHANGED (status)! scan_required\n"); @@ -5103,27 +5100,27 @@ void imap_change_flags(Folder *folder, FolderItem *item, MsgInfo *msginfo, MsgPe */ debug_print("IMAP batch mode on, deferring flags change\n"); if (flags_set) { - ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->flags_set_table, + ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->flags_set_table, GINT_TO_POINTER(flags_set)); if (ht_data == NULL) { ht_data = g_new0(hashtable_data, 1); ht_data->item = IMAP_FOLDER_ITEM(item); - g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_set_table, + g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_set_table, GINT_TO_POINTER(flags_set), ht_data); } ht_data->msglist = g_slist_prepend(ht_data->msglist, GINT_TO_POINTER(msginfo->msgnum)); - } + } if (flags_unset) { - ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->flags_unset_table, + ht_data = g_hash_table_lookup(IMAP_FOLDER_ITEM(item)->flags_unset_table, GINT_TO_POINTER(flags_unset)); if (ht_data == NULL) { ht_data = g_new0(hashtable_data, 1); ht_data->item = IMAP_FOLDER_ITEM(item); - g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_unset_table, + g_hash_table_insert(IMAP_FOLDER_ITEM(item)->flags_unset_table, GINT_TO_POINTER(flags_unset), ht_data); } - ht_data->msglist = g_slist_prepend(ht_data->msglist, - GINT_TO_POINTER(msginfo->msgnum)); + ht_data->msglist = g_slist_prepend(ht_data->msglist, + GINT_TO_POINTER(msginfo->msgnum)); } } else { debug_print("IMAP changing flags\n"); @@ -5151,7 +5148,7 @@ static gint imap_remove_msg(Folder *folder, FolderItem *item, gint uid) IMAPSession *session; gchar *dir; MsgNumberList numlist; - + g_return_val_if_fail(folder != NULL, -1); g_return_val_if_fail(FOLDER_CLASS(folder) == &imap_class, -1); g_return_val_if_fail(item != NULL, -1); @@ -5167,7 +5164,7 @@ static gint imap_remove_msg(Folder *folder, FolderItem *item, gint uid) } numlist.next = NULL; numlist.data = GINT_TO_POINTER(uid); - + ok = imap_set_message_flags (session, IMAP_FOLDER_ITEM(item), &numlist, IMAP_FLAG_DELETED, NULL, TRUE); if (ok != MAILIMAP_NO_ERROR) { @@ -5283,7 +5280,7 @@ static /*gint*/ void *imap_get_flags_thread(void *data) if (unseen_cnt > exists_cnt / 2) reverse_seen = TRUE; - } + } else { if (fitem->unread_msgs > fitem->total_msgs / 2) reverse_seen = TRUE; @@ -5419,7 +5416,7 @@ static /*gint*/ void *imap_get_flags_thread(void *data) bail: if (r == MAILIMAP_NO_ERROR) unlock_session(session); - + for (elem = sorted_list; elem != NULL; elem = g_slist_next(elem)) { MsgInfo *msginfo; MsgPermFlags flags, oldflags; @@ -5472,7 +5469,7 @@ bail: } else { if (flags_hash != NULL) { - flags = GPOINTER_TO_INT(g_hash_table_lookup(flags_hash, + flags = GPOINTER_TO_INT(g_hash_table_lookup(flags_hash, GINT_TO_POINTER(msginfo->msgnum))); } @@ -5481,7 +5478,7 @@ bail: else if (wasnew) flags |= MSG_NEW; flags |= oldflags; - + if (tags_hash != NULL) { GSList *tags = g_hash_table_lookup(tags_hash, GINT_TO_POINTER(msginfo->msgnum)); GSList *cur; @@ -5508,7 +5505,7 @@ bail: g_hash_table_insert(msgflags, msginfo, GINT_TO_POINTER(flags)); } - + if (got_alien_tags) { tags_write_tags(); main_window_reflect_tags_changes(mainwindow_get_mainwindow()); @@ -5545,8 +5542,8 @@ static gint imap_get_flags(Folder *folder, FolderItem *item, data->full_search = FALSE; GSList *tmp = NULL, *cur; - - if (prefs_common.work_offline && + + if (prefs_common.work_offline && !inc_offline_should_override(FALSE, _("Claws Mail needs network access in order " "to access the IMAP server."))) { @@ -5558,14 +5555,14 @@ static gint imap_get_flags(Folder *folder, FolderItem *item, if (g_slist_length(tmp) <= g_slist_length(msginfo_list)) data->full_search = TRUE; - + for (cur = tmp; cur; cur = cur->next) procmsg_msginfo_free((MsgInfo **)&(cur->data)); - + g_slist_free(tmp); result = GPOINTER_TO_INT(imap_get_flags_thread(data)); - + g_free(data); return result; @@ -5580,17 +5577,17 @@ static gboolean process_flags(gpointer key, gpointer value, gpointer user_data) FolderItem *item = (FolderItem *)_item; gint ok = MAILIMAP_ERROR_BAD_STATE; IMAPSession *session = NULL; - + debug_print("getting session...\n"); session = imap_session_get(item->folder); data->msglist = g_slist_reverse(data->msglist); - + debug_print("IMAP %ssetting flags to %d for %d messages\n", flags_set?"":"un", flags_value, g_slist_length(data->msglist)); - + lock_session(session); if (session) { ok = imap_select(session, IMAP_FOLDER(item->folder), item, @@ -5606,7 +5603,7 @@ static gboolean process_flags(gpointer key, gpointer value, gpointer user_data) if (!is_fatal(ok)) unlock_session(session); - g_slist_free(data->msglist); + g_slist_free(data->msglist); g_free(data); return TRUE; } @@ -5620,17 +5617,17 @@ static gboolean process_tags(gpointer key, gpointer value, gpointer user_data) gchar *str = data->str; gint ok = MAILIMAP_ERROR_BAD_STATE; IMAPSession *session = NULL; - + debug_print("getting session...\n"); session = imap_session_get(item->folder); data->msglist = g_slist_reverse(data->msglist); - + debug_print("IMAP %ssetting tags %s for %d messages\n", tags_set?"":"un", str, g_slist_length(data->msglist)); - + lock_session(session); if (session) { ok = imap_select(session, IMAP_FOLDER(item->folder), item, @@ -5649,7 +5646,7 @@ static gboolean process_tags(gpointer key, gpointer value, gpointer user_data) if (!is_fatal(ok)) unlock_session(session); - g_slist_free(data->msglist); + g_slist_free(data->msglist); g_free(data->str); g_free(data); return TRUE; @@ -5677,7 +5674,7 @@ static void process_hashtable(IMAPFolderItem *item) g_hash_table_destroy(item->tags_unset_table); item->tags_unset_table = NULL; } - + } static void imap_set_batch (Folder *folder, FolderItem *_item, gboolean batch) @@ -5686,10 +5683,10 @@ static void imap_set_batch (Folder *folder, FolderItem *_item, gboolean batch) IMAPSession *session; g_return_if_fail(item != NULL); - + if (item->batching == batch) return; - + if (batch) { item->batching = TRUE; debug_print("IMAP switching to batch mode\n"); @@ -5738,7 +5735,7 @@ static int imap_flags_to_flags(struct mailimap_mbx_list_flags * imap_flags) { int flags; clistiter * cur; - + flags = 0; if (imap_flags->mbf_type == MAILIMAP_MBX_LIST_FLAGS_SFLAG) { switch (imap_flags->mbf_sflag) { @@ -5753,7 +5750,7 @@ static int imap_flags_to_flags(struct mailimap_mbx_list_flags * imap_flags) break; } } - + if (imap_flags->mbf_oflags) { for(cur = clist_begin(imap_flags->mbf_oflags) ; cur != NULL ; cur = clist_next(cur)) { @@ -5767,7 +5764,7 @@ static int imap_flags_to_flags(struct mailimap_mbx_list_flags * imap_flags) break; } } - } + } return flags; } @@ -5776,7 +5773,7 @@ static GSList * imap_list_from_lep(IMAPFolder * folder, { clistiter * iter; GSList * item_list = NULL, *llast = NULL; - + if (list) { for(iter = clist_begin(list) ; iter != NULL ; iter = clist_next(iter)) { @@ -5802,7 +5799,7 @@ static GSList * imap_list_from_lep(IMAPFolder * folder, delimiter = mb->mb_delimiter; name = mb->mb_name; - dup_name = strdup(name); + dup_name = strdup(name); if (delimiter != '\0') subst_char(dup_name, delimiter, '/'); @@ -5847,7 +5844,7 @@ static GSList * imap_list_from_lep(IMAPFolder * folder, free(dup_name); } - } + } return item_list; } @@ -5858,22 +5855,22 @@ static GSList * imap_get_lep_set_from_numlist(IMAPFolder *folder, MsgNumberList GSList *ret_list = NULL, *llast = NULL; struct mailimap_set * current_set; unsigned int item_count; - + if (numlist == NULL) return NULL; - + current_set = mailimap_set_new_empty(); - + sorted_list = g_slist_copy(numlist); sorted_list = g_slist_sort(sorted_list, g_int_compare); first = GPOINTER_TO_INT(sorted_list->data); - + item_count = 0; for (cur = sorted_list; cur != NULL; cur = g_slist_next(cur)) { if (GPOINTER_TO_INT(cur->data) == 0) continue; - + item_count ++; last = GPOINTER_TO_INT(cur->data); @@ -5887,7 +5884,7 @@ static GSList * imap_get_lep_set_from_numlist(IMAPFolder *folder, MsgNumberList struct mailimap_set_item * item; item = mailimap_set_item_new(first, last); mailimap_set_add(current_set, item); - + first = next; if (item_count >= folder->max_set_size) { @@ -5902,14 +5899,14 @@ static GSList * imap_get_lep_set_from_numlist(IMAPFolder *folder, MsgNumberList current_set = mailimap_set_new_empty(); item_count = 0; } - } + } } - + if (clist_count(current_set->set_list) > 0) { ret_list = g_slist_append(ret_list, current_set); } - + g_slist_free(sorted_list); return ret_list; @@ -5933,9 +5930,9 @@ static GSList * imap_uid_list_from_lep(clist * list, gint* length) clistiter * iter; GSList * result; gint len = 0; - + result = NULL; - + if (list) { for(iter = clist_begin(list) ; iter != NULL ; iter = clist_next(iter)) { @@ -5956,12 +5953,12 @@ static GSList * imap_uid_list_from_lep_tab(carray * list) { unsigned int i; GSList * result; - + result = NULL; - + for(i = 0 ; i < carray_count(list) ; i ++) { uint32_t * puid; - + puid = carray_get(list, i); result = g_slist_prepend(result, GINT_TO_POINTER(* puid)); } @@ -5974,16 +5971,16 @@ static void imap_flags_hash_from_lep_uid_flags_tab(carray * list, GHashTable * tags_hash) { unsigned int i; - + for(i = 0 ; i < carray_count(list) ; i += 3) { uint32_t * puid; int * pflags; GSList *tags; - + puid = carray_get(list, i); pflags = carray_get(list, i + 1); tags = carray_get(list, i + 2); - + g_hash_table_insert(hash, GINT_TO_POINTER(*puid), GINT_TO_POINTER(* pflags)); g_hash_table_insert(tags_hash, GINT_TO_POINTER(*puid), tags); } @@ -6023,10 +6020,10 @@ static MsgInfo *imap_envelope_from_lep(struct imap_fetch_env_info * info, static void imap_lep_set_free(GSList *seq_list) { GSList * cur; - + for(cur = seq_list ; cur != NULL ; cur = g_slist_next(cur)) { struct mailimap_set * imapset; - + imapset = cur->data; mailimap_set_free(imapset); } @@ -6039,7 +6036,7 @@ static struct mailimap_flag_list * imap_flag_to_lep(IMAPFolderItem *item, IMAPFl GSList *cur = tags; flag_list = mailimap_flag_list_new_empty(); - + if (IMAP_IS_SEEN(flags)) mailimap_flag_list_add(flag_list, mailimap_flag_new_seen()); @@ -6064,12 +6061,12 @@ static struct mailimap_flag_list * imap_flag_to_lep(IMAPFolderItem *item, IMAPFl else if (IMAP_IS_HAM(flags) && flag_ok(item, IMAP_FLAG_HAM)) mailimap_flag_list_add(flag_list, mailimap_flag_new_flag_keyword(strdup(RTAG_NON_JUNK))); - + for (; cur; cur = cur->next) { - gchar *enc_str = + gchar *enc_str = imap_utf8_to_modified_utf7(cur->data, TRUE); g_strstrip(enc_str); - + mailimap_flag_list_add(flag_list, mailimap_flag_new_flag_keyword(enc_str)); } @@ -6090,21 +6087,8 @@ void imap_folder_ref(Folder *folder) void imap_disconnect_all(gboolean have_connectivity) { GList *list; - gboolean short_timeout; -#ifdef HAVE_NETWORKMANAGER_SUPPORT - GError *error = NULL; - short_timeout = !networkmanager_is_online(&error); - if(error) { - short_timeout = TRUE; - g_error_free(error); - } -#else - short_timeout = TRUE; -#endif - - if(short_timeout) - imap_main_set_timeout(1); + imap_main_set_timeout(1); for (list = account_get_list(); list != NULL; list = list->next) { PrefsAccount *account = list->data; @@ -6124,9 +6108,7 @@ void imap_disconnect_all(gboolean have_connectivity) } } } - - if(short_timeout) - imap_main_set_timeout(prefs_common.io_timeout_secs); + imap_main_set_timeout(prefs_common.io_timeout_secs); } void imap_folder_unref(Folder *folder) @@ -6139,7 +6121,7 @@ void imap_cancel_all(void) { GList *folderlist; GList *cur; - + folderlist = folder_get_list(); for (cur = folderlist; cur != NULL; cur = g_list_next(cur)) { Folder *folder = (Folder *) cur->data; @@ -6148,7 +6130,7 @@ void imap_cancel_all(void) if (imap_is_busy(folder)) { IMAPSession *imap_session; RemoteFolder *rfolder; - + g_printerr("cancelled\n"); imap_threaded_cancel(folder); rfolder = (RemoteFolder *) folder; @@ -6164,7 +6146,7 @@ gboolean imap_cancel_all_enabled(void) { GList *folderlist; GList *cur; - + folderlist = folder_get_list(); for (cur = folderlist; cur != NULL; cur = g_list_next(cur)) { Folder *folder = (Folder *) cur->data; @@ -6175,7 +6157,7 @@ gboolean imap_cancel_all_enabled(void) } } } - + return FALSE; } @@ -6183,12 +6165,12 @@ static gboolean imap_is_busy(Folder *folder) { IMAPSession *imap_session; RemoteFolder *rfolder; - + rfolder = (RemoteFolder *) folder; imap_session = (IMAPSession *) rfolder->session; if (imap_session == NULL) return FALSE; - + return imap_session->busy; } @@ -6228,7 +6210,7 @@ static FolderItem *imap_create_folder (Folder *folder, return NULL; } static gint imap_rename_folder (Folder *folder, - FolderItem *item, + FolderItem *item, const gchar *name) { return -1; @@ -6291,7 +6273,7 @@ gboolean imap_cancel_all_enabled(void) #endif #ifdef HAVE_LIBETPAN -static void imap_synchronise(FolderItem *item, gint days) +static void imap_synchronise(FolderItem *item, gint days) { if (IMAP_FOLDER_ITEM(item)->last_sync == IMAP_FOLDER_ITEM(item)->last_change) { debug_print("%s already synced\n", item->path?item->path:item->name); @@ -6309,7 +6291,7 @@ static void imap_item_set_xml(Folder *folder, FolderItem *item, XMLTag *tag) GList *cur; #endif folder_item_set_xml(folder, item, tag); - + #ifdef HAVE_LIBETPAN for (cur = tag->attr; cur != NULL; cur = g_list_next(cur)) { XMLAttr *attr = (XMLAttr *) cur->data; @@ -6334,11 +6316,11 @@ static XMLTag *imap_item_get_xml(Folder *folder, FolderItem *item) tag = folder_item_get_xml(folder, item); #ifdef HAVE_LIBETPAN - xml_tag_add_attr(tag, xml_attr_new_int("uidnext", + xml_tag_add_attr(tag, xml_attr_new_int("uidnext", IMAP_FOLDER_ITEM(item)->uid_next)); - xml_tag_add_attr(tag, xml_attr_new_time_t("last_sync", + xml_tag_add_attr(tag, xml_attr_new_time_t("last_sync", IMAP_FOLDER_ITEM(item)->last_sync)); - xml_tag_add_attr(tag, xml_attr_new_time_t("last_change", + xml_tag_add_attr(tag, xml_attr_new_time_t("last_change", IMAP_FOLDER_ITEM(item)->last_change)); #endif @@ -6347,8 +6329,8 @@ static XMLTag *imap_item_get_xml(Folder *folder, FolderItem *item) /* =================================================================== * UTF-7 conversion routines as in RFC 2192 - * =================================================================== - * These two functions from: + * =================================================================== + * These two functions from: * libimap library. * Copyright (C) 2003-2004 Pawel Salek. */ diff --git a/src/inc.c b/src/inc.c @@ -143,7 +143,7 @@ static gint inc_spool_account(PrefsAccount *account); static void inc_autocheck_timer_set_interval (guint interval); static gint inc_autocheck_func (gpointer data); -static void inc_notify_cmd (gint new_msgs, +static void inc_notify_cmd (gint new_msgs, gboolean notify); static void inc_update_stats(gint new_msgs) @@ -156,7 +156,7 @@ static void inc_update_stats(gint new_msgs) * inc_finished: * @mainwin: Main window. * @new_messages: TRUE if some messages have been received. - * + * * Update the folder view and the summary view after receiving * messages. If @new_messages is FALSE, this function avoids unneeded * updating. @@ -189,7 +189,7 @@ void inc_mail(MainWindow *mainwin, gboolean notify) if (inc_lock_count) return; - if (prefs_common.work_offline && + if (prefs_common.work_offline && !inc_offline_should_override(TRUE, _("Claws Mail needs network access in order " "to get mails."))) @@ -232,7 +232,7 @@ void inc_pop_before_smtp(PrefsAccount *acc) session = inc_session_new(acc); if (!session) return; POP3_SESSION(session->session)->pop_before_smtp = TRUE; - + inc_dialog = inc_progress_dialog_create(FALSE); inc_dialog->queue_list = g_list_append(inc_dialog->queue_list, session); @@ -244,7 +244,7 @@ void inc_pop_before_smtp(PrefsAccount *acc) toolbar_main_set_sensitive(mainwin); main_window_set_menu_sensitive(mainwin); } - + inc_start(inc_dialog); } @@ -252,13 +252,13 @@ static gint inc_account_mail_real(MainWindow *mainwin, PrefsAccount *account) { IncProgressDialog *inc_dialog; IncSession *session; - + switch (account->protocol) { case A_IMAP4: case A_NNTP: /* Melvin: bug [14] * FIXME: it should return foldeview_check_new() value. - * TODO: do it when bug [19] is fixed (IMAP folder sets + * TODO: do it when bug [19] is fixed (IMAP folder sets * an incorrect new message count) */ folderview_check_new(FOLDER(account->folder)); @@ -266,7 +266,7 @@ static gint inc_account_mail_real(MainWindow *mainwin, PrefsAccount *account) case A_POP3: session = inc_session_new(account); if (!session) return 0; - + inc_dialog = inc_progress_dialog_create(FALSE); inc_dialog->queue_list = g_list_append(inc_dialog->queue_list, session); @@ -277,7 +277,7 @@ static gint inc_account_mail_real(MainWindow *mainwin, PrefsAccount *account) toolbar_main_set_sensitive(mainwin); main_window_set_menu_sensitive(mainwin); } - + return inc_start(inc_dialog); case A_LOCAL: @@ -297,7 +297,7 @@ gint inc_account_mail(MainWindow *mainwin, PrefsAccount *account) if (account->receive_in_progress) return 0; - if (prefs_common.work_offline && + if (prefs_common.work_offline && !inc_offline_should_override(TRUE, _("Claws Mail needs network access in order " "to get mails."))) @@ -323,7 +323,7 @@ void inc_account_list_mail(MainWindow *mainwin, GList *account_list, gboolean au IncProgressDialog *inc_dialog; gint new_msgs = 0, num; - if (prefs_common.work_offline && + if (prefs_common.work_offline && !inc_offline_should_override( (autocheck == FALSE), _("Claws Mail needs network access in order " "to get mails."))) @@ -345,7 +345,7 @@ void inc_account_list_mail(MainWindow *mainwin, GList *account_list, gboolean au /* external incorporating program */ if (execute_command_line(prefs_common.extinc_cmd, FALSE, NULL) < 0) { log_error(LOG_PROTOCOL, _("%s failed\n"), prefs_common.extinc_cmd); - + main_window_unlock(mainwin); return; } @@ -628,7 +628,7 @@ static gint inc_start(IncProgressDialog *inc_dialog) GList *next = qlist->next; session = qlist->data; - pop3_session = POP3_SESSION(session->session); + pop3_session = POP3_SESSION(session->session); pop3_session->user = g_strdup(pop3_session->ac_prefs->userid); if (inc_dialog->show_dialog) @@ -636,7 +636,7 @@ static gint inc_start(IncProgressDialog *inc_dialog) (inc_dialog->dialog->window, NULL, NULL); #ifdef USE_OAUTH2 - if(pop3_session->ac_prefs->use_pop_auth && + if(pop3_session->ac_prefs->use_pop_auth && pop3_session->ac_prefs->pop_auth_type == POPAUTH_OAUTH2) oauth2_check_passwds (pop3_session->ac_prefs); #endif @@ -744,7 +744,7 @@ static gint inc_start(IncProgressDialog *inc_dialog) default: break; } - + if (pop3_session->error_val == PS_AUTHFAIL) { if(prefs_common.show_recv_err_dialog) { if((prefs_common.recv_dialog_mode == RECV_DIALOG_ALWAYS) || @@ -770,21 +770,21 @@ static gint inc_start(IncProgressDialog *inc_dialog) /* process messages */ folder_item_update_freeze(); - - procmsg_msglist_filter(msglist, pop3_session->ac_prefs, - &filtered, &unfiltered, + + procmsg_msglist_filter(msglist, pop3_session->ac_prefs, + &filtered, &unfiltered, pop3_session->ac_prefs->filter_on_recv); filtering_move_and_copy_msgs(msglist); - if (unfiltered != NULL) + if (unfiltered != NULL) folder_item_move_msgs(inbox, unfiltered); - for(msglist_element = msglist; msglist_element != NULL; + for(msglist_element = msglist; msglist_element != NULL; msglist_element = msglist_element->next) { procmsg_msginfo_free((MsgInfo**)&(msglist_element->data)); } folder_item_update_thaw(); - + g_slist_free(msglist); g_slist_free(filtered); g_slist_free(unfiltered); @@ -864,7 +864,7 @@ static IncState inc_pop3_session_do(IncSession *session) debug_print("getting new messages of account %s...\n", ac->account_name); - + ac->last_pop_login_time = time(NULL); buf = g_strdup_printf(_("%s: Retrieving new messages"), @@ -923,7 +923,7 @@ static IncState inc_pop3_session_do(IncSession *session) session_set_timeout(SESSION(pop3_session), prefs_common.io_timeout_secs * 1000); - + if (session_connect(SESSION(pop3_session), server, port) < 0) { if(prefs_common.show_recv_err_dialog) { if((prefs_common.recv_dialog_mode == RECV_DIALOG_ALWAYS) || @@ -1235,7 +1235,7 @@ static void inc_put_error(IncState istate, Pop3Session *session) if (!prefs_common.show_recv_err_dialog) break; err_msg = g_strdup_printf(_("Connection to %s:%d failed."), - SESSION(session)->server, + SESSION(session)->server, SESSION(session)->port); break; case INC_ERROR: @@ -1265,15 +1265,15 @@ static void inc_put_error(IncState istate, Pop3Session *session) if (!prefs_common.show_recv_err_dialog) break; err_msg = g_strdup_printf(_("Socket error on connection to %s:%d."), - SESSION(session)->server, + SESSION(session)->server, SESSION(session)->port); break; case INC_EOF: log_msg = _("Connection closed by the remote host."); if (!prefs_common.show_recv_err_dialog) break; - err_msg = g_strdup_printf(_("Connection to %s:%d closed by the remote host."), - SESSION(session)->server, + err_msg = g_strdup_printf(_("Connection to %s:%d closed by the remote host."), + SESSION(session)->server, SESSION(session)->port); break; case INC_LOCKED: @@ -1303,8 +1303,8 @@ static void inc_put_error(IncState istate, Pop3Session *session) "Preferences/Other/Miscellaneous."); if (!prefs_common.show_recv_err_dialog) break; - err_msg = g_strdup_printf(_("Connection to %s:%d timed out."), - SESSION(session)->server, + err_msg = g_strdup_printf(_("Connection to %s:%d timed out."), + SESSION(session)->server, SESSION(session)->port); break; default: @@ -1396,24 +1396,24 @@ static gint inc_spool_account(PrefsAccount *account) if (account->local_mbox) { if (is_file_exist(account->local_mbox)) mbox = g_strdup(account->local_mbox); - else if (is_dir_exist(account->local_mbox)) + else if (is_dir_exist(account->local_mbox)) mbox = g_strconcat(account->local_mbox, G_DIR_SEPARATOR_S, g_get_user_name(), NULL); else { - debug_print("%s: local mailbox not found.\n", + debug_print("%s: local mailbox not found.\n", account->local_mbox); return -1; } } else { debug_print("local mailbox not set in account info.\n"); return -1; - } + } result = get_spool(inbox, mbox, account); g_free(mbox); - + statusbar_pop_all(); - + return result; } @@ -1519,7 +1519,7 @@ static void inc_autocheck_timer_set_interval(guint _interval) interval /= 1000; inc_autocheck_timer_remove(); - /* last test is to avoid re-enabling auto_check after modifying + /* last test is to avoid re-enabling auto_check after modifying the common preferences */ if (prefs_common.autochk_newmail && autocheck_data && prefs_common.work_offline == FALSE) { @@ -1614,12 +1614,6 @@ gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg) gint length = 10; /* seconds */ gint answer = G_ALERTDEFAULT; -#ifdef HAVE_NETWORKMANAGER_SUPPORT - /* If no network connection is available, override is not possible */ - if(!networkmanager_is_online(NULL)) - return FALSE; -#endif - if (prefs_common.autochk_newmail) length = prefs_common.autochk_itv; /* seconds */ @@ -1629,7 +1623,7 @@ gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg) if (prefs_common.work_offline) { gchar *tmp = NULL; - + if (time(NULL) - inc_offline_overridden_yes < length * 60) /* seconds */ return TRUE; else if (time(NULL) - inc_offline_overridden_no < length * 60) /* seconds */ @@ -1662,16 +1656,16 @@ gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg) } tmp = g_strdup_printf( _("%s%sYou're working offline. Override for %d %s?"), - msg?msg:"", + msg?msg:"", msg?"\n\n":"", length, unit); } else tmp = g_strdup_printf( _("%s%sYou're working offline. Override?"), - msg?msg:"", + msg?msg:"", msg?"\n\n":""); - answer = alertpanel(_("Offline warning"), + answer = alertpanel(_("Offline warning"), tmp, NULL, _("_No"), NULL, _("_Yes"), NULL, !force_ask? _("On_ly once"):NULL, ALERTFOCUS_SECOND); diff --git a/src/main.c b/src/main.c @@ -55,12 +55,6 @@ #endif #endif -#ifdef HAVE_DBUS_GLIB -#include <dbus/dbus-glib.h> -#endif -#ifdef HAVE_NETWORKMANAGER_SUPPORT -#include <NetworkManager.h> -#endif #ifdef HAVE_VALGRIND #include <valgrind.h> #endif @@ -150,11 +144,6 @@ #include <windows.h> #endif -#ifdef HAVE_NETWORKMANAGER_SUPPORT -/* Went offline due to NetworkManager */ -static gboolean went_offline_nm; -#endif - gchar *prog_version; #ifdef CRASH_DIALOG gchar *argv0; @@ -232,11 +221,6 @@ static void quit_signal_handler (int sig); static void install_basic_sighandlers (void); static void exit_claws (MainWindow *mainwin); -#ifdef HAVE_NETWORKMANAGER_SUPPORT -static void networkmanager_state_change_cb(DBusGProxy *proxy, gchar *dev, - gpointer data); -#endif - #define MAKE_DIR_IF_NOT_EXIST(dir) \ { \ if (!is_dir_exist(dir)) { \ @@ -659,12 +643,6 @@ static void main_dump_features_list(gboolean show_debug_only) g_print(" libetpan %d.%d\n", LIBETPAN_VERSION_MAJOR, LIBETPAN_VERSION_MINOR); #endif -#if HAVE_NETWORKMANAGER_SUPPORT - if (show_debug_only) - debug_print(" NetworkManager\n"); - else - g_print(" NetworkManager\n"); -#endif #if HAVE_SVG if (show_debug_only) debug_print(" librSVG " LIBRSVG_VERSION "\n"); @@ -686,13 +664,6 @@ static void reset_statistics(void) int main(int argc, char *argv[]) { -#ifdef HAVE_DBUS_GLIB - DBusGConnection *connection; - GError *error; -#endif -#ifdef HAVE_NETWORKMANAGER_SUPPORT - DBusGProxy *nm_proxy; -#endif gchar *userrc; MainWindow *mainwin; FolderView *folderview; @@ -775,34 +746,6 @@ int main(int argc, char *argv[]) gtk_init(&argc, &argv); -#ifdef HAVE_NETWORKMANAGER_SUPPORT - went_offline_nm = FALSE; - nm_proxy = NULL; -#endif -#ifdef HAVE_DBUS_GLIB - error = NULL; - connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error); - - if(!connection) { - debug_print("Failed to open connection to system bus: %s\n", error->message); - g_error_free(error); - } - else { -#ifdef HAVE_NETWORKMANAGER_SUPPORT - nm_proxy = dbus_g_proxy_new_for_name(connection, - "org.freedesktop.NetworkManager", - "/org/freedesktop/NetworkManager", - "org.freedesktop.NetworkManager"); - if (nm_proxy) { - dbus_g_proxy_add_signal(nm_proxy, "StateChanged", G_TYPE_UINT, G_TYPE_INVALID); - dbus_g_proxy_connect_signal(nm_proxy, "StateChanged", - G_CALLBACK(networkmanager_state_change_cb), - NULL,NULL); - } -#endif - } -#endif - gtkut_create_ui_manager(); /* Create container for all the menus we will be adding */ @@ -978,10 +921,6 @@ int main(int argc, char *argv[]) if (!check_file_integrity()) exit(1); -#ifdef HAVE_NETWORKMANAGER_SUPPORT - networkmanager_state_change_cb(nm_proxy,NULL,mainwin); -#endif - manage_window_focus_in(mainwin->window, NULL, NULL); folderview = mainwin->folderview; @@ -1261,15 +1200,6 @@ int main(int argc, char *argv[]) END_TIMING(); gtk_main(); - -#ifdef HAVE_NETWORKMANAGER_SUPPORT - if(nm_proxy) - g_object_unref(nm_proxy); -#endif -#ifdef HAVE_DBUS_GLIB - if(connection) - dbus_g_connection_unref(connection); -#endif utils_free_regex(); exit_claws(mainwin); @@ -1292,7 +1222,6 @@ static void save_all_caches(FolderItem *item, gpointer data) static void exit_claws(MainWindow *mainwin) { gchar *filename; - gboolean have_connectivity; FolderItem *item; sc_exiting = TRUE; @@ -1300,11 +1229,6 @@ static void exit_claws(MainWindow *mainwin) debug_print("shutting down\n"); inc_autocheck_timer_remove(); -#ifdef HAVE_NETWORKMANAGER_SUPPORT - if (prefs_common.work_offline && went_offline_nm) - prefs_common.work_offline = FALSE; -#endif - /* save prefs for opened folder */ if((item = folderview_get_opened_item(mainwin->folderview)) != NULL) { summary_save_prefs_to_folderitem( @@ -1338,14 +1262,9 @@ static void exit_claws(MainWindow *mainwin) close_log_file(LOG_PROTOCOL); close_log_file(LOG_DEBUG_FILTERING); -#ifdef HAVE_NETWORKMANAGER_SUPPORT - have_connectivity = networkmanager_is_online(NULL); -#else - have_connectivity = TRUE; -#endif #ifdef HAVE_LIBETPAN - imap_main_done(have_connectivity); - nntp_main_done(have_connectivity); + imap_main_done(TRUE); + nntp_main_done(TRUE); #endif /* delete crashfile */ if (!cmd.crash) @@ -2573,100 +2492,3 @@ static void install_basic_sighandlers() #endif /* !G_OS_WIN32 */ } -#ifdef HAVE_NETWORKMANAGER_SUPPORT -static void networkmanager_state_change_cb(DBusGProxy *proxy, gchar *dev, - gpointer data) -{ - MainWindow *mainWin; - - mainWin = NULL; - if (static_mainwindow) - mainWin = static_mainwindow; - else if (data) - mainWin = (MainWindow*)data; - - if (!prefs_common.use_networkmanager) - return; - - if (mainWin) { - GError *error = NULL; - gboolean online; - - online = networkmanager_is_online(&error); - if(!error) { - if(online && went_offline_nm) { - went_offline_nm = FALSE; - main_window_toggle_work_offline(mainWin, FALSE, FALSE); - debug_print("NetworkManager: Went online\n"); - log_message(LOG_PROTOCOL, _("NetworkManager: network is online.\n")); - } - else if(!online) { - went_offline_nm = TRUE; - main_window_toggle_work_offline(mainWin, TRUE, FALSE); - debug_print("NetworkManager: Went offline\n"); - log_message(LOG_PROTOCOL, _("NetworkManager: network is offline.\n")); - } - } - else { - debug_print("Failed to get online information from NetworkManager: %s\n", - error->message); - g_error_free(error); - } - } - else - debug_print("NetworkManager: Cannot change connection state because " - "main window does not exist\n"); -} - -/* Returns true (and sets error appropriately, if given) in case of error */ -gboolean networkmanager_is_online(GError **error) -{ - DBusGConnection *connection; - DBusGProxy *proxy; - GError *tmp_error = NULL; - gboolean retVal; - guint32 state; - - if (!prefs_common.use_networkmanager) - return TRUE; - - tmp_error = NULL; - proxy = NULL; - connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &tmp_error); - - if(!connection) { - /* If calling code doesn't do error checking, at least print some debug */ - if((error == NULL) || (*error == NULL)) - debug_print("Failed to open connection to system bus: %s\n", - tmp_error->message); - g_propagate_error(error, tmp_error); - return TRUE; - } - - proxy = dbus_g_proxy_new_for_name(connection, - "org.freedesktop.NetworkManager", - "/org/freedesktop/NetworkManager", - "org.freedesktop.NetworkManager"); - - retVal = dbus_g_proxy_call(proxy,"state",&tmp_error, G_TYPE_INVALID, - G_TYPE_UINT, &state, G_TYPE_INVALID); - - if(proxy) - g_object_unref(proxy); - if(connection) - dbus_g_connection_unref(connection); - - if(!retVal) { - /* If calling code doesn't do error checking, at least print some debug */ - if((error == NULL) || (*error == NULL)) - debug_print("Failed to get state info from NetworkManager: %s\n", - tmp_error->message); - g_propagate_error(error, tmp_error); - return TRUE; - } - return (state == NM_STATE_CONNECTED_LOCAL || - state == NM_STATE_CONNECTED_SITE || - state == NM_STATE_CONNECTED_GLOBAL || - state == NM_STATE_UNKNOWN); -} -#endif diff --git a/src/main.h b/src/main.h @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * */ #ifndef __MAIN_H__ @@ -47,8 +47,4 @@ gchar *claws_get_socket_name(void); void main_set_show_at_startup(gboolean show); gboolean claws_crashed(void); -#ifdef HAVE_NETWORKMANAGER_SUPPORT -gboolean networkmanager_is_online(GError **error); -#endif - #endif /* __MAIN_H__ */ diff --git a/src/mainwindow.c b/src/mainwindow.c @@ -4193,13 +4193,6 @@ static void mainwindow_check_synchronise(MainWindow *mainwin, gboolean ask) static void online_switch_clicked (GtkButton *btn, gpointer data) { MainWindow *mainwin; - gboolean have_connectivity; - -#ifdef HAVE_NETWORKMANAGER_SUPPORT - have_connectivity = networkmanager_is_online(NULL); -#else - have_connectivity = TRUE; -#endif mainwin = (MainWindow *) data; @@ -4218,11 +4211,10 @@ static void online_switch_clicked (GtkButton *btn, gpointer data) if (prefs_common.work_offline) return; - if(have_connectivity) - mainwindow_check_synchronise(mainwin, TRUE); + mainwindow_check_synchronise(mainwin, TRUE); prefs_common.work_offline = TRUE; - imap_disconnect_all(have_connectivity); - nntp_disconnect_all(have_connectivity); + imap_disconnect_all(TRUE); + nntp_disconnect_all(TRUE); hooks_invoke(OFFLINE_SWITCH_HOOKLIST, NULL); } else { /*go online */ diff --git a/src/news.c b/src/news.c @@ -99,8 +99,8 @@ static void news_folder_destroy (Folder *folder); static gchar *news_fetch_msg (Folder *folder, FolderItem *item, gint num); -static void news_remove_cached_msg (Folder *folder, - FolderItem *item, +static void news_remove_cached_msg (Folder *folder, + FolderItem *item, MsgInfo *msginfo); #ifdef USE_GNUTLS static Session *news_session_new (Folder *folder, @@ -123,11 +123,11 @@ static gint news_select_group (Folder *folder, gint *first, gint *last); static MsgInfo *news_parse_xover (struct newsnntp_xover_resp_item *item); -static gint news_get_num_list (Folder *folder, +static gint news_get_num_list (Folder *folder, FolderItem *item, GSList **list, gboolean *old_uids_valid); -static MsgInfo *news_get_msginfo (Folder *folder, +static MsgInfo *news_get_msginfo (Folder *folder, FolderItem *item, gint num); static GSList *news_get_msginfos (Folder *folder, @@ -140,8 +140,8 @@ static gchar *news_folder_get_path (Folder *folder); static gchar *news_item_get_path (Folder *folder, FolderItem *item); static void news_synchronise (FolderItem *item, gint days); -static int news_remove_msg (Folder *folder, - FolderItem *item, +static int news_remove_msg (Folder *folder, + FolderItem *item, gint msgnum); static gint news_rename_folder (Folder *folder, FolderItem *item, @@ -198,8 +198,8 @@ void nntp_folder_unref(Folder *folder) ((NewsFolder *)folder)->refcnt--; } -static int news_remove_msg (Folder *folder, - FolderItem *item, +static int news_remove_msg (Folder *folder, + FolderItem *item, gint msgnum) { gchar *path, *filename; @@ -210,7 +210,7 @@ static int news_remove_msg (Folder *folder, path = folder_item_get_path(item); if (!is_dir_exist(path)) make_dir_hier(path); - + filename = g_strconcat(path, G_DIR_SEPARATOR_S, itos(msgnum), NULL); g_free(path); claws_unlink(filename); @@ -289,7 +289,7 @@ static gboolean nntp_ping(gpointer data) if (session->state != SESSION_READY || news_folder_locked(news_session->folder)) return FALSE; - + news_folder_lock(NEWS_FOLDER(news_session->folder)); if ((r = nntp_threaded_date(news_session->folder, &lt)) != NEWSNNTP_NO_ERROR) { @@ -365,7 +365,7 @@ static Session *news_session_new(Folder *folder, const PrefsAccount *account, gu else #endif r = nntp_threaded_connect(folder, server, port, proxy_info); - + if (r != NEWSNNTP_NO_ERROR) { log_error(LOG_PROTOCOL, _("Error logging in to %s:%d...\n"), server, port); session_destroy(SESSION(session)); @@ -455,7 +455,7 @@ static Session *news_session_new_for_folder(Folder *folder) hurt: a transit-only server returns 502 and closes the cnx. Ref.: http://tools.ietf.org/html/rfc3977#section-5.3 */ - log_error(LOG_PROTOCOL, _("Mode reader failed, continuing nevertheless\n")); + log_error(LOG_PROTOCOL, _("Mode reader failed, continuing nevertheless\n")); } else { /* An error state bail out */ @@ -492,12 +492,12 @@ static Session *news_session_new_for_folder(Folder *folder) static NewsSession *news_session_get(Folder *folder) { RemoteFolder *rfolder = REMOTE_FOLDER(folder); - + cm_return_val_if_fail(folder != NULL, NULL); cm_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, NULL); cm_return_val_if_fail(folder->account != NULL, NULL); - if (prefs_common.work_offline && + if (prefs_common.work_offline && !inc_offline_should_override(FALSE, _("Claws Mail needs network access in order " "to access the News server."))) { @@ -518,7 +518,7 @@ static NewsSession *news_session_get(Folder *folder) session_register_ping(SESSION(rfolder->session), nntp_ping); goto newsession; } - + if (time(NULL) - rfolder->session->last_access_time < SESSION_TIMEOUT_INTERVAL) { return NEWS_SESSION(rfolder->session); @@ -657,7 +657,7 @@ GSList *news_get_group_list(Folder *folder) clist *grouplist = NULL; clistiter *cur; fp = claws_fopen(filename, "wb"); - + if (!fp) { g_free(filename); return NULL; @@ -670,7 +670,7 @@ GSList *news_get_group_list(Folder *folder) } ok = nntp_threaded_list(folder, &grouplist); - + if (ok != NEWSNNTP_NO_ERROR) { if (ok == NEWSNNTP_ERROR_STREAM) { session_destroy(SESSION(session)); @@ -680,7 +680,7 @@ GSList *news_get_group_list(Folder *folder) g_free(filename); return NULL; } - + if (grouplist) { for (cur = clist_begin(grouplist); cur; cur = clist_next(cur)) { struct newsnntp_group_info *info = (struct newsnntp_group_info *) @@ -789,13 +789,13 @@ gint news_post(Folder *folder, const gchar *file) cm_return_val_if_fail(folder != NULL, -1); cm_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, -1); cm_return_val_if_fail(contents != NULL, -1); - + session = news_session_get(folder); if (!session) { g_free(contents); return -1; } - + ok = nntp_threaded_post(folder, contents, strlen(contents)); g_free(contents); @@ -813,9 +813,9 @@ static gint news_get_article(Folder *folder, gint num, gchar *filename) size_t len; char *result = NULL; int r; - + r = nntp_threaded_article(folder, num, &result, &len); - + if (r == NEWSNNTP_NO_ERROR) { if (str_write_to_file(result, filename, FALSE) < 0) { mmap_string_unref(result); @@ -823,7 +823,7 @@ static gint news_get_article(Folder *folder, gint num, gchar *filename) } mmap_string_unref(result); } - + return r; } @@ -849,7 +849,7 @@ static gint news_select_group(Folder *folder, const gchar *group, NewsSession *session = NEWS_SESSION(news_session_get(folder)); cm_return_val_if_fail(session != NULL, -1); - + if (!num || !first || !last) { if (session->group && g_ascii_strcasecmp(session->group, group) == 0) return NEWSNNTP_NO_ERROR; @@ -862,7 +862,7 @@ static gint news_select_group(Folder *folder, const gchar *group, session->group = NULL; ok = nntp_threaded_group(folder, group, &info); - + if (ok == NEWSNNTP_NO_ERROR && info) { session->group = g_strdup(group); *num = info->grp_first; @@ -903,25 +903,25 @@ static MsgInfo *news_parse_xover(struct newsnntp_xover_resp_item *item) if (*tmp != '\0') msginfo->msgid = g_strdup(tmp); g_free(tmp); - } + } /* FIXME: this is a quick fix; references' meaning was changed * into having the actual list of references in the References: header. - * We need a GSList here, so msginfo_free() and msginfo_copy() can do - * their things properly. */ - if (item->ovr_references && *(item->ovr_references)) { + * We need a GSList here, so msginfo_free() and msginfo_copy() can do + * their things properly. */ + if (item->ovr_references && *(item->ovr_references)) { gchar **ref_tokens = g_strsplit(item->ovr_references, " ", -1); guint i = 0; char *tmp; char *p; while (ref_tokens[i]) { gchar *cur_ref = ref_tokens[i]; - msginfo->references = references_list_append(msginfo->references, + msginfo->references = references_list_append(msginfo->references, cur_ref); i++; } g_strfreev(ref_tokens); - + tmp = g_strdup(item->ovr_references); eliminate_parenthesis(tmp, '(', ')'); if ((p = strrchr(tmp, '<')) != NULL) { @@ -931,7 +931,7 @@ static MsgInfo *news_parse_xover(struct newsnntp_xover_resp_item *item) msginfo->inreplyto = g_strdup(p); } g_free(tmp); - } + } return msginfo; } @@ -956,7 +956,7 @@ gint news_cancel_article(Folder * folder, MsgInfo * msginfo) FILE_OP_ERROR(tmp, "chmod"); g_warning("can't change file mode"); } - + if (prefs_common.hide_timezone) get_rfc822_date_hide_tz(date, sizeof(date)); else @@ -1056,7 +1056,7 @@ static gint news_get_num_list(Folder *folder, FolderItem *item, GSList **msgnum_ cm_return_val_if_fail(session != NULL, -1); *old_uids_valid = TRUE; - + news_folder_lock(NEWS_FOLDER(item->folder)); ok = news_select_group(folder, item->path, &num, &first, &last); @@ -1074,7 +1074,7 @@ static gint news_get_num_list(Folder *folder, FolderItem *item, GSList **msgnum_ first, last); else { for (i = first; i <= last; i++) { - *msgnum_list = g_slist_prepend(*msgnum_list, + *msgnum_list = g_slist_prepend(*msgnum_list, GINT_TO_POINTER(i)); nummsgs++; } @@ -1094,9 +1094,9 @@ static void news_set_msg_flags(FolderItem *item, MsgInfo *msginfo) if (item->folder->newsart && g_hash_table_lookup(item->folder->newsart, msginfo->msgid) != NULL) { msginfo->flags.perm_flags = MSG_COLORLABEL_TO_FLAGS(item->folder->account->crosspost_col); - + } else { - if (!item->folder->newsart) + if (!item->folder->newsart) item->folder->newsart = g_hash_table_new(g_str_hash, g_str_equal); g_hash_table_insert(item->folder->newsart, g_strdup(msginfo->msgid), GINT_TO_POINTER(1)); @@ -1116,7 +1116,7 @@ static void news_get_extra_fields(NewsSession *session, FolderItem *item, GSList clistiter *hdr; gint first = -1, last = -1; GHashTable *hash_table; - + cm_return_if_fail(session != NULL); cm_return_if_fail(item != NULL); cm_return_if_fail(item->folder != NULL); @@ -1128,7 +1128,7 @@ static void news_get_extra_fields(NewsSession *session, FolderItem *item, GSList news_folder_lock(NEWS_FOLDER(item->folder)); hash_table = g_hash_table_new(g_direct_hash, g_direct_equal); - + for (cur = msglist; cur; cur = cur->next) { msginfo = (MsgInfo *)cur->data; if (first == -1 || msginfo->msgnum < first) @@ -1170,7 +1170,7 @@ static void news_get_extra_fields(NewsSession *session, FolderItem *item, GSList } newsnntp_xhdr_free(hdrlist); hdrlist = NULL; - + /* To */ ok = nntp_threaded_xhdr(item->folder, "to", first, last, &hdrlist); @@ -1197,7 +1197,7 @@ static void news_get_extra_fields(NewsSession *session, FolderItem *item, GSList } newsnntp_xhdr_free(hdrlist); hdrlist = NULL; - + /* Cc */ ok = nntp_threaded_xhdr(item->folder, "cc", first, last, &hdrlist); @@ -1244,7 +1244,7 @@ static GSList *news_get_msginfos_for_range(NewsSession *session, FolderItem *ite begin, end, item->path); news_folder_lock(NEWS_FOLDER(item->folder)); - + ok = news_select_group(item->folder, item->path, NULL, NULL, NULL); if (ok != NEWSNNTP_NO_ERROR) { log_warning(LOG_PROTOCOL, _("couldn't set group: %s\n"), item->path); @@ -1253,7 +1253,7 @@ static GSList *news_get_msginfos_for_range(NewsSession *session, FolderItem *ite } ok = nntp_threaded_xover(item->folder, begin, end, NULL, &msglist); - + if (ok != NEWSNNTP_NO_ERROR) { log_warning(LOG_PROTOCOL, _("couldn't get xover\n")); if (ok == NEWSNNTP_ERROR_STREAM) { @@ -1270,7 +1270,7 @@ static GSList *news_get_msginfos_for_range(NewsSession *session, FolderItem *ite for (cur = clist_begin(msglist); cur; cur = clist_next(cur)) { struct newsnntp_xover_resp_item *ritem = (struct newsnntp_xover_resp_item *)clist_content(cur); msginfo = news_parse_xover(ritem); - + if (!msginfo) { log_warning(LOG_PROTOCOL, _("invalid xover line\n")); continue; @@ -1295,7 +1295,7 @@ static GSList *news_get_msginfos_for_range(NewsSession *session, FolderItem *ite session_set_access_time(SESSION(session)); news_get_extra_fields(session, item, newlist); - + return newlist; } @@ -1312,12 +1312,12 @@ static MsgInfo *news_get_msginfo(Folder *folder, FolderItem *item, gint num) cm_return_val_if_fail(FOLDER_CLASS(item->folder) == &news_class, NULL); msglist = news_get_msginfos_for_range(session, item, num, num); - + if (msglist) msginfo = msglist->data; - + g_slist_free(msglist); - + return msginfo; } @@ -1326,12 +1326,12 @@ static GSList *news_get_msginfos(Folder *folder, FolderItem *item, GSList *msgnu NewsSession *session; GSList *elem, *msginfo_list = NULL, *tmp_msgnum_list, *tmp_msginfo_list; guint first, last, next; - + cm_return_val_if_fail(folder != NULL, NULL); cm_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, NULL); cm_return_val_if_fail(msgnum_list != NULL, NULL); cm_return_val_if_fail(item != NULL, NULL); - + session = news_session_get(folder); cm_return_val_if_fail(session != NULL, NULL); @@ -1342,9 +1342,9 @@ static GSList *news_get_msginfos(Folder *folder, FolderItem *item, GSList *msgnu first = GPOINTER_TO_INT(tmp_msgnum_list->data); last = first; - + news_folder_lock(NEWS_FOLDER(item->folder)); - + for(elem = g_slist_next(tmp_msgnum_list); elem != NULL; elem = g_slist_next(elem)) { next = GPOINTER_TO_INT(elem->data); if(next != (last + 1)) { @@ -1354,14 +1354,14 @@ static GSList *news_get_msginfos(Folder *folder, FolderItem *item, GSList *msgnu } last = next; } - + news_folder_unlock(NEWS_FOLDER(item->folder)); - + tmp_msginfo_list = news_get_msginfos_for_range(session, item, first, last); msginfo_list = g_slist_concat(msginfo_list, tmp_msginfo_list); g_slist_free(tmp_msgnum_list); - + progressindicator_stop(PROGRESS_TYPE_NETWORK); return msginfo_list; @@ -1372,7 +1372,7 @@ static gboolean news_scan_required(Folder *folder, FolderItem *item) return TRUE; } -void news_synchronise(FolderItem *item, gint days) +void news_synchronise(FolderItem *item, gint days) { news_gtk_synchronise(item, days); } @@ -1381,7 +1381,7 @@ static gint news_rename_folder(Folder *folder, FolderItem *item, const gchar *name) { gchar *path; - + cm_return_val_if_fail(folder != NULL, -1); cm_return_val_if_fail(item != NULL, -1); cm_return_val_if_fail(item->path != NULL, -1); @@ -1420,24 +1420,8 @@ static gint news_remove_folder(Folder *folder, FolderItem *item) void nntp_disconnect_all(gboolean have_connectivity) { GList *list; - gboolean short_timeout; -#ifdef HAVE_NETWORKMANAGER_SUPPORT - GError *error; -#endif - -#ifdef HAVE_NETWORKMANAGER_SUPPORT - error = NULL; - short_timeout = !networkmanager_is_online(&error); - if(error) { - short_timeout = TRUE; - g_error_free(error); - } -#else - short_timeout = TRUE; -#endif - if(short_timeout) - nntp_main_set_timeout(1); + nntp_main_set_timeout(1); for (list = account_get_list(); list != NULL; list = list->next) { PrefsAccount *account = list->data; @@ -1454,9 +1438,7 @@ void nntp_disconnect_all(gboolean have_connectivity) } } } - - if(short_timeout) - nntp_main_set_timeout(prefs_common.io_timeout_secs); + nntp_main_set_timeout(prefs_common.io_timeout_secs); } #else diff --git a/src/prefs_common.c b/src/prefs_common.c @@ -1280,8 +1280,6 @@ static PrefParam param[] = { NULL, NULL, NULL}, {"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT, NULL, NULL, NULL}, - {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL, - NULL, NULL, NULL}, {"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL, NULL, NULL, NULL}, diff --git a/src/prefs_common.h b/src/prefs_common.h @@ -571,7 +571,6 @@ struct _PrefsCommon gint print_previewwin_width; gint print_previewwin_height; - gboolean use_networkmanager; gboolean use_shred; gboolean two_line_vert; gboolean inherit_folder_props;