Re: [PATCH] Fix merge-recursive on cygwin: broken errno when unlinking a directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Linus Torvalds, Thu, Apr 19, 2007 01:04:06 +0200:
> >
> > +				struct stat st;
> > +				int err = errno;
> > +				if (err == EISDIR ||
> > +				    (err == EPERM && !lstat(path, &st) && S_ISDIR(st.st_mode))) {
> 
> Can I ask people to please *not* write things like this?
> 

Err... ok.

> 
> (Side note: EPERM is actually apparently the POSIXLY correct error!)
> 

Indeed it is 8-[]

> 
> So here's a suggested and totally untested patch. It makes the code more 
> readable, and probably fixes *two* bugs in the process. It also simply 
> doesn't really even care what the error actually was - the important part 
> was not that it was a directory, but that the unlink didn't succeed!
>

Well, it is a bit tested now. I'll repeat the testing tomorrow on that
windows box.

> +	/* .. but not some other error (who really cares what?) */
> +	return error(msg, path, ": perhaps a D/F conflict?");

I have to care sometimes when cygwin breaks where you never expect it
to. These annoying strerror(errno)'s a very helpful. IOW, how can
the user respond to the message which just tells "maybe it is
expected and you can fix it. Perhaps"? What do I do here next?
(well, I know what to do, but someone wont).

An lstat + S_ISDIR would at least make it plain "D/F conflict".

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]