From 5c2208294dc0b21a7aa40b9eb56f64f237c48efb Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Sun, 28 Sep 2014 18:07:46 -0400 Subject: consolidate log functions in log.c Signed-off-by: Andrew Gregory --- lib/libalpm/log.c | 43 +++++++++++++++++++++++++++++++++++++++++++ lib/libalpm/log.h | 3 +++ 2 files changed, 46 insertions(+) diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c index 9e986d69..f7dd5336 100644 --- a/lib/libalpm/log.c +++ b/lib/libalpm/log.c @@ -122,4 +122,47 @@ void _alpm_log(alpm_handle_t *handle, alpm_loglevel_t flag, const char *fmt, ... va_end(args); } +/** Write formatted message to log. + * @param handle the context handle + * @param format formatted string to write out + * @param args formatting arguments + * @return 0 or number of characters written on success, vfprintf return value + * on error + */ +int _alpm_logaction(alpm_handle_t *handle, const char *prefix, + const char *fmt, va_list args) +{ + int ret = 0; + + if(!(prefix && *prefix)) { + prefix = "UNKNOWN"; + } + + if(handle->usesyslog) { + /* we can't use a va_list more than once, so we need to copy it + * so we can use the original when calling vfprintf below. */ + va_list args_syslog; + va_copy(args_syslog, args); + vsyslog(LOG_WARNING, fmt, args_syslog); + va_end(args_syslog); + } + + if(handle->logstream) { + time_t t; + struct tm *tm; + + t = time(NULL); + tm = localtime(&t); + + /* Use ISO-8601 date format */ + fprintf(handle->logstream, "[%04d-%02d-%02d %02d:%02d] [%s] ", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min, prefix); + ret = vfprintf(handle->logstream, fmt, args); + fflush(handle->logstream); + } + + return ret; +} + /* vim: set noet: */ diff --git a/lib/libalpm/log.h b/lib/libalpm/log.h index 6ec04561..4f4ee58f 100644 --- a/lib/libalpm/log.h +++ b/lib/libalpm/log.h @@ -27,6 +27,9 @@ void _alpm_log(alpm_handle_t *handle, alpm_loglevel_t flag, const char *fmt, ...) __attribute__((format(printf,3,4))); +int _alpm_logaction(alpm_handle_t *handle, const char *prefix, const char *fmt, va_list args) + __attribute__((format(printf, 3, 0))); + #endif /* ALPM_LOG_H */ /* vim: set noet: */ -- cgit v1.2.3-24-g4f1b