OSDN Git Service

* fhandler_netdrive.cc (fhandler_netdrive::telldir): Implement.
authorcorinna <corinna>
Wed, 18 May 2005 10:23:37 +0000 (10:23 +0000)
committercorinna <corinna>
Wed, 18 May 2005 10:23:37 +0000 (10:23 +0000)
(fhandler_netdrive::seekdir): Implement.
(fhandler_netdrive::closedir): Call rewinddir to have only one point
of calling WNetCloseEnum.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler_netdrive.cc

index 8d4e974..2e06516 100644 (file)
@@ -1,3 +1,10 @@
+2005-05-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_netdrive.cc (fhandler_netdrive::telldir): Implement.
+       (fhandler_netdrive::seekdir): Implement.
+       (fhandler_netdrive::closedir): Call rewinddir to have only one point
+       of calling WNetCloseEnum.
+
 2005-05-17  Corinna Vinschen  <corinna@vinschen.de>
 
        * fhandler.h (class fhandler_netdrive): Add method rewinddir.
index c778a7d..2fde21b 100644 (file)
@@ -212,12 +212,18 @@ fhandler_netdrive::readdir (DIR *dir)
 _off64_t
 fhandler_netdrive::telldir (DIR *dir)
 {
-  return -1;
+  return dir->__d_position;
 }
 
 void
-fhandler_netdrive::seekdir (DIR *, _off64_t)
+fhandler_netdrive::seekdir (DIR *dir, _off64_t pos)
 {
+  rewinddir (dir);
+  if (pos < 0)
+    return;
+  while (dir->__d_position < pos)
+    if (!readdir (dir))
+      break;
 }
 
 void
@@ -232,9 +238,7 @@ fhandler_netdrive::rewinddir (DIR *dir)
 int
 fhandler_netdrive::closedir (DIR *dir)
 {
-  if (dir->__handle != INVALID_HANDLE_VALUE)
-    WNetCloseEnum (dir->__handle);
-  dir->__handle = INVALID_HANDLE_VALUE;
+  rewinddir (dir);
   return fhandler_virtual::closedir (dir);
 }