-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Corinna Vinschen on 3/6/2008 6:45 AM: | SUSv3(*) says: | | [EISDIR] | The named file is a directory and oflag includes O_WRONLY or O_RDWR. | [ENOENT] | O_CREAT is not set and the named file does not exist; or O_CREAT is | set and either the path prefix does not exist or the path argument | points to an empty string. | | Given these descriptions, I can't see anything wrong with that Linux | behaviour.
By those SUSv3 rules (which are identical to POSIX), open("t/", O_RDONLY|O_CREAT) when t does not exist falls under ENOENT, not EISDIR. In POSIX 2004, path resolution requires that if a trailing slash is present, resolution is performed as if by "t/.", making "t" a path prefix which is not present. And in the draft POSIX 200x, the wording has been made more explicit that when doing path resolution, if there is a trailing slash but the text before the slash does not name an existing directory, then it fails with ENOENT. But on Linux: Linux$ strace touch t/ ~ [...] ~ open("t/", O_WRONLY|O_NONBLOCK|O_CREAT|O_NOCTTY, 0666) = -1 EISDIR (Is a directory) ~ futimesat(AT_FDCWD, "t/", NULL) = -1 ENOENT (No such file or directory) Linux is returning the wrong errno for open, according to SUSv3/POSIX. - -- Don't work too hard, make some time for fun as well! Eric Blake [EMAIL PROTECTED] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHz/l584KuGfSFAYARAuyMAJ99nmo2dcOG9EmMpKhR7gPJkelsbgCguHZE YfHGhOThDIucOBwO2H9kkrA= =5I6D -----END PGP SIGNATURE----- -- 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/