const gchar *msg,
gpointer data);
static gint inc_drop_message (Pop3Session *session,
- const gchar *file,
- gboolean update_file);
+ const gchar *file);
static void inc_put_error (IncState istate,
- const gchar *msg);
+ Pop3Session *session);
static void inc_cancel_cb (GtkWidget *widget,
gpointer data);
G_CALLBACK(inc_dialog_delete_cb), dialog);
/* manage_window_set_transient(GTK_WINDOW(progress->window)); */
- progress_dialog_set_value(progress, 0.0);
+ progress_dialog_get_fraction(progress);
stock_pixmap_gdk(progress->clist, STOCK_PIXMAP_COMPLETE,
&okxpm, &okxpmmask);
static void inc_progress_dialog_clear(IncProgressDialog *inc_dialog)
{
- progress_dialog_set_value(inc_dialog->dialog, 0.0);
+ progress_dialog_get_fraction(inc_dialog->dialog);
progress_dialog_set_label(inc_dialog->dialog, "");
if (inc_dialog->mainwin)
main_window_progress_off(inc_dialog->mainwin);
msglist = folder_item_get_msg_list(processing);
/* process messages */
+ folder_item_update_freeze();
for(msglist_element = msglist; msglist_element != NULL; msglist_element = msglist_element->next) {
msginfo = (MsgInfo *) msglist_element->data;
if (!pop3_session->ac_prefs->filter_on_recv || !procmsg_msginfo_filter(msginfo))
folder_item_move_msg(inbox, msginfo);
procmsg_msginfo_free(msginfo);
}
+ folder_item_update_thaw();
g_slist_free(msglist);
+ statusbar_pop_all();
+
new_msgs += pop3_session->cur_total_num;
if (pop3_session->error_val == PS_AUTHFAIL &&
manage_window_focus_in
(inc_dialog->dialog->window,
NULL, NULL);
- inc_put_error(inc_state, pop3_session->error_msg);
+ inc_put_error(inc_state, pop3_session);
if (inc_dialog->show_dialog)
manage_window_focus_out
(inc_dialog->dialog->window,
progress_dialog_set_label(inc_dialog->dialog, buf);
}
- progress_dialog_set_percentage
+ progress_dialog_set_fraction
(inc_dialog->dialog,(gfloat)cur_total / (gfloat)total);
- gtk_progress_set_show_text
- (GTK_PROGRESS(inc_dialog->mainwin->progressbar), TRUE);
g_snprintf(buf, sizeof(buf), "%d / %d",
pop3_session->cur_msg, pop3_session->count);
- gtk_progress_set_format_string
- (GTK_PROGRESS(inc_dialog->mainwin->progressbar), buf);
- gtk_progress_bar_update
+ gtk_progress_bar_set_text
+ (GTK_PROGRESS_BAR(inc_dialog->mainwin->progressbar), buf);
+ gtk_progress_bar_set_fraction
(GTK_PROGRESS_BAR(inc_dialog->mainwin->progressbar),
(gfloat)cur_total / (gfloat)total);
return 0;
}
-static gint inc_drop_message(Pop3Session *session, const gchar *file,
- gboolean update_file)
+static gint inc_drop_message(Pop3Session *session, const gchar *file)
{
FolderItem *inbox;
FolderItem *dropfolder;
/* add msg file to drop folder */
if ((msgnum = folder_item_add_msg(
- dropfolder, file, NULL, !update_file)) < 0) {
+ dropfolder, file, NULL, TRUE)) < 0) {
unlink(file);
return -1;
}
- if (update_file) {
- gchar *path = strdup(file);
- gchar *snum = strrchr(file, G_DIR_SEPARATOR);
- int num = 0;
- FolderItem *item = NULL;
-
- if (snum) {
- snum++;
- } else {
- g_free(path);
- return 0; /* not a real problem */
- }
-
- num = atoi(snum);
-
- if (strrchr(path, G_DIR_SEPARATOR))
- *(strrchr(path, G_DIR_SEPARATOR))='\0';
-
- item = folder_find_item_from_phys_path(path);
- if (item) {
- folder_item_remove_msg(item, num);
- }
- g_free(path);
- }
return 0;
}
-static void inc_put_error(IncState istate, const gchar *msg)
+static void inc_put_error(IncState istate, Pop3Session *session)
{
gchar *log_msg = NULL;
gchar *err_msg = NULL;
log_msg = _("Connection failed.");
if (prefs_common.no_recv_err_panel)
break;
- err_msg = g_strdup(log_msg);
+ err_msg = g_strdup_printf(_("Connection to %s:%d failed."),
+ SESSION(session)->server,
+ SESSION(session)->port);
break;
case INC_ERROR:
log_msg = _("Error occurred while processing mail.");
if (prefs_common.no_recv_err_panel)
break;
- if (msg)
+ if (session->error_msg)
err_msg = g_strdup_printf
(_("Error occurred while processing mail:\n%s"),
- msg);
+ session->error_msg);
else
err_msg = g_strdup(log_msg);
break;
log_msg = _("Socket error.");
if (prefs_common.no_recv_err_panel)
break;
- err_msg = g_strdup(log_msg);
+ err_msg = g_strdup_printf(_("Socket error on connection to %s:%d."),
+ SESSION(session)->server,
+ SESSION(session)->port);
break;
case INC_EOF:
log_msg = _("Connection closed by the remote host.");
if (prefs_common.no_recv_err_panel)
break;
- err_msg = g_strdup(log_msg);
+ err_msg = g_strdup_printf(_("Connection to %s:%d closed by the remote host."),
+ SESSION(session)->server,
+ SESSION(session)->port);
break;
case INC_LOCKED:
log_msg = _("Mailbox is locked.");
if (prefs_common.no_recv_err_panel)
break;
- if (msg)
+ if (session->error_msg)
err_msg = g_strdup_printf(_("Mailbox is locked:\n%s"),
- msg);
+ session->error_msg);
else
err_msg = g_strdup(log_msg);
break;
log_msg = _("Authentication failed.");
if (prefs_common.no_recv_err_panel)
break;
- if (msg)
+ if (session->error_msg)
err_msg = g_strdup_printf
- (_("Authentication failed:\n%s"), msg);
+ (_("Authentication failed:\n%s"), session->error_msg);
else
err_msg = g_strdup(log_msg);
break;
log_msg = _("Session timed out.");
if (prefs_common.no_recv_err_panel)
break;
- err_msg = g_strdup(log_msg);
+ err_msg = g_strdup_printf(_("Connection to %s:%d timed out."),
+ SESSION(session)->server,
+ SESSION(session)->port);
break;
default:
break;
static gint inc_spool_account(PrefsAccount *account)
{
FolderItem *inbox;
- gchar *mbox, *logname;
+ gchar *mbox;
gint result;
- logname = g_get_user_name();
-
if (account->inbox) {
inbox = folder_find_item_from_path(account->inbox);
if (!inbox)
if (is_file_exist(account->local_mbox))
mbox = g_strdup(account->local_mbox);
- else
- mbox = g_strconcat(account->local_mbox,
- G_DIR_SEPARATOR_S, logname, NULL);
+ 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",
+ account->local_mbox);
+ return -1;
+ }
result = get_spool(inbox, mbox);
g_free(mbox);
g_return_val_if_fail(mbox != NULL, -1);
if (!is_file_exist(mbox) || (size = get_file_size(mbox)) == 0) {
- debug_print("no messages in local mailbox.\n");
+ debug_print("%s: no messages in local mailbox.\n", mbox);
return 0;
} else if (size < 0)
return -1;
static void inc_notify_cmd(gint new_msgs, gboolean notify)
{
- gchar *buf;
+ gchar *buf, *numpos;
if (!(new_msgs && notify && prefs_common.newmail_notify_cmd &&
*prefs_common.newmail_notify_cmd))
return;
- if ((buf = strchr(prefs_common.newmail_notify_cmd, '%')) &&
- buf[1] == 'd' && !strchr(&buf[1], '%'))
- buf = g_strdup_printf(prefs_common.newmail_notify_cmd,
- new_msgs);
- else
- buf = g_strdup(prefs_common.newmail_notify_cmd);
+ buf = g_strdup(prefs_common.newmail_notify_cmd);
+ if ((numpos = strstr(buf, "%d")) != NULL) {
+ gchar *buf2;
+
+ *numpos = '\0';
+ buf2 = g_strdup_printf("%s%d%s", buf, new_msgs, numpos + 2);
+ g_free(buf);
+ buf = buf2;
+ }
+ debug_print("executing new mail notification command: %s\n", buf);
execute_command_line(buf, TRUE);
g_free(buf);