|
@@ -1,5 +1,5 @@
|
|
|
|
|
|
-
|
|
|
+
|
|
|
* Copyright (C) 2009 Bernhard Reutner-Fischer <uClibc@uClibc.org>
|
|
|
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
|
|
*/
|
|
@@ -30,7 +30,16 @@ int do_test(int argc, char **argv) {
|
|
|
char *name;
|
|
|
int i, errors;
|
|
|
errors = argc - argc + 0;
|
|
|
-
|
|
|
+ unsigned has_stat_nsec = 0;
|
|
|
+ {
|
|
|
+ struct stat probe;
|
|
|
+
|
|
|
+ * nanosecond mtime. */
|
|
|
+ if ((!stat(".", &probe)) && probe.st_mtim.tv_nsec)
|
|
|
+ has_stat_nsec = 1;
|
|
|
+ else if ((!stat(argv[0], &probe)) && probe.st_mtim.tv_nsec)
|
|
|
+ has_stat_nsec = 1;
|
|
|
+ }
|
|
|
for (i=0; i < (int) (sizeof(tests)/sizeof(tests[0])); ++i) {
|
|
|
int err, fd;
|
|
|
struct stat sb;
|
|
@@ -44,19 +53,18 @@ int do_test(int argc, char **argv) {
|
|
|
err = futimens(fd, tests[i].ts);
|
|
|
if ((errno && !err) || (!errno && err)) {
|
|
|
err = errno;
|
|
|
- printf("%s: FAILED test %d (errno and return value disagree)\n",
|
|
|
- argv[0], i);
|
|
|
+ printf("FAILED test %d (errno and return value disagree)\n", i);
|
|
|
++errors;
|
|
|
} else
|
|
|
err = errno;
|
|
|
if (err != tests[i].err) {
|
|
|
- printf("%s: FAILED test %d (expected errno %d, got %d)\n",
|
|
|
- argv[0], i, tests[i].err, err);
|
|
|
+ printf("FAILED test %d (expected errno %d, got %d)\n",
|
|
|
+ i, tests[i].err, err);
|
|
|
++errors;
|
|
|
continue;
|
|
|
}
|
|
|
if (stat(name, &sb) < 0) {
|
|
|
- printf("%s: FAILED test %d (verification)\n", argv[0], i);
|
|
|
+ printf("FAILED test %d (verification)\n", i);
|
|
|
++errors;
|
|
|
continue;
|
|
|
} else {
|
|
@@ -65,20 +73,27 @@ int do_test(int argc, char **argv) {
|
|
|
tests[i].ts[1].tv_sec != sb.st_mtim.tv_sec ||
|
|
|
tests[i].ts[1].tv_nsec != sb.st_mtim.tv_nsec;
|
|
|
if (wrong) {
|
|
|
- ++errors;
|
|
|
- if (tests[i].ts[0].tv_sec != sb.st_atim.tv_sec)
|
|
|
- printf("%s: FAILED test %d (access time, sec: expected %ld, got %ld)\n",
|
|
|
- argv[0], i, tests[i].ts[0].tv_sec, sb.st_atim.tv_sec);
|
|
|
- if (tests[i].ts[0].tv_nsec != sb.st_atim.tv_nsec)
|
|
|
- printf("%s: FAILED test %d (access time, nsec: expected %ld, got %ld)\n",
|
|
|
- argv[0], i, tests[i].ts[0].tv_nsec, sb.st_atim.tv_nsec);
|
|
|
+ if (tests[i].ts[0].tv_sec != sb.st_atim.tv_sec) {
|
|
|
+ printf("FAILED test %d (access time, sec: expected %ld, got %ld)\n",
|
|
|
+ i, tests[i].ts[0].tv_sec, sb.st_atim.tv_sec);
|
|
|
+ ++errors;
|
|
|
+ }
|
|
|
+ if (tests[i].ts[0].tv_nsec != sb.st_atim.tv_nsec) {
|
|
|
+ printf("FAILED test %d (access time, nsec: expected %ld, got %ld)\n",
|
|
|
+ i, tests[i].ts[0].tv_nsec, sb.st_atim.tv_nsec);
|
|
|
+ errors += has_stat_nsec;
|
|
|
+ }
|
|
|
|
|
|
- if (tests[i].ts[1].tv_sec != sb.st_mtim.tv_sec)
|
|
|
- printf("%s: FAILED test %d (modification time, sec: expected %ld, got %ld)\n",
|
|
|
- argv[0], i, tests[i].ts[1].tv_sec, sb.st_mtim.tv_sec);
|
|
|
- if (tests[i].ts[1].tv_nsec != sb.st_mtim.tv_nsec)
|
|
|
- printf("%s: FAILED test %d (modification time, nsec: expected %ld, got %ld)\n",
|
|
|
- argv[0], i, tests[i].ts[1].tv_nsec, sb.st_mtim.tv_nsec);
|
|
|
+ if (tests[i].ts[1].tv_sec != sb.st_mtim.tv_sec) {
|
|
|
+ printf("FAILED test %d (modification time, sec: expected %ld, got %ld)\n",
|
|
|
+ i, tests[i].ts[1].tv_sec, sb.st_mtim.tv_sec);
|
|
|
+ ++errors;
|
|
|
+ }
|
|
|
+ if (tests[i].ts[1].tv_nsec != sb.st_mtim.tv_nsec) {
|
|
|
+ printf("FAILED test %d (modification time, nsec: expected %ld, got %ld)\n",
|
|
|
+ i, tests[i].ts[1].tv_nsec, sb.st_mtim.tv_nsec);
|
|
|
+ errors += has_stat_nsec;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|