X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Flog.c;h=6b82bcdcf85665f971f1952665de956ebc3fb6ef;hp=47464fefbb2bad75908587b880b7c7b00fe3c2c8;hb=7b4adcc54d64c9196a8c19a7f69c850774b8776b;hpb=ee6ab2ee3a9ee1a8c65d7272ec7fba1d886f5af0 diff --git a/src/log.c b/src/log.c index 47464fe..6b82bcd 100644 --- a/src/log.c +++ b/src/log.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2008 Index Data + * Copyright (C) 1995-2010 Index Data * See the file LICENSE for details. */ @@ -14,9 +14,12 @@ #ifdef WIN32 #include +#include #endif +#if HAVE_SYS_STAT_H #include +#endif #include #include #include @@ -24,26 +27,11 @@ #include #include #include -#include +#include #include #include #include -#define HAS_STRERROR 1 - - -#if HAS_STRERROR - -#else -char *strerror(int n) -{ - extern char *sys_errlist[]; - return sys_errlist[n]; -} - -#endif - - static int l_level = YLOG_DEFAULT_LEVEL; enum l_file_type { use_stderr, use_none, use_file }; @@ -70,11 +58,14 @@ static char l_new_default_format[] = "%Y%m%d-%H%M%S"; static char l_custom_format[TIMEFORMAT_LEN] = ""; static char *l_actual_format = l_old_default_format; -/** l_max_size tells when to rotate the log. Default is 1 GB - This is almost the same as never, but it saves applications in the - case of 2 or 4 GB file size limits.. +/** l_max_size tells when to rotate the log. The default value is + 0 which means DISABLED. This is to be preffered if YAZ runs + as a server using logrotate etc. + A positive size specifies the file size in bytes when a log rotate + will occur. Note that in order for this to work YAZ must have + permissions to do so. */ -static int l_max_size = 1024*1024*1024; +static int l_max_size = 0; #define MAX_MASK_NAMES 35 /* 32 bits plus a few combo names */ static struct { @@ -274,14 +265,14 @@ void yaz_log_set_handler(void (*func)(int, const char *, void *), void *info) void log_event_start(void (*func)(int, const char *, void *), void *info) { - start_hook_func = func; - start_hook_info = info; + start_hook_func = func; + start_hook_info = info; } void log_event_end(void (*func)(int, const char *, void *), void *info) { - end_hook_func = func; - end_hook_info = info; + end_hook_func = func; + end_hook_info = info; } static void yaz_log_open_check(struct tm *tm, int force, const char *filemode) @@ -446,7 +437,7 @@ void yaz_log(int level, const char *fmt, ...) if (o_level & YLOG_ERRNO) { - int remain = sizeof(buf) - strlen(buf); + size_t remain = sizeof(buf) - strlen(buf); if (remain > 100) /* reasonable minimum space for error */ { strcat(buf, " ["); @@ -485,7 +476,7 @@ void yaz_log_time_format(const char *fmt) } /** cleans a loglevel name from leading paths and suffixes */ -static char *clean_name(const char *name, int len, char *namebuf, int buflen) +static char *clean_name(const char *name, size_t len, char *namebuf, size_t buflen) { char *p = namebuf; char *start = namebuf; @@ -502,19 +493,19 @@ static char *clean_name(const char *name, int len, char *namebuf, int buflen) static int define_module_bit(const char *name) { - int i; + size_t i; for (i = 0; mask_names[i].name; i++) if (0 == strcmp(mask_names[i].name, name)) { return mask_names[i].mask; } - if ( (i>=MAX_MASK_NAMES) || (next_log_bit & (1<<31) )) + if ( (i>=MAX_MASK_NAMES) || (next_log_bit & (1U<<31) )) { yaz_log(YLOG_WARN, "No more log bits left, not logging '%s'", name); return 0; } - mask_names[i].mask = next_log_bit; + mask_names[i].mask = (int) next_log_bit; /* next_log_bit can hold int */ next_log_bit = next_log_bit<<1; mask_names[i].name = (char *) malloc(strlen(name)+1); strcpy(mask_names[i].name, name); @@ -571,7 +562,7 @@ int yaz_log_mask_str_x(const char *str, int level) else { char clean[509]; - char *n = clean_name(str, p-str, clean, sizeof(clean)); + char *n = clean_name(str, (size_t) (p - str), clean, sizeof(clean)); int mask = define_module_bit(n); if (!mask) level = 0; /* 'none' clears them all */ @@ -589,7 +580,9 @@ int yaz_log_mask_str_x(const char *str, int level) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */ +