]> git.ipfire.org Git - thirdparty/glibc.git/blame - dirent/tst-seekdir.c
Update.
[thirdparty/glibc.git] / dirent / tst-seekdir.c
CommitLineData
28f540f4
RM
1#include <stdio.h>
2#include <dirent.h>
3#include <stdlib.h>
4
5int
cccda09f 6main (int argc, char *argv[])
28f540f4 7{
28f540f4 8 DIR * dirp;
ba1ffaa1 9 long int save3 = 0;
d1a5466d 10 long int cur;
28f540f4 11 int i = 0;
d1a5466d 12 int result = 0;
28f540f4
RM
13 struct dirent *dp;
14
d1a5466d
UD
15 dirp = opendir (".");
16 for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp))
28f540f4 17 {
b20e47cb 18 /* save position 3 (after fourth entry) */
28f540f4 19 if (i++ == 3)
d1a5466d 20 save3 = telldir (dirp);
28f540f4 21
d1a5466d 22 printf ("%s\n", dp->d_name);
28f540f4
RM
23
24 /* stop at 400 (just to make sure dirp->__offset and dirp->__size are
25 scrambled */
26 if (i == 400)
27 break;
28 }
29
d1a5466d 30 printf ("going back past 4-th entry...\n");
b20e47cb 31
28f540f4
RM
32 /* go back to saved entry */
33 seekdir (dirp, save3);
34
d1a5466d
UD
35 /* Check whether telldir equals to save3 now. */
36 cur = telldir (dirp);
37 if (cur != save3)
38 {
39 printf ("seekdir (d, %ld); telldir (d) == %ld\n", save3, cur);
40 result = 1;
41 }
cccda09f 42
28f540f4 43 /* print remaining files (3-last) */
d1a5466d
UD
44 for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp))
45 printf ("%s\n", dp->d_name);
28f540f4
RM
46
47
48 closedir (dirp);
d1a5466d 49 return result;
28f540f4 50}