From eb5b69d278b1430750a5e1d74bd2804cbc4b14e8 Mon Sep 17 00:00:00 2001 From: Alex Dowad Date: Fri, 4 Apr 2014 16:31:24 +0200 Subject: all: unified framework for reporting errors/warnings/info messages to stderr/syslog --- src/reporting.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/reporting.h (limited to 'src/reporting.h') diff --git a/src/reporting.h b/src/reporting.h new file mode 100644 index 0000000..c4f1c60 --- /dev/null +++ b/src/reporting.h @@ -0,0 +1,28 @@ +#ifndef REPORTING_H +#define REPORTING_H + +/* message severity levels */ +#define REPORT_ALERT 0 +#define REPORT_ERROR 1 +#define REPORT_WARNING 2 +#define REPORT_INFO 3 +#define REPORT_DEBUG 4 + +extern int verbosity_level; + +void reporting_init(const char *program_name); +void reporting_use_syslog(int flag); +void reporting_verbosity(int level); /* setter */ + +/* rather than using report_message directly, use one of the below macros */ +void report_message(int level, const char *format, ...); +void report_private_message(int level, const char *format, ...); + +/* macros are used to minimize the performance impact of disabled (due to verbosity level) 'report' calls */ +#define report_alert(format, ...) if(REPORT_ALERT <= verbosity_level) report_message(REPORT_ALERT, format, ##__VA_ARGS__) +#define report_error(format, ...) if(REPORT_ERROR <= verbosity_level) report_message(REPORT_ERROR, format, ##__VA_ARGS__) +#define report_warning(format, ...) if(REPORT_WARNING <= verbosity_level) report_message(REPORT_WARNING, format, ##__VA_ARGS__) +#define report_info(format, ...) if(REPORT_INFO <= verbosity_level) report_message(REPORT_INFO, format, ##__VA_ARGS__) +#define report_debug(format, ...) if(REPORT_DEBUG <= verbosity_level) report_message(REPORT_DEBUG, format, ##__VA_ARGS__) + +#endif \ No newline at end of file -- cgit v1.2.3