diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | dirent/tst-seekdir.c | 26 | ||||
-rw-r--r-- | dlfcn/Makefile | 2 | ||||
-rw-r--r-- | sysdeps/unix/seekdir.c | 5 |
4 files changed, 33 insertions, 12 deletions
@@ -1,3 +1,15 @@ +2001-08-07 Jakub Jelinek <jakub@redhat.com> + + * sysdeps/unix/seekdir.c (seekdir): Set dirp->filepos. + + * dirent/tst-seekdir.c (main): Check whether telldir right after + seekdir returns 2nd argument given to seekdir. + +2001-08-07 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> + + * dlfcn/Makefile (tststatic-ENV): Add $(common-objpfx) to + LD_LIBRARY_PATH. + 2001-08-07 Andreas Jaeger <aj@suse.de> Andreas Schwab <schwab@suse.de> Bruno Haible <haible@clisp.cons.org> diff --git a/dirent/tst-seekdir.c b/dirent/tst-seekdir.c index f4d99ae..b833c30 100644 --- a/dirent/tst-seekdir.c +++ b/dirent/tst-seekdir.c @@ -5,20 +5,21 @@ int main (int argc, char *argv[]) { - DIR * dirp; long int save3 = 0; + long int cur; int i = 0; + int result = 0; struct dirent *dp; - dirp = opendir("."); - for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) + dirp = opendir ("."); + for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) { /* save position 3 (after fourth entry) */ if (i++ == 3) - save3 = telldir(dirp); + save3 = telldir (dirp); - printf("%s\n", dp->d_name); + printf ("%s\n", dp->d_name); /* stop at 400 (just to make sure dirp->__offset and dirp->__size are scrambled */ @@ -26,17 +27,24 @@ main (int argc, char *argv[]) break; } - printf("going back past 4-th entry...\n"); + printf ("going back past 4-th entry...\n"); /* go back to saved entry */ seekdir (dirp, save3); + /* Check whether telldir equals to save3 now. */ + cur = telldir (dirp); + if (cur != save3) + { + printf ("seekdir (d, %ld); telldir (d) == %ld\n", save3, cur); + result = 1; + } /* print remaining files (3-last) */ - for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) - printf("%s\n", dp->d_name); + for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) + printf ("%s\n", dp->d_name); closedir (dirp); - return 0; + return result; } diff --git a/dlfcn/Makefile b/dlfcn/Makefile index e8d9ccb..46ba661 100644 --- a/dlfcn/Makefile +++ b/dlfcn/Makefile @@ -47,7 +47,7 @@ ifeq (yesyesyes,$(build-static)$(build-shared)$(elf)) tests += tststatic tests-static += tststatic modules-names += modstatic -tststatic-ENV = LD_LIBRARY_PATH=$(objpfx) +tststatic-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx) endif extra-objs += $(modules-names:=.os) eval.os diff --git a/sysdeps/unix/seekdir.c b/sysdeps/unix/seekdir.c index dc1716a..1790e62 100644 --- a/sysdeps/unix/seekdir.c +++ b/sysdeps/unix/seekdir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1991,1995,1996,1997,1999,2001 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 @@ -30,8 +30,9 @@ seekdir (dirp, pos) long int pos; { __libc_lock_lock (dirp->lock); - (void) __lseek(dirp->fd, pos, SEEK_SET); + (void) __lseek (dirp->fd, pos, SEEK_SET); dirp->size = 0; dirp->offset = 0; + dirp->filepos = pos; __libc_lock_unlock (dirp->lock); } |