/*
* Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2020 the Claws Mail team and Hiroyuki Yamamoto
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "tags.h"
#include "main.h"
#include "passwordstore.h"
+#include "file-utils.h"
typedef struct _IMAPFolder IMAPFolder;
typedef struct _IMAPSession IMAPSession;
typedef struct _IMAPNameSpace IMAPNameSpace;
typedef struct _IMAPFolderItem IMAPFolderItem;
-#include "prefs_account.h"
-
#define IMAP_FOLDER(obj) ((IMAPFolder *)obj)
#define IMAP_FOLDER_ITEM(obj) ((IMAPFolderItem *)obj)
#define IMAP_SESSION(obj) ((IMAPSession *)obj)
FolderItem *item,
MsgInfoList *msglist,
GHashTable *msgflags);
-static gchar *imap_folder_get_path (Folder *folder);
static gchar *imap_item_get_path (Folder *folder,
FolderItem *item);
static MsgInfo *imap_parse_msg(const gchar *file, FolderItem *item);
if (imap_class.idstr == NULL) {
imap_class.type = F_IMAP;
imap_class.idstr = "imap";
- imap_class.uistr = "IMAP4";
+ imap_class.uistr = "IMAP";
imap_class.supports_server_search = TRUE;
/* Folder functions */
if (rfolder == NULL)
return;
- log_warning(LOG_PROTOCOL, _("IMAP4 connection broken\n"));
+ log_warning(LOG_PROTOCOL, _("IMAP connection broken\n"));
SESSION(session)->state = SESSION_DISCONNECTED;
SESSION(session)->sock = NULL;
}
}
}
+#define MY_LOG_WARNING(concat_cmd, ...) \
+ msg = concat_cmd; \
+ log_warning(LOG_PROTOCOL, msg, __VA_ARGS__); \
+ g_free(msg);
+
static void imap_handle_error(Session *session, const gchar *server, int libetpan_errcode)
{
const gchar *session_server = (session ? session->server : NULL);
+ gchar *msg;
if (session_server == NULL)
session_server = server;
case MAILIMAP_NO_ERROR:
return;
case MAILIMAP_NO_ERROR_AUTHENTICATED:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("authenticated"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("authenticated"), "\n", NULL), session_server)
break;
case MAILIMAP_NO_ERROR_NON_AUTHENTICATED:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("not authenticated"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("not authenticated"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_BAD_STATE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("bad state"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("bad state"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_STREAM:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("stream error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("stream error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_PARSE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("parse error "
- "(very probably non-RFC compliance from the server)"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("parse error "
+ "(very probably non-RFC compliance from the server)"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_CONNECTION_REFUSED:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("connection refused"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("connection refused"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_MEMORY:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("memory error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("memory error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_FATAL:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("fatal error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("fatal error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_PROTOCOL:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("protocol error "
- "(very probably non-RFC compliance from the server)"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("protocol error "
+ "(very probably non-RFC compliance from the server)"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_DONT_ACCEPT_CONNECTION:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("connection not accepted"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("connection not accepted"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_APPEND:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("APPEND error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("APPEND error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_NOOP:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("NOOP error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("NOOP error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_LOGOUT:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("LOGOUT error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("LOGOUT error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_CAPABILITY:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("CAPABILITY error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("CAPABILITY error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_CHECK:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("CHECK error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("CHECK error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_CLOSE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("CLOSE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("CLOSE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_EXPUNGE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("EXPUNGE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("EXPUNGE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_COPY:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("COPY error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("COPY error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_UID_COPY:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("UID COPY error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("UID COPY error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_CREATE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("CREATE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("CREATE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_DELETE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("DELETE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("DELETE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_EXAMINE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("EXAMINE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("EXAMINE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_FETCH:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("FETCH error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("FETCH error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_UID_FETCH:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("UID FETCH error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("UID FETCH error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_LIST:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("LIST error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("LIST error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_LOGIN:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("LOGIN error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("LOGIN error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_LSUB:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("LSUB error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("LSUB error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_RENAME:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("RENAME error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("RENAME error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_SEARCH:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("SEARCH error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("SEARCH error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_UID_SEARCH:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("UID SEARCH error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("UID SEARCH error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_SELECT:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("SELECT error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("SELECT error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_STATUS:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("STATUS error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("STATUS error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_STORE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("STORE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("STORE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_UID_STORE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("UID STORE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("UID STORE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_SUBSCRIBE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("SUBSCRIBE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("SUBSCRIBE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_UNSUBSCRIBE:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("UNSUBSCRIBE error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("UNSUBSCRIBE error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_STARTTLS:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("STARTTLS error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("STARTTLS error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_INVAL:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("INVAL error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("INVAL error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_EXTENSION:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("EXTENSION error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("EXTENSION error"), "\n", NULL), session_server)
break;
case MAILIMAP_ERROR_SASL:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("SASL error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("SASL error"), "\n", NULL), session_server)
break;
#ifdef USE_GNUTLS
case MAILIMAP_ERROR_SSL:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("SSL/TLS error"), "\n", NULL), session_server);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("SSL/TLS error"), "\n", NULL), session_server)
break;
#endif
default:
- log_warning(LOG_PROTOCOL, g_strconcat(_("IMAP error on %s:"), " ", _("Unknown error [%d]"), "\n", NULL),
- session_server, libetpan_errcode);
+ MY_LOG_WARNING(g_strconcat(_("IMAP error on %s:"), " ", _("Unknown error [%d]"), "\n", NULL),
+ session_server, libetpan_errcode)
break;
}
}
}
+#undef MY_LOG_WARNING
+
static Folder *imap_folder_new(const gchar *name, const gchar *path)
{
Folder *folder;
session = NULL;
} else {
rfolder->session = NULL;
- log_warning(LOG_PROTOCOL, _("IMAP4 connection to %s has been"
+ log_warning(LOG_PROTOCOL, _("IMAP connection to %s has been"
" disconnected. Reconnecting...\n"),
folder->account->recv_server);
- statusbar_print_all(_("IMAP4 connection to %s has been"
+ statusbar_print_all(_("IMAP connection to %s has been"
" disconnected. Reconnecting...\n"),
folder->account->recv_server);
SESSION(session)->state = SESSION_DISCONNECTED;
const PrefsAccount *account)
{
IMAPSession *session;
+ ProxyInfo *proxy_info = NULL;
gushort port;
int r;
int authenticated = FALSE;
"Do you want to continue connecting to this "
"server? The communication would not be "
"secure."),
- GTK_STOCK_CANCEL, _("Con_tinue connecting"),
- NULL, FALSE, NULL, ALERT_WARNING,
- G_ALERTDEFAULT) != G_ALERTALTERNATE)
+ GTK_STOCK_CANCEL, _("Con_tinue connecting"), NULL,
+ ALERTFOCUS_FIRST, FALSE, NULL, ALERT_WARNING) != G_ALERTALTERNATE)
return NULL;
}
port = account->set_imapport ? account->imapport
#endif
imap_init(folder);
- buf = g_strdup_printf(_("Account '%s': Connecting to IMAP4 server: %s:%d..."),
+ buf = g_strdup_printf(_("Account '%s': Connecting to IMAP server: %s:%d..."),
folder->account->account_name, folder->account->recv_server,
port);
- statuswindow_print_all("%s", buf);
+ statusbar_print_all("%s", buf);
log_message(LOG_PROTOCOL, "%s\n", buf);
g_free(buf);
+ if (account->use_proxy) {
+ if (account->use_default_proxy) {
+ proxy_info = (ProxyInfo *)&(prefs_common.proxy_info);
+ if (proxy_info->use_proxy_auth)
+ proxy_info->proxy_pass = passwd_store_get(PWS_CORE, PWS_CORE_PROXY,
+ PWS_CORE_PROXY_PASS);
+ } else {
+ proxy_info = (ProxyInfo *)&(account->proxy_info);
+ if (proxy_info->use_proxy_auth)
+ proxy_info->proxy_pass = passwd_store_get_account(account->account_id,
+ PWS_ACCOUNT_PROXY_PASS);
+ }
+ }
+
#ifndef G_OS_WIN32
if (account->set_tunnelcmd) {
r = imap_threaded_connect_cmd(folder,
#endif
{
#ifdef USE_GNUTLS
+
if (ssl_type == SSL_TUNNEL) {
r = imap_threaded_connect_ssl(folder,
account->recv_server,
- port);
+ port,
+ proxy_info);
}
else
#endif
{
r = imap_threaded_connect(folder,
account->recv_server,
- port);
+ port,
+ proxy_info);
}
}
- statuswindow_pop_all();
+ statusbar_pop_all();
if (r == MAILIMAP_NO_ERROR_AUTHENTICATED) {
authenticated = TRUE;
}
imap_handle_error(NULL, account->recv_server, r);
if(!prefs_common.no_recv_err_panel) {
- alertpanel_error_log(_("Can't connect to IMAP4 server: %s:%d"),
+ alertpanel_error_log(_("Can't connect to IMAP server: %s:%d"),
account->recv_server, port);
} else {
- log_error(LOG_PROTOCOL, _("Can't connect to IMAP4 server: %s:%d\n"),
+ log_error(LOG_PROTOCOL, _("Can't connect to IMAP server: %s:%d\n"),
account->recv_server, port);
}
session_init(SESSION(session), account, FALSE);
SESSION(session)->type = SESSION_IMAP;
SESSION(session)->server = g_strdup(account->recv_server);
- SESSION(session)->port = port;
+ SESSION(session)->port = port;
SESSION(session)->sock = NULL;
-
+ SESSION(session)->proxy_info = proxy_info;
SESSION(session)->destroy = imap_session_destroy;
session->capability = NULL;
-
session->authenticated = authenticated;
session->mbox = NULL;
session->exists = 0;
session->uidplus = FALSE;
session->cmd_count = 1;
}
+ SESSION(session)->use_tls_sni = account->use_tls_sni;
#endif
+
log_message(LOG_PROTOCOL, "IMAP connection is %s-authenticated\n",
(session->authenticated) ? "pre" : "un");
}
if (acc_pass != NULL) {
- g_free(acc_pass);
memset(acc_pass, 0, strlen(acc_pass));
+ g_free(acc_pass);
+ acc_pass = NULL;
}
return ok;
memset(acc_pass, 0, strlen(acc_pass));
g_free(acc_pass);
}
- statuswindow_pop_all();
+ statusbar_pop_all();
session->authenticated = TRUE;
return MAILIMAP_NO_ERROR;
}
if (filename == NULL)
return -1;
- fp = g_fopen(filename, "rb");
+ fp = claws_fopen(filename, "rb");
if (!fp)
return -1;
- while (fgets(buf, sizeof (buf), fp) != NULL) {
+ while (claws_fgets(buf, sizeof (buf), fp) != NULL) {
cnt += strlen(buf);
if (!strstr(buf, "\r\n") && strstr(buf, "\n"))
cnt++;
}
- fclose(fp);
+ claws_fclose(fp);
return cnt;
}
ok = file_strip_crs(filename);
if (ok == 0 && cached && cached->size <= have_size) {
/* we have it all and stripped */
- debug_print("...fully cached in fact (%u/%zd); setting flag.\n",
+ debug_print("...fully cached in fact (%u/%"G_GOFFSET_FORMAT"); setting flag.\n",
have_size, cached->size);
procmsg_msginfo_set_flags(cached, MSG_FULLY_CACHED, 0);
}
size = get_file_size_with_crs(filename);
}
g_free(filename);
- debug_print("msg %d cached, has size %d, full should be %zd.\n", uid, size, cached->size);
+ debug_print("msg %d cached, has size %d, full should be %"G_GOFFSET_FORMAT".\n", uid, size, cached->size);
if (cached && size >= cached->size) {
cached->total_size = cached->size;
procmsg_msginfo_set_flags(cached, MSG_FULLY_CACHED, 0);
if (progress_cb)
progress_cb(progress_data, TRUE, container->total_msgs, 0, container->total_msgs);
+ if (result == MAILIMAP_ERROR_PROTOCOL) {
+ debug_print("Server side search unavailable, using local search\n");
+ imap_handle_error(SESSION(session), NULL, result);
+ result = folder_item_search_msgs_local(folder, container, msgs, NULL,
+ predicate, progress_cb, progress_data);
+ if (result < 0) {
+ debug_print("search_msgs - got protocol error, aborting\n");
+ alertpanel_error_log(_("Search failed due to server error."));
+ return -1;
+ }
+
+ return result;
+ }
+
if (result == MAILIMAP_NO_ERROR) {
gint result = 0;
if (IMAP_FOLDER(folder)->search_charset_supported)
return search_msgs(folder, container, msgs, on_server, predicate,
progress_cb, progress_data);
- else
+ else {
+ imap_handle_error(SESSION(session), NULL, result);
return -1;
+ }
} else {
+ imap_handle_error(SESSION(session), NULL, result);
return -1;
}
}
}
if (!item || ((item->path || root_folder) &&
- strcmp2(item->path, root_folder) != 0)) {
+ g_strcmp0(item->path, root_folder) != 0)) {
folder_tree_destroy(folder);
item = folder_item_new(folder, folder->name, root_folder);
item->folder = folder;
new_item = NULL;
for (cur = item_list; cur != NULL; cur = cur->next) {
FolderItem *cur_item = FOLDER_ITEM(cur->data);
- if (!strcmp2(old_item->path, cur_item->path)) {
+ if (!g_strcmp0(old_item->path, cur_item->path)) {
new_item = cur_item;
break;
}
for (node = item->node->children; node != NULL;
node = node->next) {
- if (!strcmp2(FOLDER_ITEM(node->data)->path,
+ if (!g_strcmp0(FOLDER_ITEM(node->data)->path,
cur_item->path)) {
new_item = FOLDER_ITEM(node->data);
folder_item_destroy(cur_item);
}
folder_item_destroy(cur_item);
oldlitem = g_list_find_custom(
- child_list, tmp, (GCompareFunc)strcmp2);
+ child_list, tmp, (GCompareFunc)g_strcmp0);
if (oldlitem) {
child_list = g_list_remove_link(child_list, oldlitem);
g_free(oldlitem->data);
return new_item;
}
-static gchar *imap_folder_get_path(Folder *folder)
-{
- gchar *folder_path;
-
- g_return_val_if_fail(folder != NULL, NULL);
- g_return_val_if_fail(folder->account != NULL, NULL);
-
-#ifdef G_OS_WIN32
- gchar *sanitized_dirname = g_strdup(folder->account->recv_server);
- g_strdelimit(sanitized_dirname, ":", ',');
-#endif
-
- folder_path = g_strconcat(get_imap_cache_dir(),
- G_DIR_SEPARATOR_S,
-#ifdef G_OS_WIN32
- sanitized_dirname,
-#else
- folder->account->recv_server,
-#endif
- G_DIR_SEPARATOR_S,
- folder->account->userid,
- NULL);
-
-#ifdef G_OS_WIN32
- g_free(sanitized_dirname);
-#endif
- return folder_path;
-}
-
#ifdef G_OS_WIN32
static gchar *imap_encode_unsafe_chars(const gchar *str)
{
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);
- folder_path = imap_folder_get_path(folder);
+ folder_path = prefs_account_cache_dir(folder->account, FALSE);
g_return_val_if_fail(folder_path != NULL, NULL);
strtailchomp(new_name, '/');
if (strcasecmp(dirpath, "INBOX") != 0) {
- GPtrArray *argbuf;
int r;
clist * lep_list;
- argbuf = g_ptr_array_new();
r = imap_threaded_list(folder, "", imap_path, &lep_list);
if (r != MAILIMAP_NO_ERROR) {
imap_handle_error(SESSION(session), NULL, r);
log_warning(LOG_PROTOCOL, _("can't create mailbox: LIST failed\n"));
g_free(imap_path);
g_free(dirpath);
- ptr_array_free_strings(argbuf);
- g_ptr_array_free(argbuf, TRUE);
return NULL;
}
gint ok;
if (!strcmp(type, "plaintext") && imap_has_capability(session, "LOGINDISABLED")) {
- gint ok = MAILIMAP_ERROR_BAD_STATE;
+ ok = MAILIMAP_ERROR_BAD_STATE;
if (imap_has_capability(session, "STARTTLS")) {
#ifdef USE_GNUTLS
log_warning(LOG_PROTOCOL, _("Server requires STARTTLS to log in.\n"));
}
}
- log_print(LOG_PROTOCOL, "IMAP4> Logging %s to %s using %s\n",
+ log_print(LOG_PROTOCOL, "IMAP> Logging %s to %s using %s\n",
user,
SESSION(session)->server,
type);
r = imap_threaded_login(session->folder, user, pass, type);
if (r != MAILIMAP_NO_ERROR) {
imap_handle_error(SESSION(session), NULL, r);
- log_print(LOG_PROTOCOL, "IMAP4< Error logging in to %s\n",
+ log_print(LOG_PROTOCOL, "IMAP< Error logging in to %s\n",
SESSION(session)->server);
ok = r;
} else {
- log_print(LOG_PROTOCOL, "IMAP4< Login to %s successful\n",
+ log_print(LOG_PROTOCOL, "IMAP< Login to %s successful\n",
SESSION(session)->server);
ok = MAILIMAP_NO_ERROR;
}
/*
* NEW and DELETED flags are not syncronized
* - The NEW/RECENT flags in IMAP folders can not really be directly
- * modified by Sylpheed
- * - The DELETE/DELETED flag in IMAP and Sylpheed don't have the same
+ * modified by Claws Mail
+ * - The DELETE/DELETED flag in IMAP and Claws Mail do not have the same
* meaning, in IMAP it always removes the messages from the FolderItem
- * in Sylpheed it can mean to move the message to trash
+ * in Claws Mail it can mean to move the message to Trash
*/
typedef struct _get_flags_data {
if (imap_class.idstr == NULL) {
imap_class.type = F_IMAP;
imap_class.idstr = "imap";
- imap_class.uistr = "IMAP4";
+ imap_class.uistr = "IMAP";
imap_class.new_folder = imap_folder_new;
imap_class.create_tree = imap_create_tree;