X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Flog.c;h=b3785759c7cd05eee7b64bdbeb5767e00bc42417;hb=5905b40585298defb8e4230adfe90dfbccb465b9;hp=28103905c7ad664e4da527d4324016121ff5f685;hpb=a38ca01fb692688a3579630649fe43162df5990f;p=emu8051.git diff --git a/src/log.c b/src/log.c index 2810390..b378575 100644 --- a/src/log.c +++ b/src/log.c @@ -20,12 +20,26 @@ #include "common.h" #include "options.h" -static int log_level = LOG_LEVEL_ERR; /* LEVEL = ERROR */ +#define PREFIX_PACKAGE_NAME 1 +#define ADD_LINEFEED 1 -void -log_set_level(int new_log_level) +extern struct options_t options; + +static void +log_prefix_package_name(FILE *stream, const char *severity) { - log_level = new_log_level; +#if PREFIX_PACKAGE_NAME + /* Printing the name of the program first if desired. */ + fprintf(stream, "%s %s: ", PACKAGE_NAME, severity); +#endif /* PREFIX_PACKAGE_NAME */ +} + +static void +log_suffix_newline(FILE *stream) +{ +#if ADD_LINEFEED + fprintf(stream, "\n"); +#endif /* ADD_LINEFEED */ } void @@ -33,17 +47,16 @@ log_debug(const char *format, ...) { FILE *stream = stdout; - if (log_level >= LOG_LEVEL_DEBUG) { + if (options.log >= LOG_LEVEL_DEBUG) { va_list ap; - /* Printing the name of the program first. */ - fprintf(stream, "%s debug : ", PACKAGE_NAME); + log_prefix_package_name(stream, "debug"); va_start(ap, format); vfprintf(stream, format, ap); va_end(ap); - fprintf(stream, "\n"); + log_suffix_newline(stream); } } @@ -52,17 +65,16 @@ log_info(const char *format, ...) { FILE *stream = stdout; - if (log_level >= LOG_LEVEL_INFO) { + if (options.log >= LOG_LEVEL_INFO) { va_list ap; - /* Printing the name of the program first. */ - fprintf(stream, "%s info : ", PACKAGE_NAME); + log_prefix_package_name(stream, "info"); va_start(ap, format); vfprintf(stream, format, ap); va_end(ap); - fprintf(stream, "\n"); + log_suffix_newline(stream); } } @@ -71,50 +83,48 @@ log_warn(const char *format, ...) { FILE *stream = stderr; - if (log_level >= LOG_LEVEL_WARN) { + if (options.log >= LOG_LEVEL_WARN) { va_list ap; - /* Printing the name of the program first. */ - fprintf(stream, "%s warning: ", PACKAGE_NAME); + log_prefix_package_name(stream, "warn"); va_start(ap, format); vfprintf(stream, format, ap); va_end(ap); - fprintf(stream, "\n"); + log_suffix_newline(stream); } } void -log_fail(const char *format, ...) +log_err(const char *format, ...) { FILE *stream = stderr; va_list ap; - /* Printing the name of the program first. */ - fprintf(stream, "%s error : ", PACKAGE_NAME); + log_prefix_package_name(stream, "error"); va_start(ap, format); vfprintf(stream, format, ap); va_end(ap); - fprintf(stream, "\n"); - - exit(EXIT_FAILURE); + log_suffix_newline(stream); } +/* Log error message and exits with error code. */ void -log_fail_no_exit(const char *format, ...) +log_fail(const char *format, ...) { FILE *stream = stderr; va_list ap; - /* Printing the name of the program first. */ - fprintf(stream, "%s error: ", PACKAGE_NAME); + log_prefix_package_name(stream, "error"); va_start(ap, format); vfprintf(stream, format, ap); va_end(ap); - fprintf(stream, "\n"); + log_suffix_newline(stream); + + exit(EXIT_FAILURE); }