git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Do not trust PWD blindly

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jul 11, 2011, 09:26 UTC
Message-ID
<alpine.DEB.1.00.1107111121390.3379@bonsai2>
In-Reply-To
<86k4bpporf.fsf@red.stonehenge.com>
Hi Randal,
On Sun, 10 Jul 2011, Randal L. Schwartz wrote:
Show 10 quoted lines
> >>>>> "Johannes" == Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> Johannes> You might be very surprised, but that is not true on the Linux 
> Johannes> system where one of the 4msysgit.git test cases does _not_ 
> Johannes> break, while it does on Windows.
> 
> If you ever depend on a userspace PWD to be your actual current 
> directory without at least stat()ing it, you've failed.
> 
> In my experience, it is *never* reliable.  It's just a hint.

To be precise, get_pwd_cwd() _does_ stat() what's in PWD, and _does_ compare with the stat() of what comes out of getcwd(), but that comparison uses only st_dev and st_ino, both of which happen to be 0 in my case -- for each and every file/directory.

I can only _guess_ at the reasoning behind get_pwd_cwd(). I _think_ it was meant to catch the case when getcwd() and PWD refer to the same directory, but PWD goes through symbolic links. I was tempted to just throw that PWD handling out for Windows, since we do not have symbolic link handling yet. But that is currently actively discussed, so we might need it in the future, in which case I have to figure out how to fake reliable st_dev and st_ino values into our stat() code.

Ciao, Dscho

Previous: Randal L. SchwartzNext: Junio C Hamano
Message 6 of 8 in “Do not trust PWD blindly”
  1. Do not trust PWD blindlyJohannes Schindelin, Jul 9, 2011
  2. Sebastian SchuberthJul 9, 2011
  3. Johannes SixtJul 10, 2011
  4. Johannes SchindelinJul 10, 2011
  5. Randal L. SchwartzJul 11, 2011
  6. Johannes SchindelinJul 11, 2011
  7. Junio C HamanoJul 11, 2011
  8. Johannes SchindelinJul 11, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.