zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Kyle Laker <kyle@laker.email>
Cc: zsh-workers@zsh.org
Subject: Re: [PATCH] Re: `pwd -P` with systemd-homed causes inconsistent cwd state
Date: Thu, 2 Nov 2023 21:28:36 -0700	[thread overview]
Message-ID: <CAH+w=7YtPvL6odikmzyUg067DFd3cMhP-X1BwyTOkG7qO8x5vg@mail.gmail.com> (raw)
In-Reply-To: <6f0cc0e8-665f-4c90-ba6e-6180ebcf9d60@laker.email>

On Wed, Nov 1, 2023 at 7:54 PM Kyle Laker <kyle@laker.email> wrote:
>
> It seems like this does in fact fix the case where _both_ HAVE_GETCWD
> and USE_GETCWD are false; however, in 5.9, even if HAVE_GETCWD is true,
> USE_GETCWD is false (and this same setup can be induced on master where
> the same behavior happens). In that case, the new error handling is
> never hit because after zgetdir() now returns NULL, getcwd() is called
> as a fallback (which sets ret so the subsequent logic to use pwd isnt
> hit).

The only possible case I can think of where we'd want to fall back on
getcwd() after zgetdir() returns NULL, is here:

363    if (stat(".", &sbuf) < 0) {
364        return NULL;
365    }

Somehow getcwd() might bypass whatever restriction caused this to
fail?  In all other cases we've chdir'd away from the current
directory and can't get back.  I'm tempted to say we should just
delete that entire fallback, but then we never use getcwd() at all.
Maybe we should be checking errno (for what?) as well as ret before
falling back to getcwd()?  Or maybe when USE_GETCWD, we should use it
preferentially, and zgetdir() should be the fallback?

Or maybe zgetdir() itself should USE_GETCWD there at line 364?

The whole situation seems a bit strange.  In utils.c:lchdir() we have
calls to zgetdir() in both an #ifndef HAVE_FCHDIR and later an #ifdef
HAVE_CHDIR branch.


  reply	other threads:[~2023-11-03  4:29 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-21  3:18 Kyle Laker
2023-10-21  4:05 ` Bart Schaefer
2023-10-21 16:26   ` Kyle Laker
2023-10-22 18:59     ` Bart Schaefer
2023-10-31  3:46       ` [PATCH] " Bart Schaefer
2023-11-02  2:54         ` Kyle Laker
2023-11-03  4:28           ` Bart Schaefer [this message]
2023-11-05 14:16             ` Kyle Laker
2023-11-05 16:17               ` Bart Schaefer
2023-11-05 21:10                 ` Bart Schaefer
2023-11-20 22:23                   ` Jan Alexander Steffens (heftig)
2023-11-23 17:53                     ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAH+w=7YtPvL6odikmzyUg067DFd3cMhP-X1BwyTOkG7qO8x5vg@mail.gmail.com' \
    --to=schaefer@brasslantern.com \
    --cc=kyle@laker.email \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).