From: Michael Tremer Date: Sat, 30 Sep 2023 12:00:36 +0000 (+0000) Subject: build: Always send everything to the parent logger, too X-Git-Tag: 0.9.30~1590 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f90f4056c979943a514fc42b275c6370c7b89d6e;p=pakfire.git build: Always send everything to the parent logger, too This patch will make sure that we log everything to the parent logger, too. Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 269655477..b53c1a043 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -122,9 +122,41 @@ struct pakfire_build { /* Convenience macro to call the logger callback */ -#define pakfire_build_log(build, priority, r, file, line, function, format, arg...) \ - build->callbacks.log(build, build->callbacks.log_data, \ - priority, r, file, line, function, format, ## arg) +static int pakfire_build_log(struct pakfire_build* build, int priority, int error, + const char* file, int line, const char* function, const char* format, ...) { + char* buffer = NULL; + va_list args; + int r; + + // Don't log messages of a lower loglevel + if (pakfire_log_get_priority(build->pakfire) < priority) + return 0; + + // Format message + va_start(args, format); + r = vasprintf(&buffer, format, args); + va_end(args); + + // Fail if we could not format the message + if (r < 0) + return r; + + // Send everything to the parent logger + pakfire_log(build->pakfire, priority, error, file, line, function, "%s", buffer); + + // Call the build logger callback + if (build->callbacks.log) + r = build->callbacks.log(build, build->callbacks.log_data, priority, error, + file, line, function, "%s", buffer); + else + r = 0; + + // Cleanup + if (buffer) + free(buffer); + + return r; +} #define BUILD_LOG_ERRNO(build, priority, r, arg...) \ pakfire_build_log(build, priority, r, __FILE__, __LINE__, __FUNCTION__, ## arg) @@ -1422,35 +1454,6 @@ ERROR: return r; } -static int pakfire_build_default_log_callback(struct pakfire_build* build, void* data, - int priority, int error, const char* file, int line, const char* function, const char* format, ...) { - char* buffer = NULL; - va_list args; - int r; - - // Only pass messages to the pakfire logger that are wanted - if (pakfire_log_get_priority(build->pakfire) < priority) - return 0; - - // Format the message - va_start(args, format); - r = vasprintf(&buffer, format, args); - va_end(args); - - // Fail if we could not format the string - if (r < 0) - return r; - - // Send the message to the upstream logger - pakfire_log(build->pakfire, priority, error, file, line, function, "%s", buffer); - - // Cleanup - if (buffer) - free(buffer); - - return 0; -} - static int pakfire_build_jail_log_callback(struct pakfire* pakfire, void* data, int priority, const char* line, size_t length) { struct pakfire_build* build = data; @@ -1636,9 +1639,6 @@ PAKFIRE_EXPORT int pakfire_build_create(struct pakfire_build** build, // Copy flags b->flags = flags; - // Set default log callback - b->callbacks.log = pakfire_build_default_log_callback; - // Store start time r = pakfire_build_set_time_start(b); if (r)