chiark / gitweb /
bus: rename SD_BUS_ERROR_MAKE to SD_BUS_ERROR_MAKE_CONST to indicate it only works...
[elogind.git] / src / libsystemd-bus / bus-error.c
index 35e261464067abfe8c18807fcfeaaa4b4f0cc5c5..7fef681413205c0461b3bb7ae5e6b44dd05217a1 100644 (file)
@@ -38,7 +38,7 @@ bool bus_error_is_dirty(sd_bus_error *e) {
         return e->name || e->message || e->need_free;
 }
 
-void sd_bus_error_free(sd_bus_error *e) {
+_public_ void sd_bus_error_free(sd_bus_error *e) {
         if (!e)
                 return;
 
@@ -51,7 +51,7 @@ void sd_bus_error_free(sd_bus_error *e) {
         e->need_free = false;
 }
 
-int sd_bus_error_set(sd_bus_error *e, const char *name, const char *message) {
+_public_ int sd_bus_error_set(sd_bus_error *e, const char *name, const char *message) {
         char *n, *m = NULL;
 
         if (!e)
@@ -74,7 +74,7 @@ int sd_bus_error_set(sd_bus_error *e, const char *name, const char *message) {
         e->message = m;
         e->need_free = true;
 
-        return 0;
+        return sd_bus_error_get_errno(e);
 }
 
 int bus_error_setfv(sd_bus_error *e, const char *name, const char *format, va_list ap) {
@@ -103,10 +103,10 @@ int bus_error_setfv(sd_bus_error *e, const char *name, const char *format, va_li
         e->message = m;
         e->need_free = true;
 
-        return 0;
+        return sd_bus_error_get_errno(e);
 }
 
-int sd_bus_error_setf(sd_bus_error *e, const char *name, const char *format, ...) {
+_public_ int sd_bus_error_setf(sd_bus_error *e, const char *name, const char *format, ...) {
 
         if (format) {
                 int r;
@@ -122,7 +122,7 @@ int sd_bus_error_setf(sd_bus_error *e, const char *name, const char *format, ...
         return sd_bus_error_set(e, name, NULL);
 }
 
-int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) {
+_public_ int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) {
         char *x, *y = NULL;
 
         if (!dest)
@@ -147,35 +147,35 @@ int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) {
         dest->name = x;
         dest->message = y;
         dest->need_free = true;
-        return 0;
+        return sd_bus_error_get_errno(e);
 }
 
-int sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message) {
+_public_ int sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message) {
         if (!e)
                 return 0;
 
         assert_return(!bus_error_is_dirty(e), -EINVAL);
         assert_return(name, -EINVAL);
 
-        *e = SD_BUS_ERROR_MAKE(name, message);
-        return 0;
+        *e = SD_BUS_ERROR_MAKE_CONST(name, message);
+        return sd_bus_error_get_errno(e);
 }
 
-int sd_bus_error_is_set(const sd_bus_error *e) {
+_public_ int sd_bus_error_is_set(const sd_bus_error *e) {
         if (!e)
                 return 0;
 
         return !!e->name;
 }
 
-int sd_bus_error_has_name(const sd_bus_error *e, const char *name) {
+_public_ int sd_bus_error_has_name(const sd_bus_error *e, const char *name) {
         if (!e)
                 return 0;
 
         return streq_ptr(e->name, name);
 }
 
-int sd_bus_error_get_errno(const sd_bus_error* e) {
+_public_ int sd_bus_error_get_errno(const sd_bus_error* e) {
 
         /* Better replce this with a gperf table */
 
@@ -331,56 +331,56 @@ static sd_bus_error map_from_errno(int error) {
         switch (error) {
 
         case ENOMEM:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_NO_NETWORK, "Out of memory");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_NO_NETWORK, "Out of memory");
 
         case EPERM:
         case EACCES:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_ACCESS_DENIED, "Access denied");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_ACCESS_DENIED, "Access denied");
 
         case EINVAL:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_INVALID_ARGS, "Invalid argument");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_INVALID_ARGS, "Invalid argument");
 
         case ESRCH:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN, "No such process");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN, "No such process");
 
         case ENOENT:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_FILE_NOT_FOUND, "File not found");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_FILE_NOT_FOUND, "File not found");
 
         case EEXIST:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_FILE_EXISTS, "File exists");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_FILE_EXISTS, "File exists");
 
         case ETIMEDOUT:
         case ETIME:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_TIMEOUT, "Timed out");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_TIMEOUT, "Timed out");
 
         case EIO:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_IO_ERROR, "Input/output error");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_IO_ERROR, "Input/output error");
 
         case ENETRESET:
         case ECONNABORTED:
         case ECONNRESET:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_DISCONNECTED, "Disconnected");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_DISCONNECTED, "Disconnected");
 
         case ENOTSUP:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_NOT_SUPPORTED, "Not supported");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_NOT_SUPPORTED, "Not supported");
 
         case EADDRNOTAVAIL:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_BAD_ADDRESS, "Address not available");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_BAD_ADDRESS, "Address not available");
 
         case ENOBUFS:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_LIMITS_EXCEEDED, "Limits exceeded");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_LIMITS_EXCEEDED, "Limits exceeded");
 
         case EADDRINUSE:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_ADDRESS_IN_USE, "Address in use");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_ADDRESS_IN_USE, "Address in use");
 
         case EBADMSG:
-                return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_INCONSISTENT_MESSAGE, "Inconsistent message");
+                return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_INCONSISTENT_MESSAGE, "Inconsistent message");
         }
 
-        return SD_BUS_ERROR_MAKE(SD_BUS_ERROR_FAILED, "Operation failed");
+        return SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_FAILED, "Operation failed");
 }
 
-int sd_bus_error_set_errno(sd_bus_error *e, int error) {
+_public_ int sd_bus_error_set_errno(sd_bus_error *e, int error) {
         sd_bus_error x;
 
         x = map_from_errno(error);
@@ -396,7 +396,7 @@ int bus_error_set_errnofv(sd_bus_error *e, int error, const char *format, va_lis
                 error = -error;
 
         if (!e)
-                return 0;
+                return -error;
 
         assert_return(!bus_error_is_dirty(e), -EINVAL);
 
@@ -425,11 +425,14 @@ fallback:
         return bus_error_set_strerror_or_const(e, x.name, error, x.message);
 }
 
-int sd_bus_error_set_errnof(sd_bus_error *e, int error, const char *format, ...) {
+_public_ int sd_bus_error_set_errnof(sd_bus_error *e, int error, const char *format, ...) {
         int r;
 
+        if (error < 0)
+                error = -error;
+
         if (!e)
-                return 0;
+                return -error;
 
         assert_return(!bus_error_is_dirty(e), -EINVAL);