]>
git.ipfire.org Git - thirdparty/glibc.git/blob - dirent/tst-fdopendir.c
10 #include <support/xunistd.h>
19 char fname
[] = "/tmp/jXXXXXX";
20 int fd
= mkstemp (fname
);
23 puts ("mkstemp failed");
27 xwrite (fd
, "hello", 5);
31 if (stat64 (fname
, &st
) == -1)
33 puts ("first stat failed");
37 /* Make sure there is enough time between the creation and the access. */
40 fd
= open (fname
, O_RDONLY
| O_NOATIME
);
43 puts ("first open failed");
48 read(fd
, buf
, sizeof (buf
));
52 if (stat64 (fname
, &st2
) == -1)
54 puts ("second stat failed");
58 bool no_noatime
= false;
59 #ifdef _STATBUF_ST_NSEC
60 if (st
.st_atim
.tv_sec
!= st2
.st_atim
.tv_sec
61 || st
.st_atim
.tv_nsec
!= st2
.st_atim
.tv_nsec
)
63 if (st
.st_atime
!= st2
.st_atime
)
66 puts ("file atime changed");
72 strcpy(fname
, "/tmp/dXXXXXX");
73 char *d
= mkdtemp (fname
);
76 puts ("mkdtemp failed");
80 if (stat64 (d
, &st
) == -1)
82 puts ("third stat failed");
87 fd
= open64 (d
, O_RDONLY
|O_NDELAY
|O_DIRECTORY
|O_NOATIME
);
90 puts ("second open failed");
93 DIR *dir
= fdopendir (fd
);
96 puts ("fdopendir failed");
101 while ((de
= readdir (dir
)) != NULL
)
106 if (stat64 (d
, &st2
) == -1)
108 puts ("fourth stat failed");
111 #ifdef _STATBUF_ST_NSEC
113 && (st
.st_atim
.tv_sec
!= st2
.st_atim
.tv_sec
114 || st
.st_atim
.tv_nsec
!= st2
.st_atim
.tv_nsec
))
116 if (!no_noatime
&& st
.st_atime
!= st2
.st_atime
)
119 puts ("directory atime changed");
128 #define TEST_FUNCTION do_test ()
129 #include "../test-skeleton.c"