]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
varlink: add helper for generating errno errors
authorLennart Poettering <lennart@poettering.net>
Sun, 16 Aug 2020 11:45:25 +0000 (13:45 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 26 Aug 2020 14:46:57 +0000 (16:46 +0200)
src/shared/varlink.c
src/shared/varlink.h

index be3559dc1037efec091ba4a1843daad3e0f0f919..e2b4bb623d16c4668769bd920ca4cf7ffc2327f3 100644 (file)
@@ -862,7 +862,7 @@ static int varlink_dispatch_method(Varlink *v) {
 
                         /* We got an error back from the callback. Propagate it to the client if the method call remains unanswered. */
                         if (!FLAGS_SET(flags, VARLINK_METHOD_ONEWAY)) {
-                                r = varlink_errorb(v, VARLINK_ERROR_SYSTEM, JSON_BUILD_OBJECT(JSON_BUILD_PAIR("errno", JSON_BUILD_INTEGER(-r))));
+                                r = varlink_error_errno(v, r);
                                 if (r < 0)
                                         return r;
                         }
@@ -1659,6 +1659,13 @@ int varlink_error_invalid_parameter(Varlink *v, JsonVariant *parameters) {
         return -EINVAL;
 }
 
+int varlink_error_errno(Varlink *v, int error) {
+        return varlink_errorb(
+                        v,
+                        VARLINK_ERROR_SYSTEM,
+                        JSON_BUILD_OBJECT(JSON_BUILD_PAIR("errno", JSON_BUILD_INTEGER(abs(error)))));
+}
+
 int varlink_notify(Varlink *v, JsonVariant *parameters) {
         _cleanup_(json_variant_unrefp) JsonVariant *m = NULL;
         int r;
index 7440f2ca44d711588c79138bb27f6a3357db3003..06a34b480d46307a07475599f9b7e86f48094f9c 100644 (file)
@@ -100,6 +100,7 @@ int varlink_replyb(Varlink *v, ...);
 int varlink_error(Varlink *v, const char *error_id, JsonVariant *parameters);
 int varlink_errorb(Varlink *v, const char *error_id, ...);
 int varlink_error_invalid_parameter(Varlink *v, JsonVariant *parameters);
+int varlink_error_errno(Varlink *v, int error);
 
 /* Enqueue a "more" reply */
 int varlink_notify(Varlink *v, JsonVariant *parameters);