]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udevadm: automatically anable JSON-SEQ in case JSON is used for "udevadm info -a"
authorLennart Poettering <lennart@poettering.net>
Mon, 28 Oct 2024 12:26:01 +0000 (13:26 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 29 Oct 2024 13:39:59 +0000 (22:39 +0900)
We are going to output a series of JSON objects, hence let's
automatically enable JSON-SEQ output mode, as we usually do.

"jq --seq" supports this natively, hence this should not really restrict
us.

Follow-up for: 67ea8a4c0edef33b1775536bc81d5de2c8ac4d88

man/udevadm.xml
src/udev/udevadm-info.c
test/units/TEST-17-UDEV.10.sh

index 556f845dceebd1919df44eaed01f3453a89dd430..eb77356d86918afa50a789d3fea074924b45f923 100644 (file)
             <para>Print all sysfs properties of the specified device that can be used
             in udev rules to match the specified device. It prints all devices
             along the chain, up to the root of sysfs that can be used in udev rules.</para>
+
+            <para>This switch supports JSON output mode (see <option>--json=</option> below). Note that
+            because this switch generates multiple JSON objects, JSON-SEQ mode is automatically enabled
+            (RFC7464). (Note: tools such as <ulink url="https://jqlang.github.io/jq/manual/">jq</ulink>
+            natively support JSON-SEQ via the <option>--seq</option> switch.)</para>
           </listitem>
         </varlistentry>
         <varlistentry>
index 30f34b495850e3a5ab5a345621fab033671730e0..57f063b0108aca310ad467abcb48c90c9478f584 100644 (file)
@@ -274,6 +274,8 @@ static int print_device_chain_in_json(sd_device *device) {
 
         assert(device);
 
+        arg_json_format_flags |=SD_JSON_FORMAT_SEQ;
+
         r = print_all_attributes_in_json(device, /* is_parent = */ false);
         if (r < 0)
                 return r;
index 1808e1975b6a516f7c3fc823991e8b4fb4a0fdde..7ca05f5287fed488c9698a36e799052def938d08 100755 (executable)
@@ -71,8 +71,8 @@ udevadm info --query symlink --root /sys/class/net/$netdev
 (! udevadm info -q hello -r /sys/class/net/$netdev)
 udevadm info -a /sys/class/net/$netdev
 udevadm info -a --json=off /sys/class/net/$netdev
-udevadm info -a --json=pretty /sys/class/net/$netdev | jq . >/dev/null
-udevadm info -a --json=short /sys/class/net/$netdev | jq . >/dev/null
+udevadm info -a --json=pretty /sys/class/net/$netdev | jq --seq . >/dev/null
+udevadm info -a --json=short /sys/class/net/$netdev | jq --seq . >/dev/null
 udevadm info -t >/dev/null
 udevadm info --tree /sys/class/net/$netdev
 udevadm info -x /sys/class/net/$netdev