/* dbus-errors.h Error reporting
*
* Copyright (C) 2002 Red Hat Inc.
+ * Copyright (C) 2003 CodeFactory AB
*
* Licensed under the Academic Free License version 1.2
*
#define DBUS_ERROR_H
#include <dbus/dbus-macros.h>
+#include <dbus/dbus-types.h>
DBUS_BEGIN_DECLS;
-typedef enum
+typedef struct DBusError DBusError;
+
+struct DBusError
{
- DBUS_RESULT_SUCCESS, /**< Operation was successful. */
- DBUS_RESULT_FAILED, /**< Operation failed for unspecified reason. */
- DBUS_RESULT_NO_MEMORY, /**< Operation failed for lack of memory. */
- DBUS_RESULT_IO_ERROR, /**< Operation failed because of an IO error,
- * typically the other end closed the
- * connection.
- */
- DBUS_RESULT_BAD_ADDRESS, /**< Address was bad, could not be parsed. */
- DBUS_RESULT_NOT_SUPPORTED, /**< Feature is not supported. */
- DBUS_RESULT_LIMITS_EXCEEDED, /**< Some kernel resource limit exceeded. */
- DBUS_RESULT_ACCESS_DENIED, /**< Some sort of permissions/security problem. */
- DBUS_RESULT_AUTH_FAILED, /**< Could not authenticate. */
- DBUS_RESULT_NO_SERVER, /**< No one listening on the other end. */
- DBUS_RESULT_TIMEOUT, /**< Timed out trying to connect. */
- DBUS_RESULT_NO_NETWORK, /**< Can't find the network */
- DBUS_RESULT_ADDRESS_IN_USE, /**< Someone's already using the address */
- DBUS_RESULT_DISCONNECTED, /**< No more connection. */
- DBUS_RESULT_INVALID_FIELDS /**< One or more invalid fields encountered. */
-} DBusResultCode;
-
-void dbus_set_result (DBusResultCode *code_address,
- DBusResultCode code);
-const char* dbus_result_to_string (DBusResultCode code);
+ const char *name; /**< error name */
+ const char *message; /**< error message */
+
+ unsigned int dummy1 : 1; /**< placeholder */
+ unsigned int dummy2 : 1; /**< placeholder */
+ unsigned int dummy3 : 1; /**< placeholder */
+ unsigned int dummy4 : 1; /**< placeholder */
+ unsigned int dummy5 : 1; /**< placeholder */
+
+ void *padding1; /**< placeholder */
+};
+
+#define DBUS_ERROR_FAILED "org.freedesktop.DBus.Error.Failed"
+#define DBUS_ERROR_ACTIVATE_SERVICE_NOT_FOUND "org.freedesktop.DBus.Activate.ServiceNotFound"
+#define DBUS_ERROR_SPAWN_EXEC_FAILED "org.freedesktop.DBus.Error.Spawn.ExecFailed"
+#define DBUS_ERROR_SPAWN_FORK_FAILED "org.freedesktop.DBus.Error.Spawn.ForkFailed"
+#define DBUS_ERROR_SPAWN_CHILD_EXITED "org.freedesktop.DBus.Error.Spawn.ChildExited"
+#define DBUS_ERROR_SPAWN_CHILD_SIGNALED "org.freedesktop.DBus.Error.Spawn.ChildSignaled"
+#define DBUS_ERROR_SPAWN_FAILED "org.freedesktop.DBus.Error.Spawn.Failed"
+#define DBUS_ERROR_NO_MEMORY "org.freedesktop.DBus.Error.NoMemory"
+#define DBUS_ERROR_SERVICE_DOES_NOT_EXIST "org.freedesktop.DBus.Error.ServiceDoesNotExist"
+#define DBUS_ERROR_NO_REPLY "org.freedesktop.DBus.Error.NoReply"
+#define DBUS_ERROR_IO_ERROR "org.freedesktop.DBus.Error.IOError"
+#define DBUS_ERROR_BAD_ADDRESS "org.freedesktop.DBus.Error.BadAddress"
+#define DBUS_ERROR_NOT_SUPPORTED "org.freedesktop.DBus.Error.NotSupported"
+#define DBUS_ERROR_LIMITS_EXCEEDED "org.freedesktop.DBus.Error.LimitsExceeded"
+#define DBUS_ERROR_ACCESS_DENIED "org.freedesktop.DBus.Error.AccessDenied"
+#define DBUS_ERROR_AUTH_FAILED "org.freedesktop.DBus.Error.AuthFailed"
+#define DBUS_ERROR_NO_SERVER "org.freedesktop.DBus.Error.NoServer"
+#define DBUS_ERROR_TIMEOUT "org.freedesktop.DBus.Error.Timeout"
+#define DBUS_ERROR_NO_NETWORK "org.freedesktop.DBus.Error.NoNetwork"
+#define DBUS_ERROR_ADDRESS_IN_USE "org.freedesktop.DBus.Error.AddressInUse"
+#define DBUS_ERROR_DISCONNECTED "org.freedesktop.DBus.Error.Disconnected"
+#define DBUS_ERROR_INVALID_ARGS "org.freedesktop.DBus.Error.InvalidArgs"
+#define DBUS_ERROR_FILE_NOT_FOUND "org.freedesktop.DBus.Error.FileNotFound"
+#define DBUS_ERROR_UNKNOWN_MESSAGE "org.freedesktop.DBus.Error.UnknownMessage"
+#define DBUS_ERROR_TIMED_OUT "org.freedesktop.DBus.Error.TimedOut"
+void dbus_error_init (DBusError *error);
+void dbus_error_free (DBusError *error);
+void dbus_set_error (DBusError *error,
+ const char *name,
+ const char *message,
+ ...);
+void dbus_set_error_const (DBusError *error,
+ const char *name,
+ const char *message);
+void dbus_move_error (DBusError *src,
+ DBusError *dest);
+dbus_bool_t dbus_error_has_name (const DBusError *error,
+ const char *name);
+dbus_bool_t dbus_error_is_set (const DBusError *error);
DBUS_END_DECLS;