summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler.h1
-rw-r--r--winsup/cygwin/fhandler_registry.cc8
3 files changed, 14 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 35687b7fa..1ceba8b7b 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_registry::opendir): Declare.
+ * fhandler_registry.cc (fhandler_registry::opendir): New function.
+
2012-01-13 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
* include/cygwin/config.h (_GLIBC_EXTENSION): Define.
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index e4ba58423..e3a71368d 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -1979,6 +1979,7 @@ class fhandler_registry: public fhandler_proc
fhandler_registry ();
void set_name (path_conv &pc);
virtual_ftype_t exists();
+ DIR *opendir (int fd) __attribute__ ((regparm (2)));
int readdir (DIR *, dirent *) __attribute__ ((regparm (3)));
long telldir (DIR *);
void seekdir (DIR *, long);
diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc
index 50233a886..5f6246439 100644
--- a/winsup/cygwin/fhandler_registry.cc
+++ b/winsup/cygwin/fhandler_registry.cc
@@ -537,6 +537,14 @@ fhandler_registry::fstat (struct __stat64 *buf)
return 0;
}
+DIR *
+fhandler_registry::opendir (int fd)
+{
+ /* Skip fhandler_proc::opendir, which allocates dir->_d_handle for its
+ own devilish purposes... */
+ return fhandler_virtual::opendir (fd);
+}
+
int
fhandler_registry::readdir (DIR *dir, dirent *de)
{