www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/1999/03/12/23:38:41

Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com
From: Chris Faylor <cgf AT cygnus DOT com>
Date: Fri, 12 Mar 1999 23:39:27 -0500
To: Corinna Vinschen <corinna DOT vinschen AT cityweb DOT de>
Cc: cygwin-developers AT sourceware DOT cygnus DOT com
Subject: Re: patch: telldir() and seekdir()
Message-ID: <19990312233927.A7402@cygnus.com>
References: <36E9955A DOT 19238FA5 AT cityweb DOT de>
Mime-Version: 1.0
X-Mailer: Mutt 0.95.3i
In-Reply-To: <36E9955A.19238FA5@cityweb.de>; from Corinna Vinschen on Fri, Mar 12, 1999 at 11:29:46PM +0100

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019