cvs is broken/cygwin-bug in mkdir()?

Christopher Faylor cgf-no-personal-reply-please@cygwin.com
Sat Feb 4 07:27:00 GMT 2006


On Fri, Feb 03, 2006 at 11:44:22PM -0500, Igor Peshansky wrote:
>Yes. Looks like Cygwin is too hasty in assigning the error number: Linux
>only returns ENOENT if the directory doesn't already exist, but Cygwin
>will always return it for a trailing dot argument. The same with rmdir,
>where it would always return EINVAL, even if the directory doesn't exist
>(in which case Linux returns ENOENT). FWIW, POSIX only specifies an
>action for rmdir() on a trailing dot (EINVAL).

rmdir doesn't always return EINVAL.
Test program:
 #include <stdlib.h>
 #include <unistd.h>
 #include <stdio.h>
 int
 main (int argc, char **argv)
 {
 printf ("%d = rmdir (\"%s\")\n", rmdir (*++argv), *argv);
 perror ("rmdir");
 }
Run it:
 bash-3.00$ ./rmdir qwer
 -1 = rmdir ("qwer")
 rmdir: No such file or directory
 bash-3.00$ ./rmdir qwer/.
 -1 = rmdir ("qwer/.")
 rmdir: Invalid argument
cgf
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /