4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-30 19:10:36 +08:00

* syscalls.cc (open): Handle O_DIRECTORY flag.

* include/fcntl.h: Add SUSv4 flags O_DIRECTORY, O_EXEC and O_SEARCH.
	* include/cygwin/version.h: Bump API minor number.
This commit is contained in:
Corinna Vinschen 2009-02-11 16:06:39 +00:00
parent 29915d8ef2
commit 64d6e1d43e
4 changed files with 20 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2009-02-11 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (open): Handle O_DIRECTORY flag.
* include/fcntl.h: Add SUSv4 flags O_DIRECTORY, O_EXEC and O_SEARCH.
* include/cygwin/version.h: Bump API minor number.
2009-02-09 Corinna Vinschen <corinna@vinschen.de> 2009-02-09 Corinna Vinschen <corinna@vinschen.de>
* fhandler_floppy.cc (fhandler_dev_floppy::open): Fix format. Add * fhandler_floppy.cc (fhandler_dev_floppy::open): Fix format. Add

View File

@ -342,12 +342,13 @@ details. */
191: Export glob_pattern_p 191: Export glob_pattern_p
192: CW_SETERRNO added 192: CW_SETERRNO added
193: Export wcstok. 193: Export wcstok.
194: fcntl.h flags O_DIRECTORY, O_EXEC and O_SEARCH added.
*/ */
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
#define CYGWIN_VERSION_API_MAJOR 0 #define CYGWIN_VERSION_API_MAJOR 0
#define CYGWIN_VERSION_API_MINOR 193 #define CYGWIN_VERSION_API_MINOR 194
/* There is also a compatibity version number associated with the /* There is also a compatibity version number associated with the
shared memory regions. It is incremented when incompatible shared memory regions. It is incremented when incompatible

View File

@ -1,6 +1,6 @@
/* fcntl.h /* fcntl.h
Copyright 1996, 1998, 2001, 2005, 2006 Red Hat, Inc. Copyright 1996, 1998, 2001, 2005, 2006, 2009 Red Hat, Inc.
This file is part of Cygwin. This file is part of Cygwin.
@ -17,11 +17,16 @@ details. */
/* sys/fcntl defines values up to 0x40000 (O_NOINHERIT). */ /* sys/fcntl defines values up to 0x40000 (O_NOINHERIT). */
#define _FDIRECT 0x80000 #define _FDIRECT 0x80000
#define _FNOFOLLOW 0x100000 #define _FNOFOLLOW 0x100000
#define _FDIRECTORY 0x200000
#define _FEXECSRCH 0x400000
#define O_DIRECT _FDIRECT #define O_DIRECT _FDIRECT
#define O_NOFOLLOW _FNOFOLLOW #define O_NOFOLLOW _FNOFOLLOW
#define O_DSYNC _FSYNC #define O_DSYNC _FSYNC
#define O_RSYNC _FSYNC #define O_RSYNC _FSYNC
#define O_DIRECTORY _FDIRECTORY
#define O_EXEC _FEXECSRCH
#define O_SEARCH _FEXECSRCH
#define POSIX_FADV_NORMAL 0 #define POSIX_FADV_NORMAL 0
#define POSIX_FADV_SEQUENTIAL 1 #define POSIX_FADV_SEQUENTIAL 1

View File

@ -969,6 +969,12 @@ open (const char *unix_path, int flags, ...)
res = -1; res = -1;
set_errno (ELOOP); set_errno (ELOOP);
} }
else if ((flags & O_DIRECTORY) && !fh->pc.isdir ())
{
delete fh;
res = -1;
set_errno (ENOTDIR);
}
else if (((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) && fh->exists ()) else if (((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) && fh->exists ())
{ {
delete fh; delete fh;