Simple diff to avoid "desktoptojson: vfprintf %s NULL in "Warning: %s
(%s:%u, %s)" warnings in logs. The template lambda function need c++14
so I adapted the CMake part to be sure we compile this with C++14
enabled.

OK?

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/kf5/kcoreaddons/Makefile,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 Makefile
--- Makefile    7 Sep 2020 14:48:45 -0000       1.14
+++ Makefile    11 Sep 2020 11:29:30 -0000
@@ -2,6 +2,7 @@
 
 COMMENT =      core KDE extensions to Qt classes
 DISTNAME =     kcoreaddons-${VERSION}
+REVISION =     0
 
 SHARED_LIBS =  KF5CoreAddons           6.0
 
Index: patches/patch-src_desktoptojson_CMakeLists_txt
===================================================================
RCS file: patches/patch-src_desktoptojson_CMakeLists_txt
diff -N patches/patch-src_desktoptojson_CMakeLists_txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_desktoptojson_CMakeLists_txt      11 Sep 2020 11:29:30 
-0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+
+Index: src/desktoptojson/CMakeLists.txt
+--- src/desktoptojson/CMakeLists.txt.orig
++++ src/desktoptojson/CMakeLists.txt
+@@ -6,6 +6,8 @@ if(NOT CMAKE_TOOLCHAIN_FILE)
+     add_executable(KF5::desktoptojson ALIAS desktoptojson)
+ endif()
+ 
++set_property(TARGET desktoptojson PROPERTY CXX_STANDARD 14)
++
+ # Mark it as non-gui so we won't create an app bundle on Mac OS X
+ ecm_mark_nongui_executable(desktoptojson)
+ 
Index: patches/patch-src_desktoptojson_main_cpp
===================================================================
RCS file: patches/patch-src_desktoptojson_main_cpp
diff -N patches/patch-src_desktoptojson_main_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_desktoptojson_main_cpp    11 Sep 2020 11:29:30 -0000
@@ -0,0 +1,47 @@
+$OpenBSD$
+
+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();
+     }
+ }

Reply via email to