about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/unix/seekdir.c3
-rw-r--r--sysdeps/unix/telldir.c4
3 files changed, 7 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 769fa1636d..eedcc2b834 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 Tue Jan 16 17:37:39 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
+	* sysdeps/unix/seekdir.c: Don't modify POS before seeking.
+	* sysdeps/unix/telldir.c: Fix position calculation to account for
+	buffered data properly.
+
 	* sysdeps/m68k/Makefile (crypt): Don't define if building a shared
 	library.
 
diff --git a/sysdeps/unix/seekdir.c b/sysdeps/unix/seekdir.c
index b0a6f5e9d7..018f697c21 100644
--- a/sysdeps/unix/seekdir.c
+++ b/sysdeps/unix/seekdir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -27,7 +27,6 @@ Cambridge, MA 02139, USA.  */
 void
 DEFUN(seekdir, (dirp, pos), DIR *dirp AND __off_t pos)
 {
-  pos -= dirp->__size - dirp->__offset;
   (void) __lseek(dirp->__fd, pos, SEEK_SET);
   dirp->__size = 0;
   dirp->__offset = 0;
diff --git a/sysdeps/unix/telldir.c b/sysdeps/unix/telldir.c
index 5dbf1ca3c1..2b611b0fca 100644
--- a/sysdeps/unix/telldir.c
+++ b/sysdeps/unix/telldir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -39,5 +39,5 @@ DEFUN(telldir, (dirp), DIR *dirp)
   pos = __lseek(dirp->__fd, (off_t) 0, SEEK_CUR);
   if (pos == (off_t) -1)
     return (off_t) -1;
-  return pos + (dirp->__size - dirp->__offset);
+  return pos + dirp->__size - dirp->__offset;
 }