diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2013-10-24 13:41:17 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2013-10-24 13:41:17 +0400 |
commit | 95ff6fc6da3cccb2b50600a181c6f9dcb1333283 (patch) | |
tree | c57705a56761f4d50cc518d78703f78036215ba6 /winsup/cygwin/fhandler_disk_file.cc | |
parent | 72a386373e0fb620e943064f63f9e4d142c933d7 (diff) |
* devices.in (dev_storage): Map /dev/zero and /dev/full to \Device\Null.
* devices.cc: Regenerate.
* dtable.h (struct dtable): Make fhandler_base friend, rather
than fhandler_disk_file.
* fhandler.cc (fhandler_base::open_with_arch): Create unique id.
(fhandler_base::cleanup): Call del_my_locks.
(fhandler_base::fcntl): Handle F_GETLK, F_SETLK and F_SETLKW.
* fhandler.h (fhandler_base::get_dev): Return real device number.
(fhandler_base::set_unique_id): New inline method.
(fhandler_disk_file::lock): Drop declaration.
(fhandler_disk_file::get_dev): New method, return pc.fs_serial_number.
(fhandler_dev_zero::open): Drop declaration.
* fhandler_disk_file.cc (fhandler_disk_file::close): Move
del_my_locks call to fhandler_base::open_with_arch.
(fhandler_disk_file::fcntl): Move handling of locking commands to
fhandler_base::fcntl.
(fhandler_base::open_fs): Drop call to NtAllocateLocallyUniqueId.
* fhandler_zero.cc (fhandler_dev_zero::open): Remove so that default
fhandler_base::open is used to open \Device\Null.
* flock.cc (fixup_lockf_after_exec): Finding a single fhandler is
enough here.
(fhandler_base::lock): Replace fhandler_disk_file::lock. Refuse to lock
nohandle devices. Handle read/write test using POSIX flags. Explain
why. Never fail on SEEK_CUR or SEEK_END, rather assume position 0,
just as Linux.
* net.cc (fdsock): Create unique id.
Diffstat (limited to 'winsup/cygwin/fhandler_disk_file.cc')
-rw-r--r-- | winsup/cygwin/fhandler_disk_file.cc | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index fe321cda0..32f02bd5f 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -1401,9 +1401,6 @@ fhandler_disk_file::close () /* Close extra pread/pwrite handle, if it exists. */ if (prw_handle) NtClose (prw_handle); - /* Delete all POSIX locks on the file. Delete all flock locks on the - file if this is the last reference to this file. */ - del_my_locks (on_close); return fhandler_base::close (); } @@ -1414,20 +1411,11 @@ fhandler_disk_file::fcntl (int cmd, intptr_t arg) switch (cmd) { - case F_LCK_MANDATORY: + case F_LCK_MANDATORY: /* Mandatory locking only works on files. */ mandatory_locking (!!arg); need_fork_fixup (true); res = 0; break; - case F_GETLK: - case F_SETLK: - case F_SETLKW: - { - struct flock *fl = (struct flock *) arg; - fl->l_type &= F_RDLCK | F_WRLCK | F_UNLCK; - res = mandatory_locking () ? mand_lock (cmd, fl) : lock (cmd, fl); - } - break; default: res = fhandler_base::fcntl (cmd, arg); break; @@ -1487,9 +1475,6 @@ fhandler_base::open_fs (int flags, mode_t mode) } ino = pc.get_ino_by_handle (get_handle ()); - /* A unique ID is necessary to recognize fhandler entries which are - duplicated by dup(2) or fork(2). */ - NtAllocateLocallyUniqueId ((PLUID) &unique_id); out: syscall_printf ("%d = fhandler_disk_file::open(%S, %y)", res, |