* 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:
Christopher Faylor
2006-01-21 02:24:17 +00:00
parent 54abc854d0
commit 868fb2ff69
8 changed files with 77 additions and 76 deletions

View File

@@ -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;