chiark / gitweb /
bus: introduce bus_error_is_dirty() independently of sd_bus_error_is_set()
authorLennart Poettering <lennart@poettering.net>
Wed, 20 Mar 2013 12:10:12 +0000 (13:10 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 20 Mar 2013 22:00:10 +0000 (23:00 +0100)
src/libsystemd-bus/bus-error.c
src/libsystemd-bus/bus-error.h
src/libsystemd-bus/bus-message.c
src/libsystemd-bus/sd-bus.c
src/libsystemd-bus/sd-bus.h

index 0832022..015fae7 100644 (file)
 #include "sd-bus.h"
 #include "bus-error.h"
 
+bool bus_error_is_dirty(sd_bus_error *e) {
+        if (!e)
+                return 0;
+
+        return e->name || e->message || e->need_free;
+}
+
 void sd_bus_error_free(sd_bus_error *e) {
         if (!e)
                 return;
@@ -51,7 +58,7 @@ int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...)
 
         if (!e)
                 return 0;
-        if (sd_bus_error_is_set(e))
+        if (bus_error_is_dirty(e))
                 return -EINVAL;
         if (!name)
                 return -EINVAL;
@@ -81,7 +88,7 @@ int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...)
 int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) {
         if (!dest)
                 return 0;
-        if (sd_bus_error_is_set(dest))
+        if (bus_error_is_dirty(dest))
                 return -EINVAL;
         if (!sd_bus_error_is_set(e))
                 return 0;
@@ -113,18 +120,19 @@ int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) {
 void sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message) {
         if (!e)
                 return;
-        if (sd_bus_error_is_set(e))
+        if (bus_error_is_dirty(e))
                 return;
 
         e->name = name;
         e->message = message;
+        e->need_free = false;
 }
 
 int sd_bus_error_is_set(const sd_bus_error *e) {
         if (!e)
                 return 0;
 
-        return e->name || e->message || e->need_free;
+        return !!e->name;
 }
 
 int sd_bus_error_has_name(const sd_bus_error *e, const char *name) {
index f49e6c7..c6e072e 100644 (file)
@@ -25,3 +25,5 @@
 
 int bus_error_to_errno(const sd_bus_error *e);
 int bus_error_from_errno(sd_bus_error *e, int error);
+
+bool bus_error_is_dirty(sd_bus_error *e);
index a1bae4d..5f3dbdb 100644 (file)
@@ -447,9 +447,7 @@ int sd_bus_message_new_method_error(
         sd_bus_message *t;
         int r;
 
-        if (!e)
-                return -EINVAL;
-        if (!e->name)
+        if (!sd_bus_error_is_set(e))
                 return -EINVAL;
         if (!m)
                 return -EINVAL;
index 70288ee..c5cbb56 100644 (file)
@@ -1131,7 +1131,7 @@ int sd_bus_send_with_reply_and_block(
                 return -EINVAL;
         if (!m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL)
                 return -EINVAL;
-        if (sd_bus_error_is_set(error))
+        if (sd_bus_error_is_dirty(error))
                 return -EINVAL;
 
         r = sd_bus_send(bus, m, &serial);
index d655f05..d892562 100644 (file)
@@ -131,9 +131,9 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid);
 int sd_bus_add_match(sd_bus *bus, const char *match);
 int sd_bus_remove_match(sd_bus *bus, const char *match);
 
-/* Error objects */
+/* Error structures */
 
-#define SD_BUS_ERROR_INIT (NULL, NULL, false)
+#define SD_BUS_ERROR_INIT (NULL, NULL, 0)
 
 void sd_bus_error_free(sd_bus_error *e);
 int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...);