threads / patch / 6398

patchRe: [PATCH] Solaris 5.8 returns ENOTDIR for inappropriate renames.

Subject: Re: [PATCH] Solaris 5.8 returns ENOTDIR for inappropriate renames.

## tl;dr

One message between Jan 16, 2007 and Jan 16, 2007. Diffs are folded; open one to read it.

replies: 0people: 1as markdown or json

Jason Riedy· Jan 16, 2007, 03:16 UTC · lore
And Junio C Hamano writes:
> > -		if (errno==EISDIR) {
> > +		if (errno==EISDIR || errno==ENOTDIR) {
Show 7 quoted lines
> Now ".git/logs/foo/bar" might already exist as a directory, and
> this error path is attempting to catch EISDIR that comes out
> from it (and in that case, if there is nothing but empty
> directories in the hierarchy under .git/logs/foo/bar, we 
> remove them and retry).
> 
> Does Solaris give ENOTDIR in such a case?

Exactly. rename(file, directory) produces an error. Some systems associate the error with the directory and give EISDIR. Solaris (at least 5.8) associates the error with the file and gives ENOTDIR.

Looks like SUS declares EISDIR as the correct errno. I didn't realize that... I don't think it's worth a full compat wrapper just for this, but I could be wrong.

It is worth including your very lucid explanation in the routine's comments, though.

Jason

← back to recent threads