#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");
va_list args;
gchar buf[BUFFSIZE + TIME_LEN];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
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
+ logtext.text = buf + TIME_LEN;
if (log_verbosity_count)
- statusbar_puts_all(buf + TIME_LEN); */
+ hooks_invoke(STATUSBAR_PUTS_ALL_HOOKLIST, &logtext);
}
void log_message(const gchar *format, ...)
va_list args;
gchar buf[BUFFSIZE + TIME_LEN];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
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); */
+ logtext.text = buf + TIME_LEN;
+ logtext.type = LOG_MSG;
+ hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
fwrite(buf, TIME_LEN, 1, log_fp);
fputs("* message: ", log_fp);
fputs(buf + TIME_LEN, log_fp);
fflush(log_fp);
}
-/* FIXME:
- callback for gui logging
- statusbar_puts_all(buf + TIME_LEN); */
+ 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];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_end(args);
g_warning("%s", buf);
-/* FIXME:
- callback for gui logging
-
- log_window_append(buf + TIME_LEN, LOG_WARN); */
+ logtext.text = buf + TIME_LEN;
+ logtext.type = LOG_WARN;
+ hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
fwrite(buf, TIME_LEN, 1, log_fp);
fputs("** warning: ", log_fp);
va_list args;
gchar buf[BUFFSIZE + TIME_LEN];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_end(args);
g_warning("%s", buf);
-/* FIXME:
- callback for gui logging
-
- log_window_append(buf + TIME_LEN, LOG_ERROR); */
+ logtext.text = buf + TIME_LEN;
+ logtext.type = LOG_ERROR;
+ hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
fwrite(buf, TIME_LEN, 1, log_fp);
fputs("*** error: ", log_fp);