diff options
Diffstat (limited to 'dirent')
-rw-r--r-- | dirent/tst-seekdir.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/dirent/tst-seekdir.c b/dirent/tst-seekdir.c index f4d99ae632..b833c30705 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; } |