From 8b4bd0822066fe7282bb4b6486c0f4c44225d493 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sat, 21 Apr 2012 19:52:11 +0000 Subject: [PATCH] * dtable.cc (fh_alloc): Only disallow opening of nonexistent on-disk device. * path.cc (path_conv::check): Remove PATH_KEPT_HANDLE setting. * path.h (path_types): Remove PATH_KEPT_HANDLE. (path_conv::kept_handle): Delete now-unneeded function. --- winsup/cygwin/ChangeLog | 8 ++++++++ winsup/cygwin/dtable.cc | 6 +++--- winsup/cygwin/path.cc | 3 --- winsup/cygwin/path.h | 2 -- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index ac299a878..54f20982b 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,11 @@ +2012-04-21 Christopher Faylor + + * dtable.cc (fh_alloc): Only disallow opening of nonexistent on-disk + device. + * path.cc (path_conv::check): Remove PATH_KEPT_HANDLE setting. + * path.h (path_types): Remove PATH_KEPT_HANDLE. + (path_conv::kept_handle): Delete now-unneeded function. + 2012-04-19 Christopher Faylor * dtable.cc (fh_alloc): Keep fh which was flagged as error if it is for diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index c956ec371..1cd1f6b48 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -607,10 +607,10 @@ fh_alloc (path_conv& pc) fh = cnew (fhandler_nodevice); else if (fh->dev () == FH_ERROR) { - if (pc.kept_handle () && pc.dev.isfs ()) + if (!pc.isopen () && pc.dev.isfs ()) fh->dev () = pc.dev; /* Special case: This file actually exists on - disk and this is a stat() so just return the - info from pc. */ + disk and we're not trying to open it so just + return the info from pc. */ else { delete fh; diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 0a2380b9c..3524c0cc0 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -1152,9 +1152,6 @@ out: if (opt & PC_CTTY) path_flags |= PATH_CTTY; - if (opt & PC_KEEP_HANDLE) - path_flags |= PATH_KEPT_HANDLE; - if ((opt & PC_POSIX)) { if (tail < path_end && tail > path_copy + 1) diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index ff5585bce..3bbab4df7 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -77,7 +77,6 @@ enum path_types PATH_IHASH = MOUNT_IHASH, PATH_ALL_EXEC = (PATH_CYGWIN_EXEC | PATH_EXEC), PATH_NO_ACCESS_CHECK = PC_NO_ACCESS_CHECK, - PATH_KEPT_HANDLE = 0x00200000, PATH_CTTY = 0x00400000, /* could later be used as ctty */ PATH_OPEN = 0x00800000, /* use open semantics */ PATH_LNK = 0x01000000, @@ -154,7 +153,6 @@ class path_conv bool has_acls () const {return !(path_flags & PATH_NOACL) && fs.has_acls (); } bool hasgood_inode () const {return !(path_flags & PATH_IHASH); } bool isgood_inode (__ino64_t ino) const; - bool kept_handle () const {return !!(path_flags & PATH_KEPT_HANDLE);} int has_symlinks () const {return path_flags & PATH_HAS_SYMLINKS;} int has_dos_filenames_only () const {return path_flags & PATH_DOS;} int has_buggy_open () const {return fs.has_buggy_open ();}