* include/cygwin/version.h: Bump API minor number to 151.
* dir.cc (__opendir_with_d_ino): New function. (opendir): Set flag if we should be calculating inodes. (readdir_worker): Calculate d_ino by calling stat if the user has asked for it. (seekdir64): Maintain all persistent flag settings. * fhandler.h (dirent_states): Add dirent_set_d_ino. * fhandler_disk_file.cc (fhandler_disk_file::opendir): Reflect changes to dirent structure. * fhandler_virtual.cc (fhandler_virtual::opendir): Ditto. * include/sys/dirent.h (struct dirent): Coalesce two similar structures. Remove all threads of the apparently highly confusing references to inodes. Add support for calculating a real inode if __USE_EXPENSIVE_CYGWIN_D_INO is defined.
This commit is contained in:
@@ -1359,7 +1359,7 @@ fhandler_disk_file::opendir ()
|
||||
else
|
||||
{
|
||||
strcpy (dir->__d_dirname, get_win32_name ());
|
||||
dir->__d_dirent->d_version = __DIRENT_VERSION;
|
||||
dir->__d_dirent->__d_version = __DIRENT_VERSION;
|
||||
cygheap_fdnew fd;
|
||||
|
||||
if (fd < 0)
|
||||
@@ -1367,7 +1367,7 @@ fhandler_disk_file::opendir ()
|
||||
|
||||
fd = this;
|
||||
fd->nohandle (true);
|
||||
dir->__d_dirent->d_fd = fd;
|
||||
dir->__d_fd = fd;
|
||||
dir->__fh = this;
|
||||
/* FindFirstFile doesn't seem to like duplicate /'s. */
|
||||
len = strlen (dir->__d_dirname);
|
||||
@@ -1378,7 +1378,6 @@ fhandler_disk_file::opendir ()
|
||||
dir->__d_cookie = __DIRENT_COOKIE;
|
||||
dir->__handle = INVALID_HANDLE_VALUE;
|
||||
dir->__d_position = 0;
|
||||
dir->__d_dirhash = get_namehash ();
|
||||
|
||||
res = dir;
|
||||
dir->__flags = (pc.normalized_path[0] == '/' && pc.normalized_path[1] == '\0') ? dirent_isroot : 0;
|
||||
|
Reference in New Issue
Block a user