From 1ac9f900fbc4f061ef9a45416f9eed30a67e9474 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 26 Oct 2024 18:23:21 +0000 Subject: [PATCH] logging: Handle warning messages everywhere Signed-off-by: Michael Tremer --- src/cli/lib/build.c | 7 +++++++ src/libpakfire/ctx.c | 3 +++ src/libpakfire/jail.c | 23 +++++++++++++++++++++++ src/libpakfire/job.c | 3 ++- src/python/ctx.c | 4 ++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/cli/lib/build.c b/src/cli/lib/build.c index d21c124f4..239b03c3a 100644 --- a/src/cli/lib/build.c +++ b/src/cli/lib/build.c @@ -125,6 +125,13 @@ static void log_callback(void* data, int priority, const char* file, int line, vfprintf(stdout, format, args_copy); break; + // Highlight any warnings + case LOG_WARNING: + fputs(color_yellow(), stderr); + vfprintf(stderr, format, args_copy); + fputs(color_reset(), stderr); + break; + // Highlight any error messages case LOG_ERR: fputs(color_highlight(), stderr); diff --git a/src/libpakfire/ctx.c b/src/libpakfire/ctx.c index b5ca1e9ea..859384d20 100644 --- a/src/libpakfire/ctx.c +++ b/src/libpakfire/ctx.c @@ -100,6 +100,9 @@ static int parse_log_level(const char* level) { if (strcmp(level, "error") == 0) return LOG_ERR; + if (strcmp(level, "warning") == 0) + return LOG_WARNING; + if (strcmp(level, "info") == 0) return LOG_INFO; diff --git a/src/libpakfire/jail.c b/src/libpakfire/jail.c index fc4bf7cee..31cee655d 100644 --- a/src/libpakfire/jail.c +++ b/src/libpakfire/jail.c @@ -136,6 +136,7 @@ struct pakfire_jail_exec { struct pakfire_jail_pipes { // Logging struct pakfire_log_stream* INFO; + struct pakfire_log_stream* WARN; struct pakfire_log_stream* ERROR; #ifdef ENABLE_DEBUG struct pakfire_log_stream* DEBUG; @@ -421,6 +422,10 @@ static void pakfire_jail_log_redirect(void* data, int priority, const char* file pakfire_log_stream_write(ctx->log.INFO, format, args); break; + case LOG_WARNING: + pakfire_log_stream_write(ctx->log.WARN, format, args); + break; + case LOG_ERR: pakfire_log_stream_write(ctx->log.ERROR, format, args); break; @@ -447,6 +452,13 @@ static int pakfire_jail_INFO(struct pakfire_log_stream* stream, const char* line return 0; } +static int pakfire_jail_WARN(struct pakfire_log_stream* stream, const char* line, size_t length, void* data) { + struct pakfire_jail* jail = data; + + ERROR(jail->ctx, "%.*s", (int)length, line); + return 0; +} + static int pakfire_jail_ERROR(struct pakfire_log_stream* stream, const char* line, size_t length, void* data) { struct pakfire_jail* jail = data; @@ -1279,6 +1291,10 @@ static int pakfire_jail_child(struct pakfire_jail* jail, struct pakfire_jail_exe if (r) return r; + r = pakfire_log_stream_in_child(ctx->log.WARN); + if (r) + return r; + r = pakfire_log_stream_in_child(ctx->log.ERROR); if (r) return r; @@ -1440,6 +1456,11 @@ static int __pakfire_jail_exec(struct pakfire_jail* jail, if (r) goto ERROR; + // WARN + r = pakfire_log_stream_create(&ctx.log.WARN, jail->ctx, pakfire_jail_WARN, jail); + if (r) + goto ERROR; + // ERROR r = pakfire_log_stream_create(&ctx.log.ERROR, jail->ctx, pakfire_jail_ERROR, jail); if (r) @@ -1554,6 +1575,8 @@ ERROR: // Logging if (ctx.log.INFO) pakfire_log_stream_unref(ctx.log.INFO); + if (ctx.log.WARN) + pakfire_log_stream_unref(ctx.log.WARN); if (ctx.log.ERROR) pakfire_log_stream_unref(ctx.log.ERROR); #ifdef ENABLE_DEBUG diff --git a/src/libpakfire/job.c b/src/libpakfire/job.c index ef88490e5..69e6e87ef 100644 --- a/src/libpakfire/job.c +++ b/src/libpakfire/job.c @@ -395,7 +395,7 @@ static void pakfire_job_log(void* data, int priority, const char* file, struct pakfire_job* job = data; int r; - // We only forward INFO & ERROR + // We only forward INFO, WARNING & ERROR switch (priority) { case LOG_INFO: r = pakfire_log_stream_write(job->log.stdout, format, args); @@ -403,6 +403,7 @@ static void pakfire_job_log(void* data, int priority, const char* file, return; break; + case LOG_WARNING: case LOG_ERR: r = pakfire_log_stream_write(job->log.stderr, format, args); if (r < 0) diff --git a/src/python/ctx.c b/src/python/ctx.c index 3da74ee0c..72c0224d4 100644 --- a/src/python/ctx.c +++ b/src/python/ctx.c @@ -63,6 +63,10 @@ static void Ctx_log_callback(void* data, int level, const char* file, int line, level = 20; break; + case LOG_WARNING: + level = 30; + break; + case LOG_ERR: level = 40; break; -- 2.39.5