mkdir: always check-for-existence
When using NtCreateFile when creating a directory that already exists, it will correctly return 'STATUS_OBJECT_NAME_COLLISION'. However using this function to create a directory (and all its parents) a normal use would be to start with mkdir(‘/cygdrive/c’) which translates to ‘C:\’ for which it'll instead return ‘STATUS_ACCESS_DENIED’.
This commit is contained in:
parent
5c2a3661c1
commit
b0c033bf3f
|
@ -331,8 +331,10 @@ mkdir (const char *dir, mode_t mode)
|
|||
debug_printf ("got %d error from build_fh_name", fh->error ());
|
||||
set_errno (fh->error ());
|
||||
}
|
||||
else if (fh->exists ())
|
||||
set_errno (EEXIST);
|
||||
else if (has_dot_last_component (dir, true))
|
||||
set_errno (fh->exists () ? EEXIST : ENOENT);
|
||||
set_errno (ENOENT);
|
||||
else if (!fh->mkdir (mode))
|
||||
res = 0;
|
||||
delete fh;
|
||||
|
|
Loading…
Reference in New Issue