]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsfd: use ARRAY_STRING and ARRAY_NUMBER json types in some columns
authorMasatake YAMATO <yamato@redhat.com>
Thu, 22 Jun 2023 05:42:34 +0000 (14:42 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Thu, 22 Jun 2023 05:53:41 +0000 (14:53 +0900)
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
misc-utils/lsfd.c
tests/expected/lsfd/mkfds-eventpoll
tests/expected/lsfd/mkfds-inotify
tests/ts/lsfd/mkfds-eventpoll
tests/ts/lsfd/mkfds-inotify

index 15280407c5661ffaf169411763301214b5773225..b5a607c8f57b32a9ab07c685cd32cd4ca1d15675 100644 (file)
@@ -145,13 +145,13 @@ static const struct colinfo infos[] = {
                                   0,   SCOLS_FL_RIGHT, SCOLS_JSON_STRING,
                                   N_("device type (blk, char, or nodev)") },
        [COL_ENDPOINTS]        = { "ENDPOINTS",
-                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_STRING,
+                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_ARRAY_STRING,
                                   N_("IPC endpoints information communicated with the fd") },
        [COL_EVENTFD_ID]       = {"EVENTFD.ID",
                                   0,   SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER,
                                   N_("eventfd ID") },
        [COL_EVENTPOLL_TFDS]   = {"EVENTPOLL.TFDS",
-                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_STRING,
+                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_ARRAY_NUMBER,
                                   N_("file descriptors targeted by the eventpoll file") },
        [COL_FD]               = { "FD",
                                   0,   SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER,
@@ -178,10 +178,10 @@ static const struct colinfo infos[] = {
                                   0,   SCOLS_FL_RIGHT, SCOLS_JSON_NUMBER,
                                   N_("inode number") },
        [COL_INOTIFY_INODES]   = { "INOTIFY.INODES",
-                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_STRING,
+                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_ARRAY_STRING,
                                   N_("list of monitoring inodes (cooked)") },
        [COL_INOTIFY_INODES_RAW]={ "INOTIFY.INODES.RAW",
-                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_STRING,
+                                  0,   SCOLS_FL_WRAP,  SCOLS_JSON_ARRAY_STRING,
                                   N_("list of monitoring inodes (raw, don't decode devices)") },
        [COL_KNAME]            = { "KNAME",
                                   0.4, SCOLS_FL_TRUNC, SCOLS_JSON_STRING,
@@ -1603,6 +1603,8 @@ static void __attribute__((__noreturn__)) usage(void)
        for (i = 0; i < ARRAY_SIZE(infos); i++)
                fprintf(out, " %16s  %-10s%s\n", infos[i].name,
                        infos[i].json_type == SCOLS_JSON_STRING?  "<string>":
+                       infos[i].json_type == SCOLS_JSON_ARRAY_STRING?  "<string>":
+                       infos[i].json_type == SCOLS_JSON_ARRAY_STRING?  "<string>":
                        infos[i].json_type == SCOLS_JSON_NUMBER?  "<number>":
                        "<boolean>",
                        _(infos[i].help));
index 1d5a69b5516e706e30570f8551803bbc7675d805..8f035ffba211e136bc79d263e6784b579b0b6c17 100644 (file)
@@ -1,3 +1,16 @@
     3 eventpoll tfds=5,7 5
                          7
 ASSOC,TYPE,NAME,EVENTPOLL.TFDS: 0
+{
+   "lsfd": [
+      {
+         "assoc": "3",
+         "type": "eventpoll",
+         "name": "tfds=5,7",
+         "eventpoll.tfds": [
+             5, 7
+         ]
+      }
+   ]
+}
+ASSOC,TYPE,NAME,EVENTPOLL.TFDS (JSON): 0
index f456649405f453687270e6642e7daba003b0daef..cb55f9669257b4c3710f24878ea061d1dd79b770 100644 (file)
@@ -1,2 +1,4 @@
 INOTIFY.INODES.RAW: 0
 INOTIFY.INODES.RAW == FSTAB\x0aROOT
+INOTIFY.INODES.RAW (JSON): 0
+INOTIFY.INODES.RAW == EXPECTED_JSON
index 26a25a18153a1dc615adf9c2db2d83063cf7a02d..0d0cc68ce0d7029ac447864e26fa79c1ee0935e2 100755 (executable)
@@ -36,6 +36,8 @@ FD2=7
        EXPR='(FD == '"$FD0"')'
        ${TS_CMD_LSFD} -p "${PID}" -n -o ASSOC,TYPE,NAME,EVENTPOLL.TFDS -Q "${EXPR}"
        echo 'ASSOC,TYPE,NAME,EVENTPOLL.TFDS': $?
+       ${TS_CMD_LSFD} -J -p "${PID}" -n -o ASSOC,TYPE,NAME,EVENTPOLL.TFDS -Q "${EXPR}"
+       echo 'ASSOC,TYPE,NAME,EVENTPOLL.TFDS (JSON)': $?
        kill -CONT ${PID}
     fi
     wait ${MKFDS_PID}
index 2097c73bb83398862fd60fe298567b9f8e425f59..6d29c7c99f5248cea26887fdd452afb6dbfd3b28 100755 (executable)
@@ -45,6 +45,26 @@ FSTAB="$(stat -c %i /etc/fstab)"@"$(((FSTAB_DEV >> 8) & 255)):$((FSTAB_DEV & 255
            echo "FSTAB": "$FSTAB"
            echo "ROOT": "$ROOT"
        fi
+       INODES_RAW_JSON=$(${TS_CMD_LSFD} -J --raw -n -o INOTIFY.INODES.RAW -Q "${EXPR}")
+       echo "INOTIFY.INODES.RAW (JSON)": $?
+       EXPECTED_JSON=$(cat<<EOF
+{
+   "lsfd": [
+      {
+         "inotify.inodes.raw": [
+             "$FSTAB", "$ROOT"
+         ]
+      }
+   ]
+}
+EOF
+       )
+       if [[ "$INODES_RAW_JSON" ==  "${EXPECTED_JSON}" ]]; then
+           echo "INOTIFY.INODES.RAW" == EXPECTED_JSON
+       else
+           echo "INOTIFY.INODES.RAW": "$INODES_RAW_JSON"
+       fi
+
        kill -CONT "${PID}"
     fi
     wait "${MKFDS_PID}"