(check in files that should have been checked in previously)

* fhandler.cc (fhandler_base::open_9x): Remove (broken) check for
O_CREAT|O_EXCL.
* syscalls.cc (open): Do O_CREAT|O_EXCL check here first.
This commit is contained in:
Christopher Faylor 2005-04-28 03:41:09 +00:00
parent faae8c50a5
commit 5c70f2f92e
2 changed files with 7 additions and 3 deletions

View File

@ -520,9 +520,7 @@ fhandler_base::open_9x (int flags, mode_t mode)
{
if (pc.isdir ())
{
if (flags & (O_CREAT | O_EXCL) == (O_CREAT | O_EXCL))
set_errno (EEXIST);
else if (flags & (O_WRONLY | O_RDWR))
if (flags & (O_WRONLY | O_RDWR))
set_errno (EISDIR);
else
nohandle (true);

View File

@ -564,6 +564,12 @@ open (const char *unix_path, int flags, ...)
{
if (!(fh = build_fh_name (unix_path, NULL, PC_SYM_FOLLOW)))
res = -1; // errno already set
else if (((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) && fh->exists ())
{
delete fh;
res = -1;
set_errno (EEXIST);
}
else if (fh->is_fs_special () && fh->device_access_denied (flags))
{
delete fh;