Subject: Re: bug#53739: 28.0.91; "C-x d" fails when "emacs -Q" starts on NetBSD with plan9/bin on head of PATH

From: Eli Zaretskii <[email-masked]>
Date: Fri, 04 Feb 2022 13:50:15 +0200

> Date: Fri, 4 Feb 2022 08:59:11 +0000 (UTC)
> From: Van Ly <[email-masked]>
> cc: Po Lu <[email-masked]>, [email-masked]
> 
> On Fri, 4 Feb 2022, Eli Zaretskii wrote:
> 
> >
> > The problem, as I explained up-thread, seems to be that 'ls' returns a
> > non-zero exit status, which insert-directory takes as a sign that the
> > directory listing didn't work.
> 
> The "9 man intro" page has this paragraph containing the "exit" keyword.
> 
> '''
>       DIAGNOSTICS
>            In Plan 9, a program's exit status is an arbitrary text
>            string, while on Unix it is an integer.  Section (1) of this
>            manual describes commands as though they exit with string
>            statuses.  In fact, exiting with an empty status corresponds
>            to exiting with status 0, and exiting with any non-empty
>            string corresponds to exiting with status 1.  See exits(3).
> '''
> 
> >
> > So: what does "ls -l" return as exit status when using the plan9
> > variant of 'ls'?
> >
> 
> Starting 'emacs -Q' at the end of this typescript reproduces the problem.
> 
> '''
> ; on GNU/Linux
> % echo $SHELL
> /usr/bin/zsh
> % PATH=/usr/local/plan9/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export PATH
> % echo $PATH
> /usr/van/.opam/cs3110-2-21fa/bin:/usr/local/plan9/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
> % which ls
> /usr/local/plan9/bin/ls
> % ls -l
> --rw-r--r-- M 0 van dialout 46 Feb  4 18:22 emacs28
> --rw-r--r-- M 0 van dialout 47 Feb  4 18:14 emacs28q
> % echo $?
> 0
> % /usr/local/plan9/bin/ls -l
> --rw-r--r-- M 0 van dialout 46 Feb  4 18:22 emacs28
> --rw-r--r-- M 0 van dialout 47 Feb  4 18:14 emacs28q
> % echo $?
> 0

Thanks, but we need to know what Emacs sees as the exit status inside
insert-directory.  So, as I already said, the best approach top
investigating this is to step with Edebug through the code in
insert-directory, and see what kind of exit status we receive there,
and why we decide that "directory listing failed".