$OpenBSD: patch-src_desktoptojson_main_cpp,v 1.1 2020/09/11 14:51:07 rsadowski Exp $

Avoid "desktoptojson: vfprintf %s NULL in "Warning: %s (%s:%u, %s)" warnings in
logs.

Index: src/desktoptojson/main.cpp
--- src/desktoptojson/main.cpp.orig
+++ src/desktoptojson/main.cpp
@@ -10,22 +10,33 @@
 
 static void messageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
 {
+    auto getFprintfS = [](auto data) {
+        if (data == nullptr)
+            return "";
+        return data;
+    };
+
     QByteArray localMsg = msg.toLocal8Bit();
+
     switch (type) {
     case QtDebugMsg:
-        fprintf(stdout, "%s\n", localMsg.constData());
+        fprintf(stdout, "%s\n", getFprintfS(localMsg.constData()));
         break;
     case QtInfoMsg:
-        fprintf(stdout, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+        fprintf(stdout, "Info: %s (%s:%u, %s)\n", getFprintfS(localMsg.constData()),
+                getFprintfS(context.file), context.line, getFprintfS(context.function));
         break;
     case QtWarningMsg:
-        fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+        fprintf(stderr, "Warning: %s (%s:%u, %s)\n", getFprintfS(localMsg.constData()),
+                getFprintfS(context.file), context.line, getFprintfS(context.function));
         break;
     case QtCriticalMsg:
-        fprintf(stderr, "Error: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+        fprintf(stderr, "Error: %s (%s:%u, %s)\n", getFprintfS(localMsg.constData()),
+                getFprintfS(context.file), context.line, getFprintfS(context.function));
         break;
     case QtFatalMsg:
-        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", getFprintfS(localMsg.constData()),
+                getFprintfS(context.file), context.line, getFprintfS(context.function));
         abort();
     }
 }
