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();
+ }
+ }