summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/dbus-errors.c')
-rw-r--r--dbus/dbus-errors.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/dbus/dbus-errors.c b/dbus/dbus-errors.c
index 3aca9f10..e57d3538 100644
--- a/dbus/dbus-errors.c
+++ b/dbus/dbus-errors.c
@@ -200,6 +200,8 @@ dbus_set_error_const (DBusError *error,
/* it's a bug to pile up errors */
_dbus_assert (error->name == NULL);
_dbus_assert (error->message == NULL);
+ _dbus_assert (name != NULL);
+ _dbus_assert (message != NULL);
real = (DBusRealError *)error;
@@ -209,6 +211,48 @@ dbus_set_error_const (DBusError *error,
}
/**
+ * Checks whether the error is set and has the given
+ * name.
+ * @param error the error
+ * @param name the name
+ * @returns #TRUE if the given named error occurred
+ */
+dbus_bool_t
+dbus_error_has_name (const DBusError *error,
+ const char *name)
+{
+ _dbus_assert (error != NULL);
+ _dbus_assert (name != NULL);
+ _dbus_assert ((error->name != NULL && error->message != NULL) ||
+ (error->name == NULL && error->message == NULL));
+
+ if (error->name != NULL)
+ {
+ DBusString str1, str2;
+ _dbus_string_init_const (&str1, error->name);
+ _dbus_string_init_const (&str2, name);
+ return _dbus_string_equal (&str1, &str2);
+ }
+ else
+ return FALSE;
+}
+
+/**
+ * Checks whether an error occurred (the error is set).
+ *
+ * @param error the error object
+ * @returns #TRUE if an error occurred
+ */
+dbus_bool_t
+dbus_error_is_set (const DBusError *error)
+{
+ _dbus_assert (error != NULL);
+ _dbus_assert ((error->name != NULL && error->message != NULL) ||
+ (error->name == NULL && error->message == NULL));
+ return error->name != NULL;
+}
+
+/**
* Assigns an error name and message to a DBusError.
* Does nothing if error is #NULL.
*
@@ -240,6 +284,8 @@ dbus_set_error (DBusError *error,
/* it's a bug to pile up errors */
_dbus_assert (error->name == NULL);
_dbus_assert (error->message == NULL);
+ _dbus_assert (name != NULL);
+ _dbus_assert (format != NULL);
va_start (args, format);
/* Measure the message length */