+2002-12-10 [christoph] 0.8.6claws96
+
+ * src/compose.c
+ * src/folder.c
+ * src/imap.c
+ * src/inc.c
+ * src/main.c
+ * src/mainwindow.c
+ * src/news.c
+ * src/send.c
+ * src/statusbar.[ch]
+ * src/common/hooks.c
+ * src/common/log.[ch]
+ o handle verbose logging in statusbar directly in statusbar code
+ and common code does not need any knowledge about a statusbar
+ o remove direct calls to statusbar_(puts|pop)_all functions
+
2002-12-10 [jens] 0.8.6claws95
* src/*.c
MICRO_VERSION=6
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws95
+EXTRA_VERSION=claws96
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
void hooks_unregister_hook(gchar *hooklist_name,
guint hook_id)
{
+ GHookList *hooklist;
+ GHook *hook;
+
+ g_return_if_fail(hooklist_name != NULL);
+
+ hooklist = hooks_get_hooklist(hooklist_name);
+ g_return_if_fail(hooklist != NULL);
+
+ hook = g_hook_get(hooklist, hook_id);
+ g_return_if_fail(hook != NULL);
+
+ g_hook_destroy_link(hooklist, hook);
}
struct MarshalData
}
}
-static guint log_verbosity_count = 0;
-
-void log_verbosity_set(gboolean verbose)
-{
- if (verbose)
- log_verbosity_count++;
- else if (log_verbosity_count > 0)
- log_verbosity_count--;
-}
-
-#define TIME_LEN 11
-
void log_print(const gchar *format, ...)
{
va_list args;
- gchar buf[BUFFSIZE + TIME_LEN];
+ gchar buf[BUFFSIZE + LOG_TIME_LEN];
time_t t;
LogText logtext;
time(&t);
- strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
+ strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_start(args, format);
- g_vsnprintf(buf + TIME_LEN, BUFFSIZE, format, args);
+ g_vsnprintf(buf + LOG_TIME_LEN, BUFFSIZE, format, args);
va_end(args);
if (debug_get_mode()) fputs(buf, stdout);
fputs(buf, log_fp);
fflush(log_fp);
}
-
- logtext.text = buf + TIME_LEN;
- if (log_verbosity_count)
- hooks_invoke(STATUSBAR_PUTS_ALL_HOOKLIST, &logtext);
}
void log_message(const gchar *format, ...)
{
va_list args;
- gchar buf[BUFFSIZE + TIME_LEN];
+ gchar buf[BUFFSIZE + LOG_TIME_LEN];
time_t t;
LogText logtext;
time(&t);
- strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
+ strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_start(args, format);
- g_vsnprintf(buf + TIME_LEN, BUFFSIZE, format, args);
+ g_vsnprintf(buf + LOG_TIME_LEN, BUFFSIZE, format, args);
va_end(args);
- if (debug_get_mode()) g_message("%s", buf + TIME_LEN);
- logtext.text = buf + TIME_LEN;
+ if (debug_get_mode()) g_message("%s", buf + LOG_TIME_LEN);
+ logtext.text = buf + LOG_TIME_LEN;
logtext.type = LOG_MSG;
hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
- fwrite(buf, TIME_LEN, 1, log_fp);
+ fwrite(buf, LOG_TIME_LEN, 1, log_fp);
fputs("* message: ", log_fp);
- fputs(buf + TIME_LEN, log_fp);
+ fputs(buf + LOG_TIME_LEN, log_fp);
fflush(log_fp);
}
-
- logtext.text = buf + TIME_LEN;
- hooks_invoke(STATUSBAR_PUTS_ALL_HOOKLIST, &logtext);
}
void log_warning(const gchar *format, ...)
{
va_list args;
- gchar buf[BUFFSIZE + TIME_LEN];
+ gchar buf[BUFFSIZE + LOG_TIME_LEN];
time_t t;
LogText logtext;
time(&t);
- strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
+ strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_start(args, format);
- g_vsnprintf(buf + TIME_LEN, BUFFSIZE, format, args);
+ g_vsnprintf(buf + LOG_TIME_LEN, BUFFSIZE, format, args);
va_end(args);
g_warning("%s", buf);
- logtext.text = buf + TIME_LEN;
+ logtext.text = buf + LOG_TIME_LEN;
logtext.type = LOG_WARN;
hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
- fwrite(buf, TIME_LEN, 1, log_fp);
+ fwrite(buf, LOG_TIME_LEN, 1, log_fp);
fputs("** warning: ", log_fp);
- fputs(buf + TIME_LEN, log_fp);
+ fputs(buf + LOG_TIME_LEN, log_fp);
fflush(log_fp);
}
}
void log_error(const gchar *format, ...)
{
va_list args;
- gchar buf[BUFFSIZE + TIME_LEN];
+ gchar buf[BUFFSIZE + LOG_TIME_LEN];
time_t t;
LogText logtext;
time(&t);
- strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
+ strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_start(args, format);
- g_vsnprintf(buf + TIME_LEN, BUFFSIZE, format, args);
+ g_vsnprintf(buf + LOG_TIME_LEN, BUFFSIZE, format, args);
va_end(args);
g_warning("%s", buf);
- logtext.text = buf + TIME_LEN;
+ logtext.text = buf + LOG_TIME_LEN;
logtext.type = LOG_ERROR;
hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
- fwrite(buf, TIME_LEN, 1, log_fp);
+ fwrite(buf, LOG_TIME_LEN, 1, log_fp);
fputs("*** error: ", log_fp);
- fputs(buf + TIME_LEN, log_fp);
+ fputs(buf + LOG_TIME_LEN, log_fp);
fflush(log_fp);
}
}
#include <glib.h>
#define LOG_APPEND_TEXT_HOOKLIST "log_append_text"
-#define STATUSBAR_PUTS_ALL_HOOKLIST "statusbar_puts_all"
+#define LOG_TIME_LEN 11
typedef enum
{
ac = compose->account;
ok = send_message(tmp, ac, compose->to_list);
- statusbar_pop_all();
}
if (ok == 0 && compose->newsgroup_list) {
100*cnt/g_slist_length(mlist));
msginfo = (MsgInfo *) cur->data;
folder_item_move_msg(new_item, msginfo);
- if (cnt%500)
- statusbar_pop_all();
procmsg_msginfo_free(msginfo);
}
#include "procmsg.h"
#include "procheader.h"
#include "folder.h"
-#include "statusbar.h"
#include "prefs_account.h"
#include "codeconv.h"
#include "utils.h"
rfolder->session = NULL;
}
}
- statusbar_pop_all();
return IMAP_SESSION(rfolder->session);
}
* successfully sent. -- mbp */
if (time(NULL) - rfolder->session->last_access_time < SESSION_TIMEOUT) {
rfolder->session->last_access_time = time(NULL);
- statusbar_pop_all();
return IMAP_SESSION(rfolder->session);
}
if (rfolder->session)
rfolder->session->last_access_time = time(NULL);
- statusbar_pop_all();
return IMAP_SESSION(rfolder->session);
}
mlist = procmsg_read_cache(item, FALSE);
item->last_num = procmsg_get_last_num_in_msg_list(mlist);
procmsg_set_flags(mlist, item);
- statusbar_pop_all();
return mlist;
}
last_uid = first_uid;
} else {
imap_delete_all_cached_messages(item);
- statusbar_pop_all();
return NULL;
}
item->last_num = last_uid;
catch:
- statusbar_pop_all();
return mlist;
}
ok = imap_select(session, IMAP_FOLDER(folder), item->path,
NULL, NULL, NULL, NULL);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
g_warning("can't select mailbox %s\n", item->path);
g_free(filename);
debug_print("getting message %d...\n", uid);
ok = imap_cmd_fetch(SESSION(session)->sock, (guint32)uid, filename);
- statusbar_pop_all();
-
if (ok != IMAP_SUCCESS) {
g_warning("can't fetch message %d\n", uid);
g_free(filename);
ok = imap_status(session, IMAP_FOLDER(folder), dest->path,
&messages, &recent, &uid_next, &uid_validity, &unseen);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
g_warning("can't append message %s\n", file);
return -1;
ok = imap_status(session, IMAP_FOLDER(folder), dest->path,
&messages, &recent, &uid_next, &uid_validity, &unseen);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
g_warning("can't copy message\n");
return -1;
/* ensure source folder selected */
ok = imap_select(session, IMAP_FOLDER(folder), msginfo->folder->path,
NULL, NULL, NULL, NULL);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS)
return -1;
}
g_free(destdir);
- statusbar_pop_all();
if (ok == IMAP_SUCCESS)
return uid_next;
/* ensure source folder selected */
ok = imap_select(session, IMAP_FOLDER(folder),
msginfo->folder->path, NULL, NULL, NULL, NULL);
- statusbar_pop_all();
if (remove_source)
debug_print("Moving message %s%c%d to %s ...\n",
ok = imap_cmd_expunge(SESSION(session)->sock);
g_free(destdir);
- statusbar_pop_all();
if (ok == IMAP_SUCCESS)
return 0;
ok = imap_select(session, IMAP_FOLDER(folder), item->path,
NULL, NULL, NULL, NULL);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS)
return ok;
ok = imap_set_message_flags
(IMAP_SESSION(REMOTE_FOLDER(folder)->session),
(guint32)uid, (guint32)uid, IMAP_FLAG_DELETED, TRUE);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't set deleted flags: %d\n"), uid);
return ok;
}
ok = imap_cmd_expunge(SESSION(session)->sock);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't expunge\n"));
return ok;
ok = imap_select(session, IMAP_FOLDER(folder), item->path,
NULL, NULL, NULL, NULL);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS)
return ok;
ok = imap_set_message_flags
(IMAP_SESSION(REMOTE_FOLDER(folder)->session),
uid, uid, IMAP_FLAG_DELETED, TRUE);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't set deleted flags: %d\n"), uid);
return ok;
}
ok = imap_cmd_expunge(SESSION(session)->sock);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't expunge\n"));
return ok;
ok = imap_select(session, IMAP_FOLDER(folder), item->path,
&exists, &recent, &unseen, &uid_validity);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS)
return ok;
if (exists == 0)
imap_cmd_gen_send(SESSION(session)->sock,
"STORE 1:%d +FLAGS (\\Deleted)", exists);
ok = imap_cmd_ok(SESSION(session)->sock, NULL);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't set deleted flags: 1:%d\n"), exists);
return ok;
}
ok = imap_cmd_expunge(SESSION(session)->sock);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't expunge\n"));
return ok;
ok = imap_status(session, IMAP_FOLDER(folder), item->path,
&messages, &recent, &uid_next, &uid_validity, &unseen);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) return -1;
item->new = unseen > 0 ? recent : 0;
}
g_string_free(str, TRUE);
- statusbar_pop_all();
return item_list;
}
argbuf = g_ptr_array_new();
ok = imap_cmd_list(SESSION(session)->sock, NULL, imap_path,
argbuf);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't create mailbox: LIST failed\n"));
g_free(imap_path);
if (!exist) {
ok = imap_cmd_create(SESSION(session)->sock, imap_path);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't create mailbox\n"));
g_free(imap_path);
session->mbox = NULL;
ok = imap_cmd_examine(SESSION(session)->sock, "INBOX",
&exists, &recent, &unseen, &uid_validity);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
g_free(real_oldpath);
return -1;
imap_path_separator_subst(real_newpath, separator);
ok = imap_cmd_rename(SESSION(session)->sock, real_oldpath, real_newpath);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't rename mailbox: %s to %s\n"),
real_oldpath, real_newpath);
ok = imap_cmd_examine(SESSION(session)->sock, "INBOX",
&exists, &recent, &unseen, &uid_validity);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
g_free(path);
return -1;
}
ok = imap_cmd_delete(SESSION(session)->sock, path);
- statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
log_warning(_("can't delete mailbox\n"));
g_free(path);
}
}
- statusbar_pop_all();
-
/* CLAWS: perform filtering actions on dropped message */
/* CLAWS: get default inbox (perhaps per account) */
if (pop3_state->ac_prefs->inbox) {
progress_dialog_set_label(inc_dialog->dialog, buf);
g_free(buf);
GTK_EVENTS_FLUSH();
- statusbar_pop_all();
if ((sockinfo = sock_connect(server, port)) == NULL) {
log_warning(_("Can't connect to POP3 server: %s:%d\n"),
pop3_state->sockinfo = sockinfo;
atm->help_sock = sockinfo;
- log_verbosity_set(TRUE);
+ statusbar_verbosity_set(TRUE);
/* oha: this messes up inc_progress update:
disabling this would avoid the label "Retrieve Header"
being overwritten by "Retrieve Message"
if (!atm->terminated)
pop3_automaton_terminate(sockinfo, atm);
- log_verbosity_set(FALSE);
+ statusbar_verbosity_set(FALSE);
/* oha: see above */
recv_set_ui_func(NULL, NULL);
if (procmsg_send_queue
(folder->queue, prefs_common.savemsg) < 0)
alertpanel_error(_("Some errors occurred while sending queued messages."));
- statusbar_pop_all();
folder_item_scan(folder->queue);
if (prefs_common.savemsg && folder->outbox) {
folder_update_item(folder->outbox, TRUE);
if (procmsg_send_queue
(folder->queue, prefs_common.savemsg) < 0)
alertpanel_error(_("Some errors occurred while sending queued messages."));
- statusbar_pop_all();
folder_item_scan(folder->queue);
folder_update_item(folder->queue, TRUE);
}
if (!rfolder->session) {
rfolder->session = news_session_new_for_folder(folder);
- statusbar_pop_all();
return NNTP_SESSION(rfolder->session);
}
if (time(NULL) - rfolder->session->last_access_time < SESSION_TIMEOUT) {
rfolder->session->last_access_time = time(NULL);
- statusbar_pop_all();
return NNTP_SESSION(rfolder->session);
}
if (rfolder->session)
rfolder->session->last_access_time = time(NULL);
- statusbar_pop_all();
return NNTP_SESSION(rfolder->session);
}
procmsg_set_flags(alist, item);
- statusbar_pop_all();
-
return alist;
}
}
ok = news_select_group(session, item->path, NULL, NULL, NULL);
- statusbar_pop_all();
if (ok != NN_SUCCESS) {
g_warning("can't select group %s\n", item->path);
g_free(filename);
debug_print("getting article %d...\n", num);
ok = news_get_article(NNTP_SESSION(REMOTE_FOLDER(folder)->session),
num, filename);
- statusbar_pop_all();
if (ok < 0) {
g_warning("can't read article %d\n", num);
g_free(filename);
if (nntp_list(session->nntp_sock) != NN_SUCCESS) {
g_free(filename);
- statusbar_pop_all();
return NULL;
}
- statusbar_pop_all();
if (recv_write_to_file(SESSION(session)->sock, filename) < 0) {
log_warning("can't retrieve newsgroup list\n");
session_destroy(SESSION(session));
list = g_slist_sort(list, (GCompareFunc)news_group_info_compare);
- statusbar_pop_all();
-
return list;
}
fclose(fp);
- statusbar_pop_all();
-
return ok;
}
&& (ac_prefs->protocol == A_APOP || ac_prefs->protocol == A_POP3)
&& (time(NULL) - ac_prefs->last_pop_login_time) > (60 * ac_prefs->pop_before_smtp_timeout)) {
g_snprintf(buf, sizeof(buf), _("Doing POP before SMTP..."));
- statusbar_puts_all(buf);
+ log_message(buf);
progress_dialog_set_label(dialog->dialog, buf);
gtk_clist_set_text(clist, 0, 2, _("POP before SMTP"));
GTK_EVENTS_FLUSH();
"sending data");
progress_dialog_set_label(dialog->dialog, _("Quitting..."));
- statusbar_puts_all(_("Quitting..."));
+ log_message(_("Quitting..."));
GTK_EVENTS_FLUSH();
SEND_EXIT_IF_NOTOK(smtp_eom(SMTP_SESSION(session)), "terminating data");
SEND_EXIT_IF_NOTOK(smtp_quit(SMTP_SESSION(session)), "sending QUIT");
- statusbar_pop_all();
-
session_destroy(session);
send_progress_dialog_destroy(dialog);
_("Sending message (%d / %d bytes)"), \
bytes, size); \
progress_dialog_set_label(dialog->dialog, str); \
- statusbar_puts_all(str); \
progress_dialog_set_percentage \
(dialog->dialog, (gfloat)bytes / (gfloat)size); \
GTK_EVENTS_FLUSH(); \
#define BUFFSIZE 1024
static GList *statusbar_list = NULL;
-gboolean statusbar_puts_all_hook (gpointer source, gpointer data);
+gint statusbar_puts_all_hook_id = -1;
GtkWidget *statusbar_create(void)
{
GtkWidget *statusbar;
statusbar = gtk_statusbar_new();
-
- if(statusbar_list == NULL)
- hooks_register_hook(STATUSBAR_PUTS_ALL_HOOKLIST, statusbar_puts_all_hook, NULL);
statusbar_list = g_list_append(statusbar_list, statusbar);
return statusbar;
}
-gboolean statusbar_puts_all_hook (gpointer source, gpointer data)
-{
- LogText *logtext = (LogText *) source;
-
- g_return_val_if_fail(logtext != NULL, TRUE);
- g_return_val_if_fail(logtext->text != NULL, TRUE);
-
- statusbar_puts_all(logtext->text);
-
- return FALSE;
-}
-
void statusbar_puts(GtkStatusbar *statusbar, const gchar *str)
{
gint cid;
gtk_statusbar_pop(GTK_STATUSBAR(cur->data), cid);
}
}
+
+gboolean statusbar_puts_all_hook (gpointer source, gpointer data)
+{
+ LogText *logtext = (LogText *) source;
+
+ g_return_val_if_fail(logtext != NULL, TRUE);
+ g_return_val_if_fail(logtext->text != NULL, TRUE);
+
+ statusbar_pop_all();
+ if (logtext->type == LOG_NORMAL) {
+ statusbar_puts_all(logtext->text + LOG_TIME_LEN);
+ } else if (logtext->type == LOG_MSG) {
+ statusbar_puts_all(logtext->text);
+ }
+
+ return FALSE;
+}
+
+void statusbar_verbosity_set(gboolean verbose)
+{
+ if (verbose && (statusbar_puts_all_hook_id == -1)) {
+ statusbar_puts_all_hook_id =
+ hooks_register_hook(LOG_APPEND_TEXT_HOOKLIST, statusbar_puts_all_hook, NULL);
+ } else if (!verbose && (statusbar_puts_all_hook_id != -1)) {
+ hooks_unregister_hook(LOG_APPEND_TEXT_HOOKLIST, statusbar_puts_all_hook_id);
+ statusbar_puts_all_hook_id = -1;
+ statusbar_pop_all();
+ }
+}
void statusbar_print_all (const gchar *format, ...)
G_GNUC_PRINTF(1, 2);
void statusbar_pop_all (void);
+void statusbar_verbosity_set (gboolean verbose);
#define STATUSBAR_PUSH(mainwin, str) \
{ \