return imap;
}
+static gboolean cb_show_error(gpointer data)
+{
+ mainwindow_show_error();
+ return FALSE;
+}
static void generic_cb(int cancelled, void * result, void * callback_data)
{
op->imap->imap_response_info->rsp_alert) {
log_error(LOG_PROTOCOL, "IMAP4< Alert: %s\n",
op->imap->imap_response_info->rsp_alert);
- mainwindow_show_error();
+ g_timeout_add(10, cb_show_error, NULL);
}
op->finished = 1;
}
#endif
result->error = r;
+ if (param->imap->imap_response)
+ imap_logger_cmd(0, param->imap->imap_response, strlen(param->imap->imap_response));
debug_print("imap login run - end %i\n", r);
}
int flags;
int * pflags;
+ tags = NULL;
+
msg_att = clist_content(cur);
uid = 0;
g_unlink(param->filename);
free:
+ /* mmap_string_unref is a simple free in libetpan
+ * when it has MMAP_UNAVAILABLE defined */
if (mmap_string_unref(content) != 0)
free(content);
}
flags &= ~MSG_NEW;
break;
case MAILIMAP_FLAG_KEYWORD:
- tags = g_slist_prepend(tags, g_strdup(flag_fetch->fl_flag->fl_data.fl_keyword));
+ if (s_tags)
+ tags = g_slist_prepend(tags, g_strdup(flag_fetch->fl_flag->fl_data.fl_keyword));
break;
}
}
}
if (s_tags)
*s_tags = tags;
- else {
- slist_free_strings(tags);
- g_slist_free(tags);
- }
return flags;
}
char * headers;
size_t size;
struct mailimap_msg_att_dynamic * att_dyn;
- GSList *s_tags = NULL;
+
imap_get_msg_att_info(msg_att, &uid, &headers, &size,
&att_dyn);
info->uid = uid;
info->headers = strdup(headers);
info->size = size;
- info->flags = imap_flags_to_flags(att_dyn, &s_tags);
+ info->flags = imap_flags_to_flags(att_dyn, tags);
- if (tags)
- *tags = s_tags;
- else {
- slist_free_strings(s_tags);
- g_slist_free(s_tags);
- }
return info;
}
clistiter * cur;
unsigned int i;
carray * env_list;
+
i = 0;
- GSList *tags = NULL;
env_list = carray_new(16);
for(cur = clist_begin(fetch_result) ; cur != NULL ;
cur = clist_next(cur)) {
struct mailimap_msg_att * msg_att;
struct imap_fetch_env_info * env_info;
-
+ GSList *tags = NULL;
+
msg_att = clist_content(cur);
env_info = fetch_to_env_info(msg_att, &tags);
int r;
char * data;
size_t size;
+#ifndef G_OS_WIN32
struct stat stat_buf;
int fd;
+#endif
guint32 uid = 0, val = 0;
param = op->param;
CHECK_IMAP();
+#ifndef G_OS_WIN32
r = stat(param->filename, &stat_buf);
if (r < 0) {
result->error = MAILIMAP_ERROR_APPEND;
result->error = MAILIMAP_ERROR_APPEND;
return;
}
-
+#else
+ data = file_read_to_str_no_recode(param->filename);
+ if (data == NULL) {
+ result->error = MAILIMAP_ERROR_APPEND;
+ return;
+ }
+ size = strlen(data);
+#endif
mailstream_logger = imap_logger_append;
r = mailimap_uidplus_append(param->imap, param->mailbox,
mailstream_logger = imap_logger_cmd;
+#ifndef G_OS_WIN32
munmap(data, size);
close(fd);
+#else
+ g_free(data);
+#endif
result->error = r;
result->uid = uid;
#define ENV_BUFFER_SIZE 512
-
+#ifndef G_OS_WIN32
static void do_exec_command(int fd, const char * command,
const char * servername, uint16_t port)
{
return result.error;
}
+#endif /* G_OS_WIN32 */
void imap_threaded_cancel(Folder * folder)
{