From f7fc0f1cf38b2d9dbacc52642d68af66882e2026 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 20 Jul 2019 23:22:11 +0200 Subject: qtplugininfo: don't abort on missing userdata if we don't care Plugins *for* Qt have a MetaData object with Keys, but application plugins don't necessarily have that. Let's still make qtplugininfo useful for those plugins as well. Before: $ qtplugininfo /usr/lib64/plugins/kcm_colors.so qtplugininfo: /usr/lib64/plugins/kcm_colors.so: invalid metadata, user data is not a JSON object After: $ qtplugininfo /usr/lib64/plugins/kcm_colors.so IID "org.kde.KPluginFactory" Qt 5.13.0 (release) qtplugininfo: /usr/lib64/plugins/kcm_colors.so: invalid metadata, user data is not a JSON object Change-Id: Icfe55e4d1749b5d31db1787883487f33987263b3 Reviewed-by: Volker Krause Reviewed-by: Friedemann Kleint Reviewed-by: Thiago Macieira --- src/qtplugininfo/qtplugininfo.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/qtplugininfo/qtplugininfo.cpp b/src/qtplugininfo/qtplugininfo.cpp index 2c3db2afd..dcda19aff 100644 --- a/src/qtplugininfo/qtplugininfo.cpp +++ b/src/qtplugininfo/qtplugininfo.cpp @@ -138,11 +138,6 @@ int main(int argc, char** argv) retval = 1; continue; } - if (!userData.isNull() && !userData.isObject()) { - std::cerr << "qtplugininfo: " << pluginNativeName.constData() << ": invalid metadata, user data is not a JSON object" << std::endl; - retval = 1; - continue; - } if (parser.positionalArguments().size() != 1) std::cout << pluginNativeName.constData() << ": "; @@ -159,8 +154,14 @@ int main(int argc, char** argv) std::cout << "Qt " << (version >> 16) << '.' << ((version >> 8) & 0xFF) << '.' << (version & 0xFF) << (debug.toBool() ? " (debug)" : " (release)"); std::cout << std::endl; - if (print & PrintUserData && userData.isObject()) - std::cout << "User Data: " << QJsonDocument(userData.toObject()).toJson().constData(); + if (print & PrintUserData) { + if (userData.isObject()) + std::cout << "User Data: " << QJsonDocument(userData.toObject()).toJson().constData(); + else if (!userData.isNull()) { + std::cerr << "qtplugininfo: " << pluginNativeName.constData() << ": invalid metadata, user data is not a JSON object" << std::endl; + retval = 1; + } + } } } -- cgit v1.2.1