static void imap_handle_error(Session *session, int libetpan_errcode)
{
+ const gchar *session_server = (session ? session->server:"(null)");
switch(libetpan_errcode) {
case MAILIMAP_NO_ERROR:
return;
case MAILIMAP_NO_ERROR_AUTHENTICATED:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: authenticated\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: authenticated\n"), session_server);
break;
case MAILIMAP_NO_ERROR_NON_AUTHENTICATED:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: not authenticated\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: not authenticated\n"), session_server);
break;
case MAILIMAP_ERROR_BAD_STATE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: bad state\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: bad state\n"), session_server);
break;
case MAILIMAP_ERROR_STREAM:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: stream error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: stream error\n"), session_server);
break;
case MAILIMAP_ERROR_PARSE:
log_warning(LOG_PROTOCOL, _("IMAP error on %s: parse error "
- "(very probably non-RFC compliance from the server)\n"), session->server);
+ "(very probably non-RFC compliance from the server)\n"), session_server);
break;
case MAILIMAP_ERROR_CONNECTION_REFUSED:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: connection refused\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: connection refused\n"), session_server);
break;
case MAILIMAP_ERROR_MEMORY:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: memory error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: memory error\n"), session_server);
break;
case MAILIMAP_ERROR_FATAL:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: fatal error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: fatal error\n"), session_server);
break;
case MAILIMAP_ERROR_PROTOCOL:
log_warning(LOG_PROTOCOL, _("IMAP error on %s: protocol error"
- "(very probably non-RFC compliance from the server)\n"), session->server);
+ "(very probably non-RFC compliance from the server)\n"), session_server);
break;
case MAILIMAP_ERROR_DONT_ACCEPT_CONNECTION:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: connection not accepted\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: connection not accepted\n"), session_server);
break;
case MAILIMAP_ERROR_APPEND:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: APPEND error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: APPEND error\n"), session_server);
break;
case MAILIMAP_ERROR_NOOP:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: NOOP error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: NOOP error\n"), session_server);
break;
case MAILIMAP_ERROR_LOGOUT:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: LOGOUT error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: LOGOUT error\n"), session_server);
break;
case MAILIMAP_ERROR_CAPABILITY:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: CAPABILITY error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: CAPABILITY error\n"), session_server);
break;
case MAILIMAP_ERROR_CHECK:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: CHECK error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: CHECK error\n"), session_server);
break;
case MAILIMAP_ERROR_CLOSE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: CLOSE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: CLOSE error\n"), session_server);
break;
case MAILIMAP_ERROR_EXPUNGE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: EXPUNGE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: EXPUNGE error\n"), session_server);
break;
case MAILIMAP_ERROR_COPY:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: COPY error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: COPY error\n"), session_server);
break;
case MAILIMAP_ERROR_UID_COPY:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID COPY error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID COPY error\n"), session_server);
break;
case MAILIMAP_ERROR_CREATE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: CREATE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: CREATE error\n"), session_server);
break;
case MAILIMAP_ERROR_DELETE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: DELETE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: DELETE error\n"), session_server);
break;
case MAILIMAP_ERROR_EXAMINE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: EXAMINE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: EXAMINE error\n"), session_server);
break;
case MAILIMAP_ERROR_FETCH:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: FETCH error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: FETCH error\n"), session_server);
break;
case MAILIMAP_ERROR_UID_FETCH:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID FETCH error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID FETCH error\n"), session_server);
break;
case MAILIMAP_ERROR_LIST:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: LIST error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: LIST error\n"), session_server);
break;
case MAILIMAP_ERROR_LOGIN:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: LOGIN error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: LOGIN error\n"), session_server);
break;
case MAILIMAP_ERROR_LSUB:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: LSUB error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: LSUB error\n"), session_server);
break;
case MAILIMAP_ERROR_RENAME:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: RENAME error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: RENAME error\n"), session_server);
break;
case MAILIMAP_ERROR_SEARCH:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: SEARCH error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: SEARCH error\n"), session_server);
break;
case MAILIMAP_ERROR_UID_SEARCH:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID SEARCH error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID SEARCH error\n"), session_server);
break;
case MAILIMAP_ERROR_SELECT:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: SELECT error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: SELECT error\n"), session_server);
break;
case MAILIMAP_ERROR_STATUS:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: STATUS error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: STATUS error\n"), session_server);
break;
case MAILIMAP_ERROR_STORE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: STORE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: STORE error\n"), session_server);
break;
case MAILIMAP_ERROR_UID_STORE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID STORE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: UID STORE error\n"), session_server);
break;
case MAILIMAP_ERROR_SUBSCRIBE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: SUBSCRIBE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: SUBSCRIBE error\n"), session_server);
break;
case MAILIMAP_ERROR_UNSUBSCRIBE:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: UNSUBSCRIBE error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: UNSUBSCRIBE error\n"), session_server);
break;
case MAILIMAP_ERROR_STARTTLS:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: STARTTLS error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: STARTTLS error\n"), session_server);
break;
case MAILIMAP_ERROR_INVAL:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: INVAL error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: INVAL error\n"), session_server);
break;
case MAILIMAP_ERROR_EXTENSION:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: EXTENSION error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: EXTENSION error\n"), session_server);
break;
case MAILIMAP_ERROR_SASL:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: SASL error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: SASL error\n"), session_server);
break;
#if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
case MAILIMAP_ERROR_SSL:
- log_warning(LOG_PROTOCOL, _("IMAP error on %s: SSL error\n"), session->server);
+ log_warning(LOG_PROTOCOL, _("IMAP error on %s: SSL error\n"), session_server);
break;
#endif
default:
log_warning(LOG_PROTOCOL, _("IMAP error on %s: Unknown error [%d]\n"),
- session->server, libetpan_errcode);
+ session_server, libetpan_errcode);
break;
}
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(item != NULL, NULL);
folder_path = imap_folder_get_path(folder);
g_return_val_if_fail(folder_path != NULL, NULL);
+ item_path = g_strdup(item->path);
+
+#ifdef G_OS_WIN32
+ if (strchr(item_path, ':') ||
+ strchr(item_path, '|') ||
+ strchr(item_path, '<') ||
+ strchr(item_path, '>') ||
+ strchr(item_path, '*') ||
+ strchr(item_path, '?') ||
+ strchr(item_path, '#') ||
+ strchr(item_path, ':')
+ ) {
+ g_free(item_path);
+ item_path = g_malloc(strlen(item->path)*3 +1);
+ qp_encode_line(item_path, item->path);
+ }
+#endif
+
if (g_path_is_absolute(folder_path)) {
- if (item->path)
+ if (item_path)
path = g_strconcat(folder_path, G_DIR_SEPARATOR_S,
- item->path, NULL);
+ item_path, NULL);
else
path = g_strdup(folder_path);
} else {
- if (item->path)
+ if (item_path)
path = g_strconcat(get_home_dir(), G_DIR_SEPARATOR_S,
folder_path, G_DIR_SEPARATOR_S,
- item->path, NULL);
+ item_path, NULL);
else
path = g_strconcat(get_home_dir(), G_DIR_SEPARATOR_S,
folder_path, NULL);
}
g_free(folder_path);
+ g_free(item_path);
#ifdef G_OS_WIN32
while (strchr(path, '/'))
*strchr(path, '/') = '\\';