summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/select.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-10-30 09:44:47 +0000
committerCorinna Vinschen <corinna@vinschen.de>2013-10-30 09:44:47 +0000
commit751bbaf96ae7ee249d7f5cb243b1239779ca0530 (patch)
treea7c6fbb535a816767ae9a7231458d3688bea8b17 /winsup/cygwin/select.cc
parent0160e166ee3c6a87c9e95c2d75ee2d2a0c4c2a29 (diff)
downloadcygnal-751bbaf96ae7ee249d7f5cb243b1239779ca0530.tar.gz
cygnal-751bbaf96ae7ee249d7f5cb243b1239779ca0530.tar.bz2
cygnal-751bbaf96ae7ee249d7f5cb243b1239779ca0530.zip
* devices.in (dev_cygdrive_storage): Map to \Device\Null.
(dev_storage): Map /dev and /dev/windows to \Device\Null. * devices.cc: Regenerate. * dir.cc (opendir): Create unique id. Explain why. * fhandler.h (fhandler_dev::get_dev): Implement inline. (fhandler_cygdrive::close): Drop declaration. (fhandler_cygdrive::get_dev): Implement inline. (fhandler_windows::get_hwnd): Ditto. (fhandler_windows::set_close_on_exec): Drop declaration. (fhandler_windows::fixup_after_fork): Ditto. * fhandler_dev.cc (fhandler_dev::open): Call fhandler_disk_file::open without O_CREAT flag. Explain why. Create \Device\Null handle if /dev/ doesn't actually exist. (fhandler_dev::close): Drop nohandle case. (fhandler_dev::fstatvfs): Drop nohandle check. Test for fs_got_fs instead. Set ST_RDONLY fs flag for simulated /dev. (fhandler_dev::opendir): If /dev doesn't exist, call open() to create fake \Device\Null handle. Don't set nohandle. Set dir_exists correctly. (fhandler_dev::rewinddir): Call fhandler_disk_file::rewinddir only if /dev is a real directory. * fhandler_disk_file.cc (fhandler_disk_file::opendir): If called for the cygdrive dir, call open() to create fake \Device\Null handle. Only attach __DIR_mounts buffer to dir if not called for cygdrive dir. Don't set nohandle. (fhandler_cygdrive::open): Create \Device\Null handle. (fhandler_cygdrive::close): Remove. (fhandler_cygdrive::fstatvfs): Set ST_RDONLY fs flag. * fhandler_windows.cc (fhandler_windows::open): Create \Device\Null handle. (fhandler_windows::read): Don't add io_handle to WFMO handle array. Change subsequent test for return value accordingly. Fix test for "message arrived". (fhandler_windows::set_close_on_exec): Remove. (fhandler_windows::fixup_after_fork): Remove. * path.h (path_conv::set_path): Make sure wide_path is NULL when setting a new path. * select.cc (peek_windows): Use correct hWnd value, not io_handle. (fhandler_windows::select_read): Don't use io_handle as wait object. (fhandler_windows::select_write): Ditto. (fhandler_windows::select_except): Ditto.
Diffstat (limited to 'winsup/cygwin/select.cc')
-rw-r--r--winsup/cygwin/select.cc5
1 files changed, 2 insertions, 3 deletions
diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc
index ab6517cbf..2534c0ee9 100644
--- a/winsup/cygwin/select.cc
+++ b/winsup/cygwin/select.cc
@@ -1542,6 +1542,8 @@ peek_windows (select_record *me, bool)
MSG m;
HANDLE h;
set_handle_or_return_if_not_open (h, me);
+ /* We need the hWnd value, not the io_handle. */
+ h = ((fhandler_windows *) me->fh)->get_hwnd ();
if (me->read_selected && me->read_ready)
return 1;
@@ -1576,7 +1578,6 @@ fhandler_windows::select_read (select_stuff *ss)
s->peek = peek_windows;
s->read_selected = true;
s->read_ready = false;
- s->h = get_handle ();
s->windows_handle = true;
return s;
}
@@ -1591,7 +1592,6 @@ fhandler_windows::select_write (select_stuff *ss)
s->verify = verify_ok;
}
s->peek = peek_windows;
- s->h = get_handle ();
s->write_selected = true;
s->write_ready = true;
s->windows_handle = true;
@@ -1608,7 +1608,6 @@ fhandler_windows::select_except (select_stuff *ss)
s->verify = verify_ok;
}
s->peek = peek_windows;
- s->h = get_handle ();
s->except_selected = true;
s->except_ready = false;
s->windows_handle = true;