mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2025-12-30 07:10:10 +01:00
2003-02-13 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init), (dbus_error_free), (dbus_set_error_const), (dbus_set_error): * dbus/dbus-errors.h: Add DBusError structure.
This commit is contained in:
parent
f28c364352
commit
b09fadc114
3 changed files with 130 additions and 1 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2003-02-13 Anders Carlsson <andersca@codefactory.se>
|
||||
|
||||
* dbus/dbus-errors.c: (dbus_result_to_string), (dbus_error_init),
|
||||
(dbus_error_free), (dbus_set_error_const), (dbus_set_error):
|
||||
* dbus/dbus-errors.h:
|
||||
Add DBusError structure.
|
||||
|
||||
2003-02-13 Anders Carlsson <andersca@codefactory.se>
|
||||
|
||||
* test/data/valid-messages/standard-acquire-service.message:
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@
|
|||
*
|
||||
*/
|
||||
#include "dbus-errors.h"
|
||||
#include "dbus-internals.h"
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/**
|
||||
* @defgroup DBusErrors Error reporting
|
||||
|
|
@ -42,6 +45,14 @@
|
|||
* @{
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *name; /**< error name */
|
||||
char *message; /**< error message */
|
||||
|
||||
unsigned int const_message : 1; /** Message is not owned by DBusError */
|
||||
} DBusRealError;
|
||||
|
||||
/**
|
||||
* Set a result code at a result code location,
|
||||
* if code_address is not #NULL.
|
||||
|
|
@ -112,4 +123,92 @@ dbus_result_to_string (DBusResultCode code)
|
|||
return "Invalid error code";
|
||||
}
|
||||
|
||||
void
|
||||
dbus_error_init (DBusError *error)
|
||||
{
|
||||
DBusRealError *real;
|
||||
|
||||
_dbus_assert (error != NULL);
|
||||
|
||||
_dbus_assert (sizeof (DBusError) == sizeof (DBusRealError));
|
||||
|
||||
real = (DBusRealError *)error;
|
||||
|
||||
real->name = NULL;
|
||||
real->message = NULL;
|
||||
|
||||
real->const_message = TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
dbus_error_free (DBusError *error)
|
||||
{
|
||||
DBusRealError *real;
|
||||
|
||||
real = (DBusRealError *)error;
|
||||
|
||||
if (!real->const_message)
|
||||
dbus_free (real->message);
|
||||
}
|
||||
|
||||
void
|
||||
dbus_set_error_const (DBusError *error,
|
||||
const char *name,
|
||||
const char *message)
|
||||
{
|
||||
DBusRealError *real;
|
||||
|
||||
if (error == NULL)
|
||||
return;
|
||||
|
||||
dbus_error_init (error);
|
||||
|
||||
real = (DBusRealError *)error;
|
||||
|
||||
real->name = name;
|
||||
real->message = (char *)message;
|
||||
real->const_message = TRUE;
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
dbus_set_error (DBusError *error,
|
||||
const char *name,
|
||||
const char *format,
|
||||
...)
|
||||
{
|
||||
DBusRealError *real;
|
||||
va_list args, args2;
|
||||
int message_length;
|
||||
char *message;
|
||||
char c;
|
||||
|
||||
if (error == NULL)
|
||||
return TRUE;
|
||||
|
||||
va_start (args, format);
|
||||
|
||||
va_copy (args2, args);
|
||||
|
||||
/* Measure the message length */
|
||||
message_length = vsnprintf (&c, 1,format, args) + 1;
|
||||
|
||||
message = dbus_malloc (message_length);
|
||||
|
||||
vsprintf (message, format, args2);
|
||||
|
||||
if (!message)
|
||||
return FALSE;
|
||||
|
||||
va_end (args);
|
||||
|
||||
dbus_error_init (error);
|
||||
real = (DBusRealError *)error;
|
||||
|
||||
real->name = name;
|
||||
real->message = message;
|
||||
real->const_message = FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
|||
|
|
@ -28,9 +28,21 @@
|
|||
#define DBUS_ERROR_H
|
||||
|
||||
#include <dbus/dbus-macros.h>
|
||||
#include <dbus/dbus-types.h>
|
||||
|
||||
DBUS_BEGIN_DECLS;
|
||||
|
||||
typedef struct DBusError DBusError;
|
||||
|
||||
struct DBusError
|
||||
{
|
||||
const char *name; /**< error name */
|
||||
const char *message; /**< error message */
|
||||
|
||||
unsigned int dummy1 : 1; /**< placeholder */
|
||||
unsigned int dummy2 : 1; /**< placeholder */
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DBUS_RESULT_SUCCESS, /**< Operation was successful. */
|
||||
|
|
@ -55,11 +67,22 @@ typedef enum
|
|||
DBUS_RESULT_FILE_NOT_FOUND /**< File doesn't exist */
|
||||
} DBusResultCode;
|
||||
|
||||
void dbus_error_init (DBusError *error);
|
||||
void dbus_error_free (DBusError *error);
|
||||
dbus_bool_t 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_set_result (DBusResultCode *code_address,
|
||||
DBusResultCode code);
|
||||
const char* dbus_result_to_string (DBusResultCode code);
|
||||
|
||||
|
||||
DBUS_END_DECLS;
|
||||
|
||||
#endif /* DBUS_ERROR_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue