William A. Rowe, Jr. wrote:

At 09:32 AM 4/16/2002, you wrote:

brane       02/04/16 07:32:03

Modified: include apr_errno.h
Log:
On Windows, ERROR_PATH_NOT_FOUND is an ENOENT, not an ENOTDIR -- same as OS/2.


I'm somewhat dubious of this change. Can you please point to the use case
(a specific scenario) that this existing define misbehaved? The greatest risk is
that Apache -needs- to see ENOTDIR in the right times to avoid a ton of extra
effort, but most importantly, to make the right security decisions on errors.

It's a question of correct semantics. ENOTDIR means "This is not a directory", and it's what you expect if, e.g., you try to rmdir a file. ENOENT means "This bit doesn't exist".


Here's an example of what happened before this change; supposing that "foo" does not exist:

                   |  Unix  | Windows
--------------------+--------+---------
apr_stat("foo")     | ENOENT | ENOENT
apr_stat("foo/bar") | ENOENT | ENOTDIR


The APR_ENOTDIR result on Windows is semantically wrong.

In fact, it may be that the other codes in the Windows APR_STATUS_IS_ENOTDIR should really be in ENOENT, too.


-- Brane Äibej <[EMAIL PROTECTED]> http://www.xbc.nu/brane/





Reply via email to