Le 15/09/2023 à 14:53, Pádraig Brady a écrit :
On 14/09/2023 23:05, Sylvestre Ledru wrote:
Hello
Currently, GNU coreutils doesn't have any test verifying the actual
output of ls --dired.
It should generate a list of position (pairs).
//DIRED// 73 82 142 152 ...
The attached patch creates 2 files and one directory and verify that we
can find their names using the position.
Well the existing test did verify --dired output offsets,
albeit constant offsets from the non varying output.
Thanks.
Here is a second patch to improve the error management.
Currently, "ls --dired" silently fails
I implemented the first suggestion in the FIXME.
Thanks,
Sylvestre
From 9206a1418be69d4ad42f85c39ce46aa00312733b Mon Sep 17 00:00:00 2001
From: Sylvestre Ledru <sylves...@debian.org>
Date: Sun, 17 Sep 2023 15:55:57 +0200
Subject: [PATCH] ls: --dired will fail when -l is missing or when --hyperlink
is used
Currently, it is silently ignoring the option.
* src/ls.c (decode_switches): implement the error
* tests/ls/dired.sh: check that errors are generated
---
src/ls.c | 9 +++++----
tests/ls/dired.sh | 4 ++++
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/ls.c b/src/ls.c
index 5fe6e2725..8e8b21111 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -2377,10 +2377,11 @@ decode_switches (int argc, char **argv)
dirname_quoting_options = clone_quoting_options (nullptr);
set_char_quoting (dirname_quoting_options, ':', 1);
- /* --dired is meaningful only with --format=long (-l) and sans --hyperlink.
- Otherwise, ignore it. FIXME: warn about this?
- Alternatively, make --dired imply --format=long? */
- dired &= (format == long_format) & !print_hyperlink;
+ if (dired && format != long_format)
+ error (LS_FAILURE, 0, _("--dired requires --format=long (-l)"));
+
+ if (dired && print_hyperlink)
+ error (LS_FAILURE, 0, _("--dired and --hyperlink are incompatible"));
if (eolbyte < dired)
error (LS_FAILURE, 0, _("--dired and --zero are incompatible"));
diff --git a/tests/ls/dired.sh b/tests/ls/dired.sh
index 417d3b594..6dd9b4efa 100755
--- a/tests/ls/dired.sh
+++ b/tests/ls/dired.sh
@@ -19,6 +19,10 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ ls
+ls --dired dir > out && fail=1
+
+ls --hyperlink --dired dir > out && fail=1
+
# Check with constant positions
mkdir dir || framework_failure_
--
2.39.2