aboutsummaryrefslogtreecommitdiff
path: root/dirent/tst-seekdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'dirent/tst-seekdir.c')
-rw-r--r--dirent/tst-seekdir.c26
1 files changed, 17 insertions, 9 deletions
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;
}