* 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:
		| @@ -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> | ||||
|  | ||||
| 	* fhandler_floppy.cc (fhandler_dev_floppy::open): Fix format.  Add | ||||
|   | ||||
| @@ -342,12 +342,13 @@ details. */ | ||||
|       191: Export glob_pattern_p | ||||
|       192: CW_SETERRNO added | ||||
|       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 */ | ||||
|  | ||||
| #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 | ||||
| 	shared memory regions.  It is incremented when incompatible | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* 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. | ||||
|  | ||||
| @@ -17,11 +17,16 @@ details. */ | ||||
| /* sys/fcntl defines values up to 0x40000 (O_NOINHERIT). */ | ||||
| #define _FDIRECT	0x80000 | ||||
| #define _FNOFOLLOW	0x100000 | ||||
| #define _FDIRECTORY	0x200000 | ||||
| #define _FEXECSRCH	0x400000 | ||||
|  | ||||
| #define O_DIRECT	_FDIRECT | ||||
| #define O_NOFOLLOW	_FNOFOLLOW | ||||
| #define O_DSYNC		_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_SEQUENTIAL	1 | ||||
|   | ||||
| @@ -969,6 +969,12 @@ open (const char *unix_path, int flags, ...) | ||||
| 	      res = -1; | ||||
| 	      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 ()) | ||||
| 	    { | ||||
| 	      delete fh; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user