]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
log: export last error message
authorHannes Reinecke <hare@suse.de>
Thu, 24 Jun 2021 06:26:46 +0000 (08:26 +0200)
committerHannes Reinecke <hare@suse.de>
Thu, 24 Jun 2021 06:26:46 +0000 (08:26 +0200)
Add a static string 'nvme_log_message' containing the last error
message written out by 'nvme_msg'.

Signed-off-by: Hannes Reinecke <hare@suse.de>
src/nvme/log.c
src/nvme/log.h

index 66cf692b80616f9f55e3f5deac2bd8b4d3a7e8df..9a7bcafeeb9951e99ddcf7ff829f3a7df30602b7 100644 (file)
@@ -23,6 +23,7 @@
 #include <syslog.h>
 #include <unistd.h>
 #include <time.h>
+#include <string.h>
 #define LOG_FUNCNAME 1
 #include "log.h"
 #include "cleanup.h"
@@ -34,6 +35,7 @@
 int nvme_log_level = DEFAULT_LOGLEVEL;
 bool nvme_log_timestamp;
 bool nvme_log_pid;
+char *nvme_log_message = NULL;
 
 void __attribute__((format(printf, 3, 4)))
 __nvme_msg(int lvl, const char *func, const char *format, ...)
@@ -55,9 +57,6 @@ __nvme_msg(int lvl, const char *func, const char *format, ...)
        char *message __cleanup__(cleanup_charp) = NULL;
        int idx;
 
-       if (lvl > nvme_log_level)
-               return;
-
        if (nvme_log_timestamp) {
                struct timespec now;
 
@@ -84,7 +83,12 @@ __nvme_msg(int lvl, const char *func, const char *format, ...)
                message = NULL;
        va_end(ap);
 
-       fprintf(stderr, "%s%s", header ? header : "<error>",
-               message ? message : "<error>");
+       if (nvme_log_message)
+               free(nvme_log_message);
+       nvme_log_message = strdup(message);
+
+       if (lvl <= nvme_log_level)
+               fprintf(stderr, "%s%s", header ? header : "<error>",
+                       message ? message : "<error>");
 
 }
index 36f56e879674617822bc66fb686c1a41ae148f43..4ed695c430283d78583b91056ffc6be042963172 100644 (file)
@@ -23,6 +23,7 @@
 extern int nvme_log_level;
 extern bool nvme_log_timestamp;
 extern bool nvme_log_pid;
+extern char *nvme_log_message;
 
 void __attribute__((format(printf, 3, 4)))
 __nvme_msg(int lvl, const char *func, const char *format, ...);