]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
varlinkctl: if "call" verb is used, imply "-j"
authorLennart Poettering <lennart@poettering.net>
Wed, 7 Feb 2024 10:45:33 +0000 (11:45 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 12 Feb 2024 11:04:18 +0000 (12:04 +0100)
For the other verbs turning off JSON mode makes sense, but for "call"
not so much, after all the contents of a method call reply is JSON we
couldn't really show any other way.

Hence, when JSON output was not configured otherwise in "call", default
to the same as -j.

src/varlinkctl/varlinkctl.c
test/units/testsuite-54.sh

index 714396d3874336d7d827ba0c91a320f6d2eca8e4..26b764aca696e54df60c9f04b512910234beae9b 100644 (file)
@@ -379,7 +379,13 @@ static int verb_call(int argc, char *argv[], void *userdata) {
         method = argv[2];
         parameter = argc > 3 && !streq(argv[3], "-") ? argv[3] : NULL;
 
-        arg_json_format_flags &= ~JSON_FORMAT_OFF;
+        /* No JSON mode explicitly configured? Then default to the same as -j */
+        if (FLAGS_SET(arg_json_format_flags, JSON_FORMAT_OFF))
+                arg_json_format_flags = JSON_FORMAT_PRETTY_AUTO|JSON_FORMAT_COLOR_AUTO;
+
+        /* For pipeable text tools it's kinda customary to finish output off in a newline character, and not
+         * leave incomplete lines hanging around. */
+        arg_json_format_flags |= JSON_FORMAT_NEWLINE;
 
         if (parameter) {
                 /* <argv[4]> is correct, as dispatch_verb() shifts arguments by one for the verb. */
index 8f20ac432868a95ea3cf600733bdc4314040e194..7618e92c9fa4ffa2cdae096256187f688fae037c 100755 (executable)
@@ -348,10 +348,10 @@ fi
 
 # Decrypt/encrypt via varlink
 
-echo -n '{"data":"Zm9vYmFyCg=="}' > /tmp/vlcredsdata
+echo '{"data":"Zm9vYmFyCg=="}' > /tmp/vlcredsdata
 
 varlinkctl call /run/systemd/io.systemd.Credentials io.systemd.Credentials.Encrypt "$(cat /tmp/vlcredsdata)" | \
-    varlinkctl call /run/systemd/io.systemd.Credentials io.systemd.Credentials.Decrypt > /tmp/vlcredsdata2
+    varlinkctl call --json=short /run/systemd/io.systemd.Credentials io.systemd.Credentials.Decrypt > /tmp/vlcredsdata2
 
 cmp /tmp/vlcredsdata /tmp/vlcredsdata2
 rm /tmp/vlcredsdata /tmp/vlcredsdata2