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 0832022ee914508be1919044d276bd2945a230a0..015fae70adebb8212582463ad3a0bdb5d03ce540 100644 (file)
 #include "sd-bus.h"
 #include "bus-error.h"
 
 #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;
 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 (!e)
                 return 0;
-        if (sd_bus_error_is_set(e))
+        if (bus_error_is_dirty(e))
                 return -EINVAL;
         if (!name)
                 return -EINVAL;
                 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;
 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;
                 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;
 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;
                 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;
 
 }
 
 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) {
 }
 
 int sd_bus_error_has_name(const sd_bus_error *e, const char *name) {
index f49e6c73985ad9a115dc5bb1dc6d077dc5b94187..c6e072eab4913e65fa53ce7d78188f67db85700f 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);
 
 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 a1bae4d1a76d75d467028c35e83f76eb19dfc893..5f3dbdb75de8a55d2a41076b045b7de9af0b9507 100644 (file)
@@ -447,9 +447,7 @@ int sd_bus_message_new_method_error(
         sd_bus_message *t;
         int r;
 
         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;
                 return -EINVAL;
         if (!m)
                 return -EINVAL;
index 70288ee1310378858b4aaa75982bc2711ec5f9bd..c5cbb5682d8cc370dac7f55d08b56c7ba1fc68fd 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;
                 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);
                 return -EINVAL;
 
         r = sd_bus_send(bus, m, &serial);
index d655f05dc3d308779a52ce8e50cf3f42608009de..d892562b5f6362cd1db04fe809b8afbc207e7b21 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);
 
 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, ...);
 
 void sd_bus_error_free(sd_bus_error *e);
 int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...);