]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-varlink: introduce sd_varlink_get_current_method()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 4 Jan 2025 12:18:42 +0000 (21:18 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 4 Jan 2025 14:33:09 +0000 (23:33 +0900)
src/libsystemd/libsystemd.sym
src/libsystemd/sd-varlink/sd-varlink.c
src/systemd/sd-varlink.h

index c310aa903fad319ef7a4321ec7b9c819c6e422cc..c953085ef9b48d07b919b9ab505b044ba4d7db62 100644 (file)
@@ -1065,6 +1065,7 @@ global:
         sd_device_enumerator_add_all_parents;
         sd_json_variant_type_from_string;
         sd_json_variant_type_to_string;
+        sd_varlink_get_current_method;
         sd_varlink_get_input_fd;
         sd_varlink_get_output_fd;
         sd_varlink_reset_fds;
index 5e26f0f97e63563539d26d6c3438763b84de85ca..46dd3a62df3ebd9215d360214ed26e006009eb17 100644 (file)
@@ -1542,6 +1542,25 @@ _public_ int sd_varlink_dispatch_again(sd_varlink *v) {
         return 0;
 }
 
+_public_ int sd_varlink_get_current_method(sd_varlink *v, const char **ret) {
+        assert_return(v, -EINVAL);
+
+        if (!v->current)
+                return -ENODATA;
+
+        sd_json_variant *p = sd_json_variant_by_key(v->current, "method");
+        if (!p)
+                return -ENODATA;
+
+        const char *s = sd_json_variant_string(p);
+        if (!s)
+                return -ENODATA;
+
+        if (ret)
+                *ret = s;
+        return 0;
+}
+
 _public_ int sd_varlink_get_current_parameters(sd_varlink *v, sd_json_variant **ret) {
         sd_json_variant *p;
 
index 223d02f4d7c97638d369bef6b360e9f333ef80ce..6329c4ee6a8c2d338e7db7cb263a43ca0fa0aa7c 100644 (file)
@@ -178,6 +178,7 @@ int sd_varlink_notifyb(sd_varlink *v, ...);
 int sd_varlink_dispatch_again(sd_varlink *v);
 
 /* Get the currently processed incoming message */
+int sd_varlink_get_current_method(sd_varlink *v, const char **ret);
 int sd_varlink_get_current_parameters(sd_varlink *v, sd_json_variant **ret);
 
 /* Parsing incoming data via json_dispatch() and generate a nice error on parse errors */