Subject: Re: bug#18875: 25.0.50; Dired -- add support for ls --time-style with a space

From: Juri Linkov <[email-masked]>
Date: Mon, 23 Aug 2021 10:18:45 +0300

>> The commit 04f723dec944eaa7b5e99373840a8bf920ba5fdd
>> broke my config with the error signaled by insert-directory:
>> (error "Listing directory failed but ‘access-file’ worked")
>>
>> When dired-listing-switches is customized to
>> "-Alv --block-size='1"
>
> Hm, well, that's not a valid shell string, is it?
>
> It should be "-Alv --block-size=\"'1\"" or something like that to be
> valid...

Then split-string-shell-command parses correctly:
(split-string-shell-command "-Alv --block-size=\"'1\"")
("-Alv" "--block-size='1")

but split-string-and-unquote fails:
(split-string-and-unquote "-Alv --block-size=\"'1\"")
("-Alv" "--block-size=" "'1")

> Hm...  Oh!  The doc string actually documents this (that it's not using
> shell quoting).
>
> ---
> Options that include embedded whitespace must be quoted
> like this: "--option=value with spaces"; you can use
> ‘combine-and-quote-strings’ to produce the correct quoting of
> each option.
> ---

Ah, now I see what is the correct way, and indeed both functions work
when dired-listing-switches is customized to "-Alv \"--block-size='1\"".

(split-string-shell-command "-Alv \"--block-size='1\"")
("-Alv" "--block-size='1")

(split-string-and-unquote "-Alv \"--block-size='1\"")
("-Alv" "--block-size='1")

> So this was the original answer to this bug report.  I'll revert the
> change.

Thanks, it's good that don't need to amend the existing customization.