diff options
author | Christopher Faylor <me@cgf.cx> | 2003-09-08 04:04:19 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-09-08 04:04:19 +0000 |
commit | 0c7b55727aff6848f72afc41c149d9d4dfc3cdb5 (patch) | |
tree | 216af49bea40c5c2e936020955135ce8a3529277 /winsup/cygwin/fhandler_registry.cc | |
parent | d31c5928ddc2f5cde08e89e55fb0cbc9656fd2b9 (diff) | |
download | cygnal-0c7b55727aff6848f72afc41c149d9d4dfc3cdb5.tar.gz cygnal-0c7b55727aff6848f72afc41c149d9d4dfc3cdb5.tar.bz2 cygnal-0c7b55727aff6848f72afc41c149d9d4dfc3cdb5.zip |
Throughout, remove __d_u.__d_data fields from DIR structure.
* include/sys/dirent.h (dirent): Remvoe old_d_ino.
(DIR): Make __d_dirhash a 64 bit value. Remove __d_data and __d_u. Add
__flags.
* dir.cc (opendir_states): New enum.
(opendir): Clear new DIR __flags field.
(readdir): Fill in '.' and '..' entries if we hit EOF and we haven't seen them
already. Nuke setting of old_d_ino.
(rewinddir): Reset DIR __flags field.
(seekdir64): Ditto.
* fhandler_disk_file.cc (fhandler_cygdrive::fhandler_cygdrive): Remove special
handling of "." and ".." since they are now handled automatically.
Diffstat (limited to 'winsup/cygwin/fhandler_registry.cc')
-rw-r--r-- | winsup/cygwin/fhandler_registry.cc | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc index 39a89204e..7e8eb23fb 100644 --- a/winsup/cygwin/fhandler_registry.cc +++ b/winsup/cygwin/fhandler_registry.cc @@ -291,13 +291,13 @@ fhandler_registry::readdir (DIR * dir) res = dir->__d_dirent; goto out; } - if (dir->__d_u.__d_data.__handle == INVALID_HANDLE_VALUE + if (dir->__handle == INVALID_HANDLE_VALUE && dir->__d_position == 0) { handle = open_key (path + 1, KEY_READ, false); - dir->__d_u.__d_data.__handle = handle; + dir->__handle = handle; } - if (dir->__d_u.__d_data.__handle == INVALID_HANDLE_VALUE) + if (dir->__handle == INVALID_HANDLE_VALUE) goto out; if (dir->__d_position < SPECIAL_DOT_FILE_COUNT) { @@ -311,12 +311,12 @@ retry: /* For the moment, the type of key is ignored here. when write access is added, * maybe add an extension for the type of each value? */ - error = RegEnumValue ((HKEY) dir->__d_u.__d_data.__handle, + error = RegEnumValue ((HKEY) dir->__handle, (dir->__d_position & ~REG_ENUM_VALUES_MASK) >> 16, buf, &buf_size, NULL, NULL, NULL, NULL); else error = - RegEnumKeyEx ((HKEY) dir->__d_u.__d_data.__handle, dir->__d_position - + RegEnumKeyEx ((HKEY) dir->__handle, dir->__d_position - SPECIAL_DOT_FILE_COUNT, buf, &buf_size, NULL, NULL, NULL, NULL); if (error == ERROR_NO_MORE_ITEMS @@ -329,8 +329,8 @@ retry: } if (error != ERROR_SUCCESS && error != ERROR_MORE_DATA) { - RegCloseKey ((HKEY) dir->__d_u.__d_data.__handle); - dir->__d_u.__d_data.__handle = INVALID_HANDLE_VALUE; + RegCloseKey ((HKEY) dir->__handle); + dir->__handle = INVALID_HANDLE_VALUE; if (error != ERROR_NO_MORE_ITEMS) seterrno_from_win_error (__FILE__, __LINE__, error); goto out; @@ -372,10 +372,10 @@ fhandler_registry::seekdir (DIR * dir, _off64_t loc) void fhandler_registry::rewinddir (DIR * dir) { - if (dir->__d_u.__d_data.__handle != INVALID_HANDLE_VALUE) + if (dir->__handle != INVALID_HANDLE_VALUE) { - (void) RegCloseKey ((HKEY) dir->__d_u.__d_data.__handle); - dir->__d_u.__d_data.__handle = INVALID_HANDLE_VALUE; + (void) RegCloseKey ((HKEY) dir->__handle); + dir->__handle = INVALID_HANDLE_VALUE; } dir->__d_position = 0; return; @@ -385,8 +385,8 @@ int fhandler_registry::closedir (DIR * dir) { int res = 0; - if (dir->__d_u.__d_data.__handle != INVALID_HANDLE_VALUE && - RegCloseKey ((HKEY) dir->__d_u.__d_data.__handle) != ERROR_SUCCESS) + if (dir->__handle != INVALID_HANDLE_VALUE && + RegCloseKey ((HKEY) dir->__handle) != ERROR_SUCCESS) { __seterrno (); res = -1; |