From b52ed49d75ff77ef4f6ad2bef576184bda9b98d0 Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Sun, 28 Sep 2014 17:45:35 -0400 Subject: Revert "Remove log_cb, add ALPM_EVENT_LOG instead" Moving logging to the event callback caused warnings under clang due to non-literal format strings and silenced all log messages when --print was used. This reverts commit cd793c5ab7689cc8cbc18277375b368060e5acfe. Signed-off-by: Andrew Gregory Conflicts: lib/libalpm/alpm.h src/pacman/callback.c Signed-off-by: Allan McRae --- lib/libalpm/alpm.h | 36 +++++++++++++++--------------------- lib/libalpm/handle.c | 13 +++++++++++++ lib/libalpm/handle.h | 1 + lib/libalpm/log.c | 14 +++++--------- 4 files changed, 34 insertions(+), 30 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 751fa633..1cfd4f5b 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -343,6 +343,16 @@ typedef struct _alpm_siglist_t { * Logging facilities */ +/** Logging Levels */ +typedef enum _alpm_loglevel_t { + ALPM_LOG_ERROR = 1, + ALPM_LOG_WARNING = (1 << 1), + ALPM_LOG_DEBUG = (1 << 2), + ALPM_LOG_FUNCTION = (1 << 3) +} alpm_loglevel_t; + +typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list); + int alpm_logaction(alpm_handle_t *handle, const char *prefix, const char *fmt, ...) __attribute__((format(printf, 3, 4))); @@ -431,8 +441,6 @@ typedef enum _alpm_event_type_t { ALPM_EVENT_KEY_DOWNLOAD_START, /** Key downloading is finished. */ ALPM_EVENT_KEY_DOWNLOAD_DONE, - /** A log message was emitted; See alpm_event_log_t for arguments. */ - ALPM_EVENT_LOG, /** A .pacnew file was created; See alpm_event_pacnew_created_t for arguments. */ ALPM_EVENT_PACNEW_CREATED, /** A .pacsave file was created; See alpm_event_pacsave_created_t for @@ -502,24 +510,6 @@ typedef struct _alpm_event_database_missing_t { const char *dbname; } alpm_event_database_missing_t; -/** Log levels. */ -typedef enum _alpm_loglevel_t { - ALPM_LOG_ERROR = 1, - ALPM_LOG_WARNING = (1 << 1), - ALPM_LOG_DEBUG = (1 << 2), - ALPM_LOG_FUNCTION = (1 << 3) -} alpm_loglevel_t; - -typedef struct _alpm_event_log_t { - /** Type of event. */ - alpm_event_type_t type; - /** Log level. */ - alpm_loglevel_t level; - /** Message. */ - const char *fmt; - va_list args; -} alpm_event_log_t; - typedef struct _alpm_event_pkgdownload_t { /** Type of event. */ alpm_event_type_t type; @@ -571,7 +561,6 @@ typedef union _alpm_event_t { alpm_event_delta_patch_t delta_patch; alpm_event_scriptlet_info_t scriptlet_info; alpm_event_database_missing_t database_missing; - alpm_event_log_t log; alpm_event_pkgdownload_t pkgdownload; alpm_event_pacnew_created_t pacnew_created; alpm_event_pacsave_created_t pacsave_created; @@ -749,6 +738,11 @@ char *alpm_fetch_pkgurl(alpm_handle_t *handle, const char *url); * @{ */ +/** Returns the callback used for logging. */ +alpm_cb_log alpm_option_get_logcb(alpm_handle_t *handle); +/** Sets the callback used for logging. */ +int alpm_option_set_logcb(alpm_handle_t *handle, alpm_cb_log cb); + /** Returns the callback used to report download progress. */ alpm_cb_download alpm_option_get_dlcb(alpm_handle_t *handle); /** Sets the callback used to report download progress. */ diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c index 7652d1f7..0d8ea34a 100644 --- a/lib/libalpm/handle.c +++ b/lib/libalpm/handle.c @@ -143,6 +143,12 @@ int _alpm_handle_unlock(alpm_handle_t *handle) } +alpm_cb_log SYMEXPORT alpm_option_get_logcb(alpm_handle_t *handle) +{ + CHECK_HANDLE(handle, return NULL); + return handle->logcb; +} + alpm_cb_download SYMEXPORT alpm_option_get_dlcb(alpm_handle_t *handle) { CHECK_HANDLE(handle, return NULL); @@ -263,6 +269,13 @@ int SYMEXPORT alpm_option_get_checkspace(alpm_handle_t *handle) return handle->checkspace; } +int SYMEXPORT alpm_option_set_logcb(alpm_handle_t *handle, alpm_cb_log cb) +{ + CHECK_HANDLE(handle, return -1); + handle->logcb = cb; + return 0; +} + int SYMEXPORT alpm_option_set_dlcb(alpm_handle_t *handle, alpm_cb_download cb) { CHECK_HANDLE(handle, return -1); diff --git a/lib/libalpm/handle.h b/lib/libalpm/handle.h index 85c64f6f..9cd3a210 100644 --- a/lib/libalpm/handle.h +++ b/lib/libalpm/handle.h @@ -63,6 +63,7 @@ struct __alpm_handle_t { #endif /* callback functions */ + alpm_cb_log logcb; /* Log callback function */ alpm_cb_download dlcb; /* Download callback function */ alpm_cb_totaldl totaldlcb; /* Total download callback function */ alpm_cb_fetch fetchcb; /* Download file callback function */ diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c index aac55e70..d232bcc3 100644 --- a/lib/libalpm/log.c +++ b/lib/libalpm/log.c @@ -81,19 +81,15 @@ int SYMEXPORT alpm_logaction(alpm_handle_t *handle, const char *prefix, void _alpm_log(alpm_handle_t *handle, alpm_loglevel_t flag, const char *fmt, ...) { - alpm_event_log_t event = { - .type = ALPM_EVENT_LOG, - .level = flag, - .fmt = fmt - }; + va_list args; - if(handle == NULL || handle->eventcb == NULL) { + if(handle == NULL || handle->logcb == NULL) { return; } - va_start(event.args, fmt); - EVENT(handle, &event); - va_end(event.args); + va_start(args, fmt); + handle->logcb(flag, fmt, args); + va_end(args); } /* vim: set noet: */ -- cgit v1.2.3-24-g4f1b