From 28ec3334cf616c275440546269083fab44a07a60 Mon Sep 17 00:00:00 2001 From: Dmitry Podgorny Date: Sat, 3 Aug 2013 14:31:36 +0300 Subject: [PATCH] refactored logging Use ftell instead of stat syscall to increase portability. --- src/log.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/src/log.c b/src/log.c index 1f877d21..7a57fa98 100644 --- a/src/log.c +++ b/src/log.c @@ -25,8 +25,6 @@ #include #include #include -#include -#include #include "glib.h" @@ -37,11 +35,6 @@ #define PROF "prof" -#ifdef _WIN32 -// replace 'struct stat' and 'stat()' for windows -#define stat _stat -#endif - static FILE *logp; static GTimeZone *tz; @@ -125,7 +118,7 @@ log_init(log_level_t filter) tz = g_time_zone_new_local(); gchar *log_file = _get_log_file(); logp = fopen(log_file, "a"); - g_free(log_file); + free(log_file); } log_level_t @@ -145,9 +138,7 @@ void log_msg(log_level_t level, const char * const area, const char * const msg) { if (level >= level_filter) { - struct stat st; - int result; - gchar *log_file = _get_log_file(); + long result; dt = g_date_time_new_now(tz); gchar *date_fmt = g_date_time_format(dt, "%d/%m/%Y %H:%M:%S"); @@ -157,12 +148,10 @@ log_msg(log_level_t level, const char * const area, const char * const msg) fflush(logp); g_free(date_fmt); - result = stat(log_file, &st); - if (result == 0 && st.st_size >= prefs_get_max_log_size()) { + result = ftell(logp); + if (result != -1 && result >= prefs_get_max_log_size()) { _rotate_log_file(); } - - g_free(log_file); } } @@ -200,7 +189,7 @@ _rotate_log_file(void) log_init(log_get_filter()); free(log_file_new); - g_free(log_file); + free(log_file); log_info("Log has been rotated"); } @@ -448,7 +437,7 @@ _get_log_filename(const char * const other, const char * const login, { gchar *chatlogs_dir = _get_chatlog_dir(); GString *log_file = g_string_new(chatlogs_dir); - g_free(chatlogs_dir); + free(chatlogs_dir); gchar *login_dir = str_replace(login, "@", "_at_"); g_string_append_printf(log_file, "/%s", login_dir); @@ -516,7 +505,7 @@ _get_chatlog_dir(void) GString *chatlogs_dir = g_string_new(xdg_data); g_string_append(chatlogs_dir, "/profanity/chatlogs"); gchar *result = strdup(chatlogs_dir->str); - g_free(xdg_data); + free(xdg_data); g_string_free(chatlogs_dir, TRUE); return result; @@ -529,7 +518,7 @@ _get_log_file(void) GString *logfile = g_string_new(xdg_data); g_string_append(logfile, "/profanity/logs/profanity.log"); gchar *result = strdup(logfile->str); - g_free(xdg_data); + free(xdg_data); g_string_free(logfile, TRUE); return result;