X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=blobdiff_plain;f=src%2Fcommon%2Flog.c;h=241130ec9e703696e3d97c58e518179a89695736;hp=34dc0e469ae091b7b2150ff651a6e412b8e45380;hb=b7e4917caf69330cc2fedebe8004cb7933b1e38a;hpb=6aa3d40bc06667fda8987505b8376acfdfb210b4 diff --git a/src/common/log.c b/src/common/log.c index 34dc0e469..241130ec9 100644 --- a/src/common/log.c +++ b/src/common/log.c @@ -26,12 +26,26 @@ #include "defs.h" #include "utils.h" +#include "log.h" +#include "hooks.h" static FILE *log_fp = NULL; void set_log_file(const gchar *filename) { - if (log_fp) return; + if (log_fp) + return; + + /* backup old logfile if existing */ + if (is_file_exist(filename)) { + gchar *backupname; + + backupname = g_strconcat(filename, ".bak", NULL); + if (rename(filename, backupname) < 0) + FILE_OP_ERROR(filename, "rename"); + g_free(backupname); + } + log_fp = fopen(filename, "wb"); if (!log_fp) FILE_OP_ERROR(filename, "fopen"); @@ -45,99 +59,78 @@ void close_log_file(void) } } -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); -/* FIXME: - callback for gui logging - - log_window_append(buf, LOG_NORMAL); */ + logtext.text = buf; + logtext.type = LOG_NORMAL; + hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext); if (log_fp) { fputs(buf, log_fp); fflush(log_fp); } -/* FIXME: - callback for gui logging - - if (log_verbosity_count) - statusbar_puts_all(buf + TIME_LEN); */ } 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); -/* FIXME: - callback for gui logging - - log_window_append(buf + TIME_LEN, LOG_MSG); */ + 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); } -/* FIXME: - callback for gui logging - - statusbar_puts_all(buf + TIME_LEN); */ } 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); -/* FIXME: - callback for gui logging - - log_window_append(buf + TIME_LEN, LOG_WARN); */ + 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); } } @@ -145,25 +138,25 @@ void log_warning(const gchar *format, ...) 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); -/* FIXME: - callback for gui logging - - log_window_append(buf + TIME_LEN, LOG_ERROR); */ + 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); } }