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 + + * fhandler.h (fhandler_registry::opendir): Declare. + * fhandler_registry.cc (fhandler_registry::opendir): New function. + 2012-01-13 Yaakov Selkowitz * 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) {