X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Flog.c;h=3112a43fb101a08cf861621b9d722302bdddccbf;hb=388792e166680974251e4f9890a7c444141c6254;hp=0a408874259f84107e214dd369e8d81f2475b472;hpb=8ebd8f3ecaf041675e8e104f64ba75c2e0068873;p=platform%2Fupstream%2Fconnman.git diff --git a/src/log.c b/src/log.c index 0a40887..3112a43 100755 --- a/src/log.c +++ b/src/log.c @@ -44,7 +44,7 @@ static const char *program_path; #define LOG_FILE_PATH "/opt/usr/data/network/connman.log" #define MAX_LOG_SIZE 1 * 1024 * 1024 -#define MAX_LOG_COUNT 1 +#define MAX_LOG_COUNT 15 #define openlog __connman_log_open #define closelog __connman_log_close @@ -78,23 +78,24 @@ static void __connman_log_update_file_revision(int rev) if (next_log_rev >= MAX_LOG_COUNT) if (remove(next_log_file) != 0) - __connman_log_s(LOG_INFO, "error: remove failed for %s", next_log_file); + goto error; if (access(next_log_file, F_OK) == 0) __connman_log_update_file_revision(next_log_rev); if (rename(log_file, next_log_file) != 0) - if (remove(log_file) != 0) - __connman_log_s(LOG_INFO, "error: remove failed for %s", log_file); + remove(log_file); +error: g_free(log_file); g_free(next_log_file); } -static void __connman_log_make_backup(void) +static int __connman_log_make_backup(void) { const int rev = 0; char *backup = NULL; + int ret = 0; backup = g_strdup_printf("%s.%d", LOG_FILE_PATH, rev); @@ -103,9 +104,10 @@ static void __connman_log_make_backup(void) if (rename(LOG_FILE_PATH, backup) != 0) if (remove(LOG_FILE_PATH) != 0) - __connman_log_s(LOG_INFO, "error: remove failed for %s", LOG_FILE_PATH); + ret = -1; g_free(backup); + return ret; } static void __connman_log_get_local_time(char *strtime, const int size) @@ -134,14 +136,20 @@ void __connman_log(const int log_priority, const char *format, va_list ap) if (!log_file) return; - fstat(fileno(log_file), &buf); + if (fstat(fileno(log_file), &buf) < 0) { + fclose(log_file); + log_file = NULL; + return; + } + log_size = buf.st_size; if (log_size >= MAX_LOG_SIZE) { fclose(log_file); log_file = NULL; - __connman_log_make_backup(); + if (__connman_log_make_backup() != 0) + return; log_file = (FILE *)fopen(LOG_FILE_PATH, "a+"); @@ -219,6 +227,7 @@ void connman_error(const char *format, ...) vsyslog(LOG_ERR, format, ap); va_end(ap); + fflush(log_file); } /** @@ -237,6 +246,7 @@ void connman_debug(const char *format, ...) vsyslog(LOG_DEBUG, format, ap); va_end(ap); + fflush(log_file); } static void print_backtrace(unsigned int offset) @@ -315,6 +325,9 @@ static void print_backtrace(unsigned int offset) buf[len] = '\0'; pos = strchr(buf, '\n'); +#if defined TIZEN_EXT + if (pos) { +#endif *pos++ = '\0'; if (strcmp(buf, "??") == 0) { @@ -331,6 +344,9 @@ static void print_backtrace(unsigned int offset) connman_error("#%-2u %p in %s() at %s", i - offset, frames[i], buf, pos); +#if defined TIZEN_EXT + } +#endif } connman_error("+++++++++++++++++++++++++++");