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

Re: git's use of mkdir(2)

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 9, 2010, 18:56 UTC
Message-ID
<7v62yen3ts.fsf@alter.siamese.dyndns.org>
In-Reply-To
<201009081936.PAA07078@Sparkle.Rodents-Montreal.ORG>
der Mouse <mouse@Rodents-Montreal.ORG> writes:
Show 7 quoted lines
> I've been trying to convince git to run on some of the systems I use.
> Of particular relevance at the moment are two BSD systems which have an
> important behavioural difference.
>
> Specifically, if /foo/bar does not exist but /foo does,
> mkdir("/foo/bar/",...) works on one and fails showing ENOENT on the
> other.  (Without the trailing slash, it works on both.)

What vintage of BSD do you have that exhibits the problem? It smells like a POSIX violation, considering what "4.12 Pathname Resolution" says on the matter:

  A pathname that contains at least one non-<slash> character and that
  ends with one or more trailing <slash> characters shall not be resolved
  successfully unless the last pathname component before the trailing
  <slash> characters names an existing directory or a directory entry that
  is to be created for a directory immediately after the pathname is
  resolved.

Not that I am saying that such a system does not deserve to be supported, but I am curious to know how widespread the damage is.

> here to ask (a) if this is a known issue and fixed in something more
> recent (I had a look at 1.7.2 and a quick read of the code makes me
> think it still does this, but I could have missed something)

I don't think so---we seem to have a compat/ replacement "mkdir(2)" for MinGW (but that doesn't trim the trailing slash so I would imagine MinGW does not suffer from such a violation), but not for the flavor of BSD you have. It shouldn't be hard to add one, though.

Previous: der MouseNext: der Mouse
Message 2 of 3 in “git's use of mkdir(2)”
  1. der MouseSep 8, 2010
  2. Junio C HamanoSep 9, 2010
  3. der MouseSep 9, 2010

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.