This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
2000-08-03 Greg McGary <greg@mcgary.org> * sysdeps/unix/sysv/syscalls.list (time, utime): Correct signatures. * io/test-utime.c: Test passing NULL as utimbuf* arg. OK? Index: sysdeps/unix/sysv/syscalls.list =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/syscalls.list,v retrieving revision 1.5 diff -u -p -r1.5 syscalls.list --- syscalls.list 2000/07/17 22:28:59 1.5 +++ syscalls.list 2000/08/03 19:44:12 @@ -10,7 +10,7 @@ setrlimit - setrlimit i:ip setrlimit settimeofday - settimeofday i:PP __settimeofday settimeofday signal - signal i:ii signal stime - stime i:p stime -time - time i:p time +time - time i:P time times - times i:p __times times ulimit - ulimit i:ii ulimit -utime - utime i:pp utime +utime - utime i:sP utime Index: io/test-utime.c =================================================================== RCS file: /cvs/glibc/libc/io/test-utime.c,v retrieving revision 1.5 diff -u -p -r1.5 test-utime.c --- test-utime.c 2000/06/21 12:38:44 1.5 +++ test-utime.c 2000/08/03 19:44:12 @@ -22,6 +22,7 @@ #include <sys/stat.h> #include <unistd.h> #include <utime.h> +#include <time.h> int main (int argc, char *argv[]) @@ -29,6 +30,8 @@ main (int argc, char *argv[]) char file[L_tmpnam]; struct utimbuf ut; struct stat st; + struct stat stnow; + time_t now1, now2; int fd; if (tmpnam (file) == 0) @@ -45,6 +48,7 @@ main (int argc, char *argv[]) } close (fd); + /* Test utime with arg */ ut.actime = 500000000; ut.modtime = 500000001; if (utime (file, &ut)) @@ -61,6 +65,39 @@ main (int argc, char *argv[]) exit (1); } + /* Test utime with NULL. + Since there's a race condition possible here, we check + the time before and after the call to utime. */ + now1 = time (NULL); + if (now1 == (time_t)-1) + { + perror ("time"); + remove (file); + exit (1); + } + + if (utime (file, NULL)) + { + perror ("utime NULL"); + remove (file); + exit (1); + } + + now2 = time (NULL); + if (now2 == (time_t)-1) + { + perror ("time"); + remove (file); + exit (1); + } + + if (stat (file, &stnow)) + { + perror ("stat"); + remove (file); + exit (1); + } + remove (file); if (st.st_mtime != ut.modtime) @@ -72,6 +109,18 @@ main (int argc, char *argv[]) if (st.st_atime != ut.actime) { printf ("actime %ld != %ld\n", st.st_atime, ut.actime); + exit (1); + } + + if (stnow.st_mtime < now1 || stnow.st_mtime > now2) + { + printf ("modtime %ld <%ld >%ld\n", st.st_mtime, now1, now2); + exit (1); + } + + if (stnow.st_atime < now1 || stnow.st_atime > now2) + { + printf ("actime %ld <%ld >%ld\n", st.st_atime, now1, now2); exit (1); }
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |