zsh-users
 help / color / mirror / code / Atom feed
* Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
@ 2021-08-11 20:29 Zach Riggle
  2021-08-11 21:16 ` Bart Schaefer
  2021-08-11 21:27 ` Bart Schaefer
  0 siblings, 2 replies; 13+ messages in thread
From: Zach Riggle @ 2021-08-11 20:29 UTC (permalink / raw)
  To: Zsh Users

Hello all!  It's me again, hopefully with a useful question.

TLDR: (q-) behaves unexpectedly for \010 aka "\b", and there are other
corner cases that may be unintended.

I love the (q-) modifier for array expansion, since it allows printing
out e.g. a command and then running it.

    run() {
        echo '$' "${(q-)@}"
        "$@"
    }

The docs (https://zsh.sourceforge.io/Doc/Release/Expansion.html,
search for "q-" to jump to the right area) state:

> If a q- is given (only a single q may appear), a minimal form of single quoting is used that only quotes the string if needed to protect special characters. Typically this form gives the most readable output.
> If a q+ is given, an extended form of minimal quoting is used that causes unprintable characters to be rendered using $’...’. This quoting is similar to that used by the output of values by the typeset family of commands.

However, it appears that half of the q modifiers handle 0x08 / \010 /
"\b" aka "backspace" in an unexpected manner.  Notably, (q) is
incorrect, (qq) (q+) and (q-) embed a literal backspace, which causes
unexpected output (it's there if you pipe to e.g. xxd, but it should
be escaped).

    $ mysed=( gsed "s/\ba\b/x/" )

    $ echo "aaaa a aaa" | "${mysed[@]}"
    aaaa x aaa

    $ echo ${(q)mysed}
    gsed s/\ba\b/x/

    $ echo ${(qq)mysed}
    'gsed' 's/x/'

    $ echo ${(qqq)mysed}
    "gsed" "s/\ba\b/x/"

    $ echo ${(qqqq)mysed}
    $'gsed' $'s/\ba\b/x/'

    $ echo ${(q+)mysed}
    gsed 's/x/'

    $ echo ${(q-)mysed}
    gsed 's/x/'

This issue also appears with newlines, but for these one could argue
it's entirely legitimate to have a *literal* newline that breaks the
quoted statement onto multiple lines.  Once again, the same culprits
are (qq), (q-), and (q+).  Interestingly, bare (q) is actually
incorrect.

    $ newline=( aa "b\nb" cc )

    $ echo ${(q)newline}
    aa b\nb cc

    $ echo ${(qq)newline}
    'aa' 'b
    b' 'cc'

    $ echo ${(qqq)newline}
    "aa" "b\nb" "cc"

    $ echo ${(qqqq)newline}
    $'aa' $'b\nb' $'cc'

    $ echo ${(q-)newline}
    aa 'b
    b' cc

    $ echo ${(q+)newline}
    aa 'b
    b' cc

IMHO both newline and backspace should be escaped at LEAST for (q-)
and (q+), and newline behavior for (q) is incorrect.  What's your
opinion?

Zach Riggle


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-11 20:29 Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline) Zach Riggle
@ 2021-08-11 21:16 ` Bart Schaefer
  2021-08-11 21:42   ` Lawrence Velázquez
  2021-08-11 21:27 ` Bart Schaefer
  1 sibling, 1 reply; 13+ messages in thread
From: Bart Schaefer @ 2021-08-11 21:16 UTC (permalink / raw)
  To: Zach Riggle; +Cc: Zsh Users

On Wed, Aug 11, 2021 at 1:29 PM Zach Riggle <zachriggle@gmail.com> wrote:
>
> Hello all!  It's me again, hopefully with a useful question.

You need to stop testing things with "echo".  The "echo" builtin
interprets some backslash escapes itself, which will confuse you about
what the quoting options have done.

Repeat all your tests instead with
  printf "%s\n" ${(q)...}
and so on, and come back if you still have questions.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-11 20:29 Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline) Zach Riggle
  2021-08-11 21:16 ` Bart Schaefer
