diff options
Diffstat (limited to 'src/dbus/qdbusmarshaller.cpp')
-rw-r--r-- | src/dbus/qdbusmarshaller.cpp | 116 |
1 files changed, 36 insertions, 80 deletions
diff --git a/src/dbus/qdbusmarshaller.cpp b/src/dbus/qdbusmarshaller.cpp index 03da1a6780..b2ed2586fb 100644 --- a/src/dbus/qdbusmarshaller.cpp +++ b/src/dbus/qdbusmarshaller.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtDBus module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qdbusargument_p.h" #include "qdbusconnection.h" @@ -46,6 +10,8 @@ QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + static void qIterAppend(DBusMessageIter *it, QByteArray *ba, int type, const void *arg) { if (ba) @@ -59,6 +25,16 @@ QDBusMarshaller::~QDBusMarshaller() close(); } +void QDBusMarshaller::unregisteredTypeError(QMetaType id) +{ + const char *name = id.name(); + qWarning("QDBusMarshaller: type '%s' (%d) is not registered with D-Bus. " + "Use qDBusRegisterMetaType to register it", + name ? name : "", id.id()); + error("Unregistered type %1 passed in arguments"_L1 + .arg(QLatin1StringView(id.name()))); +} + inline QString QDBusMarshaller::currentSignature() { if (message) @@ -133,7 +109,7 @@ inline void QDBusMarshaller::append(const QDBusObjectPath &arg) { QByteArray data = arg.path().toUtf8(); if (!ba && data.isEmpty()) { - error(QLatin1String("Invalid object path passed in arguments")); + error("Invalid object path passed in arguments"_L1); } else { const char *cdata = data.constData(); if (!skipSignature) @@ -145,7 +121,7 @@ inline void QDBusMarshaller::append(const QDBusSignature &arg) { QByteArray data = arg.signature().toUtf8(); if (!ba && data.isEmpty()) { - error(QLatin1String("Invalid signature passed in arguments")); + error("Invalid signature passed in arguments"_L1); } else { const char *cdata = data.constData(); if (!skipSignature) @@ -157,7 +133,7 @@ inline void QDBusMarshaller::append(const QDBusUnixFileDescriptor &arg) { int fd = arg.fileDescriptor(); if (!ba && fd == -1) { - error(QLatin1String("Invalid file descriptor passed in arguments")); + error("Invalid file descriptor passed in arguments"_L1); } else { if (!skipSignature) qIterAppend(&iterator, ba, DBUS_TYPE_UNIX_FD, &fd); @@ -176,7 +152,7 @@ inline void QDBusMarshaller::append(const QByteArray &arg) DBusMessageIter subiterator; q_dbus_message_iter_open_container(&iterator, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE_AS_STRING, &subiterator); - q_dbus_message_iter_append_fixed_array(&subiterator, DBUS_TYPE_BYTE, &cdata, arg.length()); + q_dbus_message_iter_append_fixed_array(&subiterator, DBUS_TYPE_BYTE, &cdata, arg.size()); q_dbus_message_iter_close_container(&iterator, &subiterator); } @@ -192,7 +168,7 @@ inline bool QDBusMarshaller::append(const QDBusVariant &arg) QMetaType id = value.metaType(); if (!id.isValid()) { qWarning("QDBusMarshaller: cannot add a null QDBusVariant"); - error(QLatin1String("Invalid QVariant passed in arguments")); + error("Invalid QVariant passed in arguments"_L1); return false; } @@ -208,11 +184,7 @@ inline bool QDBusMarshaller::append(const QDBusVariant &arg) signature = QDBusMetaType::typeToSignature(id); } if (!signature) { - qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. " - "Use qDBusRegisterMetaType to register it", - id.name(), id.id()); - error(QLatin1String("Unregistered type %1 passed in arguments") - .arg(QLatin1String(id.name()))); + unregisteredTypeError(id); return false; } @@ -234,10 +206,8 @@ inline void QDBusMarshaller::append(const QStringList &arg) QDBusMarshaller sub(capabilities); open(sub, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING); - QStringList::ConstIterator it = arg.constBegin(); - QStringList::ConstIterator end = arg.constEnd(); - for ( ; it != end; ++it) - sub.append(*it); + for (const QString &s : arg) + sub.append(s); // don't call sub.close(): it auto-closes } @@ -250,11 +220,7 @@ inline QDBusMarshaller *QDBusMarshaller::beginArray(QMetaType id) { const char *signature = QDBusMetaType::typeToSignature(id); if (!signature) { - qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. " - "Use qDBusRegisterMetaType to register it", - id.name(), id.id()); - error(QLatin1String("Unregistered type %1 passed in arguments") - .arg(QLatin1String(id.name()))); + unregisteredTypeError(id); return this; } @@ -265,29 +231,23 @@ inline QDBusMarshaller *QDBusMarshaller::beginMap(QMetaType kid, QMetaType vid) { const char *ksignature = QDBusMetaType::typeToSignature(kid); if (!ksignature) { - qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. " - "Use qDBusRegisterMetaType to register it", - kid.name(), kid.id()); - error(QLatin1String("Unregistered type %1 passed in arguments") - .arg(QLatin1String(kid.name()))); + unregisteredTypeError(kid); return this; } if (ksignature[1] != 0 || !QDBusUtil::isValidBasicType(*ksignature)) { - qWarning("QDBusMarshaller: type '%s' (%d) cannot be used as the key type in a D-BUS map.", +QT_WARNING_PUSH +QT_WARNING_DISABLE_GCC("-Wformat-overflow") + qWarning("QDBusMarshaller: type '%s' (%d) cannot be used as the key type in a D-Bus map.", kid.name(), kid.id()); - error(QLatin1String("Type %1 passed in arguments cannot be used as a key in a map") - .arg(QLatin1String(kid.name()))); +QT_WARNING_POP + error("Type %1 passed in arguments cannot be used as a key in a map"_L1 + .arg(QLatin1StringView(kid.name()))); return this; } const char *vsignature = QDBusMetaType::typeToSignature(vid); if (!vsignature) { - const char *typeName = vid.name(); - qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. " - "Use qDBusRegisterMetaType to register it", - typeName, vid.id()); - error(QLatin1String("Unregistered type %1 passed in arguments") - .arg(QLatin1String(typeName))); + unregisteredTypeError(vid); return this; } @@ -386,7 +346,7 @@ bool QDBusMarshaller::appendVariantInternal(const QVariant &arg) QMetaType id = arg.metaType(); if (!id.isValid()) { qWarning("QDBusMarshaller: cannot add an invalid QVariant"); - error(QLatin1String("Invalid QVariant passed in arguments")); + error("Invalid QVariant passed in arguments"_L1); return false; } @@ -400,7 +360,7 @@ bool QDBusMarshaller::appendVariantInternal(const QVariant &arg) QDBusDemarshaller demarshaller(capabilities); demarshaller.message = q_dbus_message_ref(d->message); - if (d->direction == Demarshalling) { + if (d->direction == Direction::Demarshalling) { // it's demarshalling; just copy demarshaller.iterator = static_cast<QDBusDemarshaller *>(d)->iterator; } else { @@ -414,11 +374,7 @@ bool QDBusMarshaller::appendVariantInternal(const QVariant &arg) const char *signature = QDBusMetaType::typeToSignature(id); if (!signature) { - qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. " - "Use qDBusRegisterMetaType to register it", - id.name(), id.id()); - error(QLatin1String("Unregistered type %1 passed in arguments") - .arg(QLatin1String(id.name()))); + unregisteredTypeError(id); return false; } @@ -516,7 +472,7 @@ bool QDBusMarshaller::appendVariantInternal(const QVariant &arg) Q_FALLTHROUGH(); default: - qWarning("QDBusMarshaller::appendVariantInternal: Found unknown D-BUS type '%s'", + qWarning("QDBusMarshaller::appendVariantInternal: Found unknown D-Bus type '%s'", signature); return false; } @@ -536,7 +492,7 @@ bool QDBusMarshaller::appendCrossMarshalling(QDBusDemarshaller *demarshaller) int code = q_dbus_message_iter_get_arg_type(&demarshaller->iterator); if (QDBusUtil::isValidBasicType(code)) { // easy: just append - // do exactly like the D-BUS docs suggest + // do exactly like the D-Bus docs suggest // (see apidocs for q_dbus_message_iter_get_basic) qlonglong value; |