X-Git-Url: http://git.imager.perl.org/imager.git/blobdiff_plain/e11d297f08e5beee494fa3b58d430a8ecfda00e6..259a9d84d093d829ffcf2791faf6be210aae31a1:/log.c diff --git a/log.c b/log.c index c2b23e62..0a807e70 100644 --- a/log.c +++ b/log.c @@ -1,5 +1,10 @@ #include "imconfig.h" #include "log.h" +#include +#include +#include "imerror.h" + +#ifdef IMAGER_LOG #define DTBUFF 50 #define DATABUFF DTBUFF+3+10+1+5+1+1 @@ -11,14 +16,13 @@ static char date_buffer[DTBUFF]; static char data_buffer[DATABUFF]; -#ifdef IMAGER_LOG - /* * Logging is active */ -void -m_init_log(const char* name,int level) { +int +i_init_log(const char* name,int level) { + i_clear_error(); log_level = level; if (level < 0) { lg_file = NULL; @@ -27,17 +31,21 @@ m_init_log(const char* name,int level) { lg_file = stderr; } else { if (NULL == (lg_file = fopen(name, "w+")) ) { - fprintf(stderr,"Cannot open file '%s'\n",name); - exit(2); + i_push_errorf(errno, "Cannot open file '%s': (%d)", name, errno); + return 0; } } } - setvbuf(lg_file, NULL, _IONBF, BUFSIZ); - mm_log((0,"Imager - log started (level = %d)\n", level)); + if (lg_file) { + setvbuf(lg_file, NULL, _IONBF, BUFSIZ); + mm_log((0,"Imager - log started (level = %d)\n", level)); + } + + return lg_file != NULL; } void -m_fatal(int exitcode,const char *fmt, ... ) { +i_fatal(int exitcode,const char *fmt, ... ) { va_list ap; time_t timi; struct tm *str_tm; @@ -54,21 +62,18 @@ m_fatal(int exitcode,const char *fmt, ... ) { exit(exitcode); } -#else /* - * Logging is inactive - insert dummy functions - */ - -void m_init_log(const char* name,int onoff) {} -void m_fatal(int exitcode,const char *fmt, ... ) { exit(exitcode); } - +=item i_loog(level, format, ...) +=category Logging -#endif +This is an internal function called by the mm_log() macro. +=cut +*/ void -m_loog(int level,const char *fmt, ... ) { +i_loog(int level,const char *fmt, ... ) { va_list ap; if (level > log_level) return; if (lg_file != NULL) { @@ -81,9 +86,17 @@ m_loog(int level,const char *fmt, ... ) { } } +/* +=item i_lhead(file, line) +=category Logging + +This is an internal function called by the mm_log() macro. + +=cut +*/ void -m_lhead(const char *file, int line) { +i_lhead(const char *file, int line) { time_t timi; struct tm *str_tm; @@ -94,3 +107,26 @@ m_lhead(const char *file, int line) { sprintf(data_buffer, "[%s] %10s:%-5d ", date_buffer, file, line); } } + +#else + +/* + * Logging is inactive - insert dummy functions + */ + +int i_init_log(const char* name,int onoff) { + i_clear_error(); + i_push_error(0, "Logging disabled"); + return 0; +} + +void i_fatal(int exitcode,const char *fmt, ... ) { exit(exitcode); } + +void +i_loog(int level,const char *fmt, ... ) { +} + +void +i_lhead(const char *file, int line) { } + +#endif