@ 2021-08-11 21:27 ` Bart Schaefer
  1 sibling, 0 replies; 13+ messages in thread
From: Bart Schaefer @ 2021-08-11 21:27 UTC (permalink / raw)
  To: Zach Riggle; +Cc: Zsh Users

One other thing ...

On Wed, Aug 11, 2021 at 1:29 PM Zach Riggle <zachriggle@gmail.com> wrote:
>
>     $ mysed=( gsed "s/\ba\b/x/" )
>
>     $ echo "aaaa a aaa" | "${mysed[@]}"
>     aaaa x aaa

The string \b does not mean backspace in a GNU sed pattern, it means
"word boundary".  I can't tell from your context whether you think the
replacement was incorrect.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-11 21:16 ` Bart Schaefer
@ 2021-08-11 21:42   ` Lawrence Velázquez
  2021-08-11 23:25     ` Zach Riggle
  2021-08-14 15:52     ` Daniel Shahaf
  0 siblings, 2 replies; 13+ messages in thread
From: Lawrence Velázquez @ 2021-08-11 21:42 UTC (permalink / raw)
  To: Zach Riggle; +Cc: Bart Schaefer, zsh-users

On Wed, Aug 11, 2021, at 5:16 PM, Bart Schaefer wrote:
> You need to stop testing things with "echo".  The "echo" builtin
> interprets some backslash escapes itself, which will confuse you about
> what the quoting options have done.
> 
> Repeat all your tests instead with
>   printf "%s\n" ${(q)...}
> and so on, and come back if you still have questions.

Additionally, \b and \n are not interpreted in double quotes, so
your initial data does not actually contain BS or NL characters.
Presumably you thought "..." works like $'...'.

% mysed_orig=( gsed "s/\ba\b/x/" )
% typeset -p mysed_orig
typeset -a mysed_orig=( gsed 's/\ba\b/x/' )

% mysed_fixed=(gsed $'s/\ba\b/x/')
% typeset -p mysed_fixed
typeset -a mysed_fixed=( gsed $'s/\C-Ha\C-H/x/' )

% newline_orig=( aa "b\nb" cc )
% typeset -p newline_orig
typeset -a newline_orig=( aa 'b\nb' cc )

% newline_fixed=( aa $'b\nb' cc )
% typeset -p newline_fixed
typeset -a newline_fixed=( aa $'b\nb' cc )

As per the QUOTING section of zshmisc(1):

	Inside double quotes (""), parameter and command substitution
	occur, and `\' quotes the characters `\', ``', `"', `$',
	and the first character of $histchars (default `!').

-- 
vq


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-11 21:42   ` Lawrence Velázquez
@ 2021-08-11 23:25     ` Zach Riggle
  2021-08-12  0:22       ` Bart Schaefer
  2021-08-12  0:36       ` Lawrence Velázquez
  2021-08-14 15:52     ` Daniel Shahaf
  1 sibling, 2 replies; 13+ messages in thread
From: Zach Riggle @ 2021-08-11 23:25 UTC (permalink / raw)
  To: Lawrence Velázquez; +Cc: Bart Schaefer, Zsh Users

TLDR 1: I learned/realized that zsh builtin echo automatically
interprets escape codes, unlike bash echo and /bin/echo.
TLDR 2: I also learned that (q+) is my new favorite, and my code
should use "command echo" to avoid the above behavior.
TLDR 3: Thank you all for taking the time to write back.

> You need to stop testing things with "echo".  The "echo" builtin interprets some backslash escapes itself...

Ah, the real culprit.

For some reason Bart's comments didn't land in my inbox, but I am a
mixture of disappointed in myself (for forgetting the builtin
evaluates escape codes) and surprised (bash's builtin echo requires
"-e" to do this, /bin/echo does not support this at all on BSD).

Indeed, avoiding the builtin echo's interpretation of escape codes by
default (not sure how I feel about that, but it is what it is) shows
that the expansion modifiers work as they say on the tin.

    $ command echo ${(qq)mysed}
    'gsed' 's/\ba\b/x/'

    $ command echo ${(q+)mysed}
    gsed 's/\ba\b/x/'

    $ command echo ${(q-)mysed}
    gsed 's/\ba\b/x/'

> Presumably you thought "..." works like $'...'.

Nope, that one I knew pretty well, but I was indeed spoiled by the
shell interpretation of the string "\n".

Leaning on Python a bit to make it more obvious, but yeah:

    $ python -c 'import sys; print(sys.argv)' a b "c\n" d
    ['-c', 'a', 'b', 'c\\n', 'd']

    $ python -c 'import sys; print(sys.argv)' a b $'c\n' d
    ['-c', 'a', 'b', 'c\n', 'd']

Interestingly, the handling of ACTUAL newlines ($'\n') by (q-) is less
than ideal, (q) works but is clunky, and (q+) seems to work the best.

    $ newline=( aa $'b\nb' cc )

    $ command echo ${(q)newline}
    aa b$'\n'b cc

    $ command echo ${(q-)newline}
    aa 'b
    b' cc

    $ command echo ${(q+)newline}
    aa $'b\nb' cc

Thanks for all of the help fielding my silly questions!

Zach Riggle

On Wed, Aug 11, 2021 at 4:45 PM Lawrence Velázquez <larryv@zsh.org> wrote:
>
> On Wed, Aug 11, 2021, at 5:16 PM, Bart Schaefer wrote:
> > You need to stop testing things with "echo".  The "echo" builtin
> > interprets some backslash escapes itself, which will confuse you about
> > what the quoting options have done.
> >
> > Repeat all your tests instead with
> >   printf "%s\n" ${(q)...}
> > and so on, and come back if you still have questions.
>
> Additionally, \b and \n are not interpreted in double quotes, so
> your initial data does not actually contain BS or NL characters.
> Presumably you thought "..." works like $'...'.
>
> % mysed_orig=( gsed "s/\ba\b/x/" )
> % typeset -p mysed_orig
> typeset -a mysed_orig=( gsed 's/\ba\b/x/' )
>
> % mysed_fixed=(gsed $'s/\ba\b/x/')
> % typeset -p mysed_fixed
> typeset -a mysed_fixed=( gsed $'s/\C-Ha\C-H/x/' )
>
> % newline_orig=( aa "b\nb" cc )
> % typeset -p newline_orig
> typeset -a newline_orig=( aa 'b\nb' cc )
>
> % newline_fixed=( aa $'b\nb' cc )
> % typeset -p newline_fixed
> typeset -a newline_fixed=( aa $'b\nb' cc )
>
> As per the QUOTING section of zshmisc(1):
>
>         Inside double quotes (""), parameter and command substitution
>         occur, and `\' quotes the characters `\', ``', `"', `$',
>         and the first character of $histchars (default `!').
>
> --
> vq


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-11 23:25     ` Zach Riggle
@ 2021-08-12  0:22       ` Bart Schaefer
  2021-08-12  0:34         ` Lawrence Velázquez
  2021-08-12 13:34         ` Ray Andrews
  2021-08-12  0:36       ` Lawrence Velázquez
  1 sibling, 2 replies; 13+ messages in thread
From: Bart Schaefer @ 2021-08-12  0:22 UTC (permalink / raw)
  To: Zach Riggle; +Cc: Lawrence Velázquez, Zsh Users

On Wed, Aug 11, 2021 at 4:25 PM Zach Riggle <zachriggle@gmail.com> wrote:
>
> TLDR 2: I also learned that (q+) is my new favorite, and my code
> should use "command echo" to avoid the above behavior.

You more likely want "setopt BSD_ECHO".

You can also use
  disable echo
but that might have unexpected side-effects on scripts written by others.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-12  0:22       ` Bart Schaefer
@ 2021-08-12  0:34         ` Lawrence Velázquez
  2021-08-12 13:34         ` Ray Andrews
  1 sibling, 0 replies; 13+ messages in thread
From: Lawrence Velázquez @ 2021-08-12  0:34 UTC (permalink / raw)
  To: Zach Riggle; +Cc: Bart Schaefer, zsh-users

On Wed, Aug 11, 2021, at 8:22 PM, Bart Schaefer wrote:
> On Wed, Aug 11, 2021 at 4:25 PM Zach Riggle <zachriggle@gmail.com> wrote:
> >
> > TLDR 2: I also learned that (q+) is my new favorite, and my code
> > should use "command echo" to avoid the above behavior.
> 
> You more likely want "setopt BSD_ECHO".
> 
> You can also use
>   disable echo
> but that might have unexpected side-effects on scripts written by others.

A third option is to stick to

    print -r -- $foo

or

    printf '%s\n' $foo

which behave predictably and are zsh builtins.  (The latter is also
POSIX-compliant.)

-- 
vq


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-11 23:25     ` Zach Riggle
  2021-08-12  0:22       ` Bart Schaefer
@ 2021-08-12  0:36       ` Lawrence Velázquez
  1 sibling, 0 replies; 13+ messages in thread
From: Lawrence Velázquez @ 2021-08-12  0:36 UTC (permalink / raw)
  To: Zach Riggle; +Cc: Bart Schaefer, zsh-users

On Wed, Aug 11, 2021, at 7:25 PM, Zach Riggle wrote:
> TLDR 1: I learned/realized that zsh builtin echo automatically
> interprets escape codes, unlike bash echo and /bin/echo.

But like the builtins of dash and yash.

% zsh -c 'echo "a\nb"'
a
b
% bash -c 'echo "a\nb"'
a\nb
% ksh -c 'echo "a\nb"'
a\nb
% dash -c 'echo "a\nb"'
a
b
% yash -c 'echo "a\nb"'
a
b

The echo(1) utility is notoriously unportable [1][2], and it's worth
considering avoiding it completely.

  [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html#tag_20_37_16
  [2]: https://wiki.bash-hackers.org/commands/builtin/echo#portability_considerations

-- 
vq


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-12  0:22       ` Bart Schaefer
  2021-08-12  0:34         ` Lawrence Velázquez
@ 2021-08-12 13:34         ` Ray Andrews
  1 sibling, 0 replies; 13+ messages in thread
From: Ray Andrews @ 2021-08-12 13:34 UTC (permalink / raw)
  To: zsh-users

On 2021-08-11 5:22 p.m., Bart Schaefer wrote:
> On Wed, Aug 11, 2021 at 4:25 PM Zach Riggle <zachriggle@gmail.com> wrote:
>> TLDR 2: I also learned that (q+) is my new favorite, and my code
>> should use "command echo" to avoid the above behavior.
I'd like to add the anecdotal remark that there were many situations 
where I thought I'd solved a problem with (q) or (Q) or (q+) and it 
turned out that these things only made more trouble in the end. Better 
solutions were to be found that didn't involve the Q continuum.  Being 
only semi-literate as I am, sometimes the mystery never did get solved 
-- I had some issue, (q...) seemed the fix it, then (q...) started 
breaking things, I remove the (q...) and it seems like there never was a 
problem to begin with, probably because I made some other change that 
obviated the original issue.   If Zach's experience is like mine he 
might end up being weary of the Q himself.

One of my astronomy packages creates this helpful directory and file:


       4096 [2021-01-01--14:03] Sky above 49°30'N 123°30'W at Sun 2020 
Dec 20 20 26_files/
       22213 [2020-12-20--12:27] Sky above 49°30'N 123°30'W at Sun 2020 
Dec 20 20 26.html

... and I always throw any change I make in one of my functions at those 
files as torture tests because any change is likely to break when it 
encounters those -- the internal quote or the special characters or the 
spaces are ultra fragile and only the exactly perfect code handles all 
of them at the same time.  Q seemed to help at times, but again, it 
often was a false friend.  I'm still far from clear on how you 
absolutely, perfectly protect *any* filename or string every time even 
on Mondays and even if it's a filename that the Devil himself wouldn't 
make ... but I get closer all the time.  Zach will get the right advice 
tho and not from me.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-11 21:42   ` Lawrence Velázquez
  2021-08-11 23:25     ` Zach Riggle
@ 2021-08-14 15:52     ` Daniel Shahaf
  2021-10-19 19:17       ` Zach Riggle
  1 sibling, 1 reply; 13+ messages in thread
From: Daniel Shahaf @ 2021-08-14 15:52 UTC (permalink / raw)
  To: Lawrence Velázquez; +Cc: Zach Riggle, zsh-users

Lawrence Velázquez wrote on Wed, Aug 11, 2021 at 17:42:09 -0400:
> On Wed, Aug 11, 2021, at 5:16 PM, Bart Schaefer wrote:
> > You need to stop testing things with "echo".  The "echo" builtin
> > interprets some backslash escapes itself, which will confuse you about
> > what the quoting options have done.
> > 
> > Repeat all your tests instead with
> >   printf "%s\n" ${(q)...}
> > and so on, and come back if you still have questions.
> 
> Additionally, \b and \n are not interpreted in double quotes, so
> your initial data does not actually contain BS or NL characters.
> As per the QUOTING section of zshmisc(1):
> 
> 	Inside double quotes (""), parameter and command substitution
> 	occur, and `\' quotes the characters `\', ``', `"', `$',
> 	and the first character of $histchars (default `!').

There are third-party plugins that implement syntax highlighting at the
prompt (I happen to co-maintain one such plugin).  Those plugins are
aware of the quoted docs section, so on input such as
.
    % foo "bar \n \\ \x"
.
they will correctly highlight only the «\\» as an escape sequence, and
everything else as literals.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-08-14 15:52     ` Daniel Shahaf
@ 2021-10-19 19:17       ` Zach Riggle
  2021-10-21 14:24         ` Daniel Shahaf
  0 siblings, 1 reply; 13+ messages in thread
From: Zach Riggle @ 2021-10-19 19:17 UTC (permalink / raw)
  To: Daniel Shahaf, Bart Schaefer; +Cc: Lawrence Velázquez, Zsh Users

[-- Attachment #1: Type: text/plain, Size: 1827 bytes --]

Apologies for resurrecting this thread, but I wanted to revisit and thank
everybody for the help.

I ran into some issues where my
print-a-$-and-then-the-minally-quoted-version-of-this-array-of-scalars when
dealing with regex, due to "builtin echo" treating '\bfoo bar\b'
incorrectly.

I attempted a variety of things to fix the problem, but going back through
this thread really helped a bunch.  I had written additional code that
relied in builtin echo.  "command echo" and the issue is resolved.


On Sat, Aug 14, 2021 at 10:52 AM Daniel Shahaf <d.s@daniel.shahaf.name>
wrote:

> Lawrence Velázquez wrote on Wed, Aug 11, 2021 at 17:42:09 -0400:
> > On Wed, Aug 11, 2021, at 5:16 PM, Bart Schaefer wrote:
> > > You need to stop testing things with "echo".  The "echo" builtin
> > > interprets some backslash escapes itself, which will confuse you about
> > > what the quoting options have done.
> > >
> > > Repeat all your tests instead with
> > >   printf "%s\n" ${(q)...}
> > > and so on, and come back if you still have questions.
> >
> > Additionally, \b and \n are not interpreted in double quotes, so
> > your initial data does not actually contain BS or NL characters.
> ⋮
> > As per the QUOTING section of zshmisc(1):
> >
> >       Inside double quotes (""), parameter and command substitution
> >       occur, and `\' quotes the characters `\', ``', `"', `$',
> >       and the first character of $histchars (default `!').
>
> There are third-party plugins that implement syntax highlighting at the
> prompt (I happen to co-maintain one such plugin).  Those plugins are
> aware of the quoted docs section, so on input such as
> .
>     % foo "bar \n \\ \x"
> .
> they will correctly highlight only the «\\» as an escape sequence, and
> everything else as literals.
>

[-- Attachment #2: Type: text/html, Size: 2399 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-10-19 19:17       ` Zach Riggle
@ 2021-10-21 14:24         ` Daniel Shahaf
  2021-10-21 15:23           ` Bart Schaefer
  0 siblings, 1 reply; 13+ messages in thread
From: Daniel Shahaf @ 2021-10-21 14:24 UTC (permalink / raw)
  To: Zach Riggle; +Cc: Lawrence Velázquez, Zsh Users

Zach Riggle wrote on Tue, Oct 19, 2021 at 14:17:48 -0500:
> Apologies for resurrecting this thread, but I wanted to revisit and thank
> everybody for the help.
> 
> I ran into some issues where my
> print-a-$-and-then-the-minally-quoted-version-of-this-array-of-scalars when
> dealing with regex, due to "builtin echo" treating '\bfoo bar\b'
> incorrectly.
> 

Why, does it output «\b» literally (two printable characters)?  It
should emit backspaces (ASCII 0x08).

> I attempted a variety of things to fix the problem, but going back through
> this thread really helped a bunch.  I had written additional code that
> relied in builtin echo.  "command echo" and the issue is resolved.
> 

echo(1)'s semantics aren't portable.  Use printf(1) for portable sh code
or the builtin «print» for portable zsh code.

Daniel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline)
  2021-10-21 14:24         ` Daniel Shahaf
@ 2021-10-21 15:23           ` Bart Schaefer
  0 siblings, 0 replies; 13+ messages in thread
From: Bart Schaefer @ 2021-10-21 15:23 UTC (permalink / raw)
  To: Daniel Shahaf; +Cc: Zach Riggle, Lawrence Velázquez, Zsh Users

On Thu, Oct 21, 2021 at 7:24 AM Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
>
> Zach Riggle wrote on Tue, Oct 19, 2021 at 14:17:48 -0500:
> > print-a-$-and-then-the-minally-quoted-version-of-this-array-of-scalars when
> > dealing with regex, due to "builtin echo" treating '\bfoo bar\b'
> > incorrectly.
>
> Why, does it output «\b» literally (two printable characters)?  It
> should emit backspaces (ASCII 0x08).

He's trying to use \b as a word boundary marker in a regular
expression so he wants literal \b rather than backspace.

% builtin echo '\bfoo bar\b' | od -ac
0000000  bs   f   o   o  sp   b   a   r  bs  nl
         \b   f   o   o       b   a   r  \b  \n
0000012
% command echo '\bfoo bar\b' | od -ac
0000000   \   b   f   o   o  sp   b   a   r   \   b  nl
          \   b   f   o   o       b   a   r   \   b  \n
0000014

(apologies if you're looking at this in a proportional font)


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2021-10-21 15:24 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-11 20:29 Odd behavior with various (q) array modifiers and non-printable characters (backspace, newline) Zach Riggle
2021-08-11 21:16 ` Bart Schaefer
2021-08-11 21:42   ` Lawrence Velázquez
2021-08-11 23:25     ` Zach Riggle
2021-08-12  0:22       ` Bart Schaefer
2021-08-12  0:34         ` Lawrence Velázquez
2021-08-12 13:34         ` Ray Andrews
2021-08-12  0:36       ` Lawrence Velázquez
2021-08-14 15:52     ` Daniel Shahaf
2021-10-19 19:17       ` Zach Riggle
2021-10-21 14:24         ` Daniel Shahaf
2021-10-21 15:23           ` Bart Schaefer
2021-08-11 21:27 ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).