Index: trunk/src/dbus/qdbusutil_p.h
===================================================================
--- trunk/src/dbus/qdbusutil_p.h	(revision 5)
+++ trunk/src/dbus/qdbusutil_p.h	(revision 561)
@@ -2,5 +2,6 @@
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
 **
 ** This file is part of the QtDBus module of the Qt Toolkit.
@@ -21,8 +22,7 @@
 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 **
 ** GNU General Public License Usage
@@ -34,6 +34,6 @@
 ** met: http://www.gnu.org/copyleft/gpl.html.
 **
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
 ** $QT_END_LICENSE$
 **
@@ -58,4 +58,5 @@
 
 #include <QtDBus/qdbusmacros.h>
+#include <QtDBus/qdbuserror.h>
 
 QT_BEGIN_HEADER
@@ -84,4 +85,71 @@
 
     QDBUS_EXPORT QString argumentToString(const QVariant &variant);
+
+    enum AllowEmptyFlag {
+        EmptyAllowed,
+        EmptyNotAllowed
+    };
+
+    inline bool checkInterfaceName(const QString &name, AllowEmptyFlag empty, QDBusError *error)
+    {
+        if (name.isEmpty()) {
+            if (empty == EmptyAllowed) return true;
+            *error = QDBusError(QDBusError::InvalidInterface, QLatin1String("Interface name cannot be empty"));
+            return false;
+        }
+        if (isValidInterfaceName(name)) return true;
+        *error = QDBusError(QDBusError::InvalidInterface, QString::fromLatin1("Invalid interface class: %1").arg(name));
+        return false;
+    }
+
+    inline bool checkBusName(const QString &name, AllowEmptyFlag empty, QDBusError *error)
+    {
+        if (name.isEmpty()) {
+            if (empty == EmptyAllowed) return true;
+            *error = QDBusError(QDBusError::InvalidService, QLatin1String("Service name cannot be empty"));
+            return false;
+        }
+        if (isValidBusName(name)) return true;
+        *error = QDBusError(QDBusError::InvalidService, QString::fromLatin1("Invalid service name: %1").arg(name));
+        return false;
+    }
+
+    inline bool checkObjectPath(const QString &path, AllowEmptyFlag empty, QDBusError *error)
+    {
+        if (path.isEmpty()) {
+            if (empty == EmptyAllowed) return true;
+            *error = QDBusError(QDBusError::InvalidObjectPath, QLatin1String("Object path cannot be empty"));
+            return false;
+        }
+        if (isValidObjectPath(path)) return true;
+        *error = QDBusError(QDBusError::InvalidObjectPath, QString::fromLatin1("Invalid object path: %1").arg(path));
+        return false;
+    }
+
+    inline bool checkMemberName(const QString &name, AllowEmptyFlag empty, QDBusError *error, const char *nameType = 0)
+    {
+        if (!nameType) nameType = "member";
+        if (name.isEmpty()) {
+            if (empty == EmptyAllowed) return true;
+            *error = QDBusError(QDBusError::InvalidMember, QLatin1String(nameType) + QLatin1String(" name cannot be empty"));
+            return false;
+        }
+        if (isValidMemberName(name)) return true;
+        *error = QDBusError(QDBusError::InvalidMember, QString::fromLatin1("Invalid %1 name: %2")
+                            .arg(QString::fromLatin1(nameType), name));
+        return false;
+    }
+
+    inline bool checkErrorName(const QString &name, AllowEmptyFlag empty, QDBusError *error)
+    {
+        if (name.isEmpty()) {
+            if (empty == EmptyAllowed) return true;
+            *error = QDBusError(QDBusError::InvalidInterface, QLatin1String("Error name cannot be empty"));
+            return false;
+        }
+        if (isValidErrorName(name)) return true;
+        *error = QDBusError(QDBusError::InvalidInterface, QString::fromLatin1("Invalid error name: %1").arg(name));
+        return false;
+    }
 }
 
