summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/flock.cc35
2 files changed, 17 insertions, 24 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index b6f6e305e..b7d80c0de 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,11 @@
2008-04-02 Corinna Vinschen <corinna@vinschen.de>
+ * flock.cc (get_lock_parent_dir): Drop call to NtOpenDirectoryObject
+ and utilize OBJ_OPENIF flag in call to NtCreateDirectoryObject.
+ (inode_t::inode_t): Ditto. Same for NtOpenMutant/NtCreateMutant.
+
+2008-04-02 Corinna Vinschen <corinna@vinschen.de>
+
* posix.sgml: Change lockf to being implemented.
2008-04-02 Corinna Vinschen <corinna@vinschen.de>
diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc
index 407400812..5e7ede99f 100644
--- a/winsup/cygwin/flock.cc
+++ b/winsup/cygwin/flock.cc
@@ -262,16 +262,11 @@ get_lock_parent_dir ()
if (!dir)
{
RtlInitUnicodeString (&uname, L"\\BaseNamedObjects\\cygwin-fcntl-lk");
- InitializeObjectAttributes (&attr, &uname, OBJ_INHERIT, NULL,
- everyone_sd (FLOCK_PARENT_DIR_ACCESS));
- status = NtOpenDirectoryObject (&dir, FLOCK_PARENT_DIR_ACCESS, &attr);
+ InitializeObjectAttributes (&attr, &uname, OBJ_INHERIT | OBJ_OPENIF,
+ NULL, everyone_sd (FLOCK_PARENT_DIR_ACCESS));
+ status = NtCreateDirectoryObject (&dir, FLOCK_PARENT_DIR_ACCESS, &attr);
if (!NT_SUCCESS (status))
- {
- status = NtCreateDirectoryObject (&dir, FLOCK_PARENT_DIR_ACCESS,
- &attr);
- if (!NT_SUCCESS (status))
- api_fatal ("NtCreateDirectoryObject(parent): %p", status);
- }
+ api_fatal ("NtCreateDirectoryObject(parent): %p", status);
}
INODE_LIST_UNLOCK ();
return dir;
@@ -526,27 +521,19 @@ inode_t::inode_t (__dev32_t dev, __ino64_t ino)
of the given file, in hex notation. */
int len = __small_swprintf (name, L"%08x-%016X", dev, ino);
RtlInitCountedUnicodeString (&uname, name, len * sizeof (WCHAR));
- InitializeObjectAttributes (&attr, &uname, OBJ_INHERIT, parent_dir,
- everyone_sd (FLOCK_INODE_DIR_ACCESS));
- status = NtOpenDirectoryObject (&i_dir, FLOCK_INODE_DIR_ACCESS, &attr);
+ InitializeObjectAttributes (&attr, &uname, OBJ_INHERIT | OBJ_OPENIF,
+ parent_dir, everyone_sd (FLOCK_INODE_DIR_ACCESS));
+ status = NtCreateDirectoryObject (&i_dir, FLOCK_INODE_DIR_ACCESS, &attr);
if (!NT_SUCCESS (status))
- {
- status = NtCreateDirectoryObject (&i_dir, FLOCK_INODE_DIR_ACCESS, &attr);
- if (!NT_SUCCESS (status))
- api_fatal ("NtCreateDirectoryObject(inode): %p", status);
- }
+ api_fatal ("NtCreateDirectoryObject(inode): %p", status);
/* Create a mutex object in the file specific dir, which is used for
access synchronization on the dir and its objects. */
RtlInitUnicodeString (&uname, L"mtx");
- InitializeObjectAttributes (&attr, &uname, OBJ_INHERIT, i_dir,
+ InitializeObjectAttributes (&attr, &uname, OBJ_INHERIT | OBJ_OPENIF, i_dir,
everyone_sd (FLOCK_MUTANT_ACCESS));
- status = NtOpenMutant (&i_mtx, FLOCK_MUTANT_ACCESS, &attr);
+ status = NtCreateMutant (&i_mtx, FLOCK_MUTANT_ACCESS, &attr, FALSE);
if (!NT_SUCCESS (status))
- {
- status = NtCreateMutant (&i_mtx, FLOCK_MUTANT_ACCESS, &attr, FALSE);
- if (!NT_SUCCESS (status))
- api_fatal ("NtCreateMutant(inode): %p", status);
- }
+ api_fatal ("NtCreateMutant(inode): %p", status);
}
/* Enumerate all lock event objects for this file and create a lockf_t