Subject: Re: bug#49716: no -print0 for ls?

From: Pádraig Brady <[email-masked]>
Date: Wed, 28 Jul 2021 12:57:38 +0100

On 28/07/2021 02:14, Paul Eggert wrote:
> On 7/26/21 8:00 AM, Pádraig Brady wrote:
> 
>> So I'd have a slight preference for --zero.
>>
>> Also what about having --zero imply:
>>     --quoting-style=literal --show-control-chars --format=single-column
>> That seems like a fine shortcut given that would be correct in the vast
>> majority of cases,
>> and that the need for the above may not be obvious to users.
>>
>> Also a small point; should --dired disable --null as it may then be non
>> parseable?
> 
> Thanks, all good suggestions. For --dired vs --zero I thought it better
> simply to prohibit the combination since neither should be in 'ls' shell
> aliases, and prohibiting means we can add it later if we like. I
> installed the attached patches to do this (plus the other stuff I
> mentioned in my reply to Berny).
> 
> The first patch is a cleanup because I had a bit of trouble following
> the forest of 'if's inside of ls.c's decode_switches function and I
> thought it better to avoid unnecessary syscalls while I was at it.
> 
> The second patch does the real work.
> 

That all looks great.

I see --zero implies --format=single-column, but allows --format=long.
That's the right default, but also most flexible.

I'll apply the attached later to augment/document the test
with the various supported option combinations.

thanks!
Pádraig
>From 4f71c9913894a1de0a8a3303fe88f9f75bb25fbb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <[email-masked]>
Date: Wed, 28 Jul 2021 12:51:35 +0100
Subject: [PATCH] tests: augment new ls --zero test cases

* tests/ls/zero-option.sh: Check for the disabled, disallowed,
and allowed option combinations.
---
 tests/ls/zero-option.sh | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/ls/zero-option.sh b/tests/ls/zero-option.sh
index a6883917f..5564f3b77 100755
--- a/tests/ls/zero-option.sh
+++ b/tests/ls/zero-option.sh
@@ -21,7 +21,15 @@ print_ver_ ls
 
 mkdir dir && touch dir/a dir/b dir/cc || framework_failure_
 
-LC_ALL=C ls --zero dir >out || fail=1
+allowed_options='-l'  # explict -l with --zero is allowed
+LC_ALL=C ls $allowed_options --zero dir >out || fail=1
+grep '^total' out || fail=1  # Ensure -l honored
+
+disallowed_options='-l --dired'  # dired only enabled with -l
+returns_ 2 ls $disallowed_options --zero dir || fail=1
+
+disabled_options='--color=always -x -m -C -Q -q'
+LC_ALL=C ls $disabled_options --zero dir >out || fail=1
 tr '\n' '\0' <<EOF >exp
 a
 b
-- 
2.26.2