]> git.ipfire.org Git - pakfire.git/commitdiff
logging: Handle warning messages everywhere
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 26 Oct 2024 18:23:21 +0000 (18:23 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 26 Oct 2024 18:23:21 +0000 (18:23 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/cli/lib/build.c
src/libpakfire/ctx.c
src/libpakfire/jail.c
src/libpakfire/job.c
src/python/ctx.c

index d21c124f4aa0a2ca0b93675eef93312eb7e357c8..239b03c3a62e8920b2d74a90c815d861c0ca61c8 100644 (file)
@@ -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);
index b5ca1e9ea3cad0da2fc9b5cb723b73bad497b82f..859384d205eb8b3f0f292bf3a7e153e10e5ca390 100644 (file)
@@ -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;
 
index fc4bf7cee52658eee39a283b5ca44371bb21db3a..31cee655d04ff416806931423b40ec8a261da15a 100644 (file)
@@ -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
index ef88490e5e98f6904df5aab1c6cf36a3571e45e1..69e6e87ef66a6f153fb5722c718068ea032dc1ff 100644 (file)
@@ -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)
index 3da74ee0cfeceebf3eb27918a81233be7cf547c6..72c0224d4d85b5899dd4a96c11043cbdfb91d016 100644 (file)
@@ -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;