Mail Archives: cygwin-developers/1999/03/12/23:38:41
Could you rewrite this patch and change the name from __find_first_called
to something more descriptive?
I removed the dependency on this field a while ago so I think it is safe
to change it as long as you replace it with something that is 4 bytes
in size in the same location in the structure.
cgf
On Fri, Mar 12, 1999 at 11:29:46PM +0100, Corinna Vinschen wrote:
>Hi,
>
>attached is a small patch to winsup, which implements the
>functions telldir() and seekdir(). They are using the
>currently unused struct element DIR::__d_find_first_called
>to remember the position for tell and seek.
>Of course, the file `dirent.h' from newlib/libc/sys/cygwin/sys is
>changed, too.
>
>Regards,
>Corinna
>
>ChangeLog:
>==========
>
>Fri Mar 12 23:23:00 Corinna Vinschen <corinna DOT vinschen AT cityweb DOT de>
>
> * dir.cc: New functions `telldir()' and `seekdir()'.
> * cygwin.def: Ditto.
> * newlib/libc/sys/cygwin/sys/dirent.h: Additional prototypes
> for `telldir()' and `seekdir()'.
>
>======== snip ========
>--- dir.cc 1999/03/07 22:05:34 1.3
>+++ dir.cc 1999/03/12 22:11:22
>@@ -106,2 +106,3 @@ opendir (const char *dirname)
> dir->__d_u.__d_data.__handle = INVALID_HANDLE_VALUE;
>+ dir->__d_find_first_called = 0;
> dir->__d_dirhash = statbuf.st_ino;
>@@ -202,2 +203,3 @@ readdir (DIR * dir)
>
>+ ++dir->__d_find_first_called;
> res = dir->__d_dirent;
>@@ -206,2 +208,22 @@ readdir (DIR * dir)
> return res;
>+}
>+
>+/* telldir */
>+extern "C"
>+off_t
>+telldir (DIR * dir)
>+{
>+ return (off_t) dir->__d_find_first_called;
>+}
>+
>+/* seekdir */
>+extern "C"
>+void
>+seekdir (DIR * dir, off_t loc)
>+{
>+ rewinddir (dir);
>+ dir->__d_find_first_called = 0;
>+ while (loc > dir->__d_find_first_called)
>+ if (! readdir (dir))
>+ break;
> }
>--- cygwin.def.orig Sat Mar 13 00:25:27 1999
>+++ cygwin.def Sat Mar 13 00:12:58 1999
>@@ -495,2 +495,4 @@ random
> initstate
>+seekdir
>+_seekdir = seekdir
> setstate
>@@ -727,2 +729,4 @@ tcsetpgrp
> _tcsetpgrp = tcsetpgrp
>+telldir
>+_telldir = telldir
> tempnam
>--- newlib/libc/sys/cygwin/sys/dirent.h.orig Sat Mar 13 00:27:01 1999
>+++ newlib/libc/sys/cygwin/sys/dirent.h Sat Mar 13 00:06:46 1999
>@@ -41,2 +41,4 @@ typedef struct
> DIR *opendir (const char *);
>+off_t telldir (DIR *);
>+void seekdir (DIR *, off_t loc);
> struct dirent *readdir (DIR *);
>
--
cgf AT cygnus DOT com
http://www.cygnus.com/
- Raw text -