From: Masatake YAMATO Date: Fri, 6 Dec 2024 17:17:36 +0000 (+0900) Subject: lsfd: enable hyperlinks only for regular files and directories X-Git-Tag: v2.42-start~111^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fd83959414211fc3d9bc3596fb7e3653fa64fcf0;p=thirdparty%2Futil-linux.git lsfd: enable hyperlinks only for regular files and directories Signed-off-by: Masatake YAMATO --- diff --git a/lsfd-cmd/file.c b/lsfd-cmd/file.c index 7f8ec8780..abd1f07ef 100644 --- a/lsfd-cmd/file.c +++ b/lsfd-cmd/file.c @@ -433,7 +433,9 @@ static bool file_fill_column(struct proc *proc __attribute__((__unused__)), && scols_line_set_data(ln, column_index, file->name)) err(EXIT_FAILURE, _("failed to add output data")); - if (uri && (!file->name || *file->name != '/')) { + ftype = file->stat.st_mode & S_IFMT; + if (uri && (!file->name || *file->name != '/' + || (ftype != S_IFREG && ftype != S_IFDIR))) { struct libscols_cell *ce = scols_line_get_cell(ln, column_index); if (ce) scols_cell_disable_uri(ce, 1); diff --git a/tests/expected/lsfd/option-hyperlink-character-device b/tests/expected/lsfd/option-hyperlink-character-device new file mode 100644 index 000000000..3e815d934 --- /dev/null +++ b/tests/expected/lsfd/option-hyperlink-character-device @@ -0,0 +1,6 @@ +# NAME +00000000 2f 64 65 76 2f 7a 65 72 6f 0a |/dev/zero.| +0000000a +# KNAME +00000000 2f 64 65 76 2f 7a 65 72 6f 0a |/dev/zero.| +0000000a diff --git a/tests/ts/lsfd/option-hyperlink b/tests/ts/lsfd/option-hyperlink index a7fe12b87..d8503b6a2 100755 --- a/tests/ts/lsfd/option-hyperlink +++ b/tests/ts/lsfd/option-hyperlink @@ -58,4 +58,18 @@ ts_init_subtest "regular-file" wait "${MKFDS_PID}" ts_finalize_subtest +ts_init_subtest "character-device" +{ + coproc MKFDS { "$TS_HELPER_MKFDS" rw-character-device $FD; } + if read -r -u "${MKFDS[0]}" PID; then + for o in NAME KNAME; do + echo "# $o" + "${TS_CMD_LSFD}" -n --hyperlink=always -o "$o" -p "${PID}" -Q "$EXPR" | replace_hostname | "$TS_CMD_HEXDUMP" -C + done + echo DONE >&"${MKFDS[1]}" + fi +} > "$TS_OUTPUT" 2>&1 +wait "${MKFDS_PID}" +ts_finalize_subtest + ts_finalize