Fix touch -a/-m (and add the missing tests).
utimensat takes atime in [0] and mtime in [1], but since we're overwriting
with UTIME_OMIT, we actually want to flip the comparison so -a blats 1 and
-m blats 0.
diff --git a/tests/touch.test b/tests/touch.test
index 263e9a0..da6fe99 100755
--- a/tests/touch.test
+++ b/tests/touch.test
@@ -64,9 +64,15 @@
"touch -t 2101231234 input && date +%Y-%m-%d:%H-%M-%S -r input" \
"$(date +%C)21-01-23:12-34-00\n" "" ""
+testing "-a" "touch -t 197101020304 walrus &&
+ touch -t 197203040506 -a walrus && stat -c '%X %Y' walrus" \
+ "68562360 31662240\n" "" ""
+testing "-m" "touch -t 197101020304 walrus &&
+ touch -t 197203040506 -m walrus && stat -c '%X %Y' walrus" \
+ "31662240 68562360\n" "" ""
+testing "-am" "touch -t 197101020304 walrus &&
+ touch -t 197203040506 -am walrus && stat -c '%X %Y' walrus" \
+ "68562360 68562360\n" "" ""
-#testing "-a"
-#testing "-m"
-#testing "-am"
#testing "-t"
rm walrus walrus2
diff --git a/toys/posix/touch.c b/toys/posix/touch.c
index 79eba17..214d6cf 100644
--- a/toys/posix/touch.c
+++ b/toys/posix/touch.c
@@ -111,7 +111,7 @@
// Which time(s) should we actually change?
i = toys.optflags & (FLAG_a|FLAG_m);
- if (i && i!=(FLAG_a|FLAG_m)) ts[i==FLAG_m].tv_nsec = UTIME_OMIT;
+ if (i && i!=(FLAG_a|FLAG_m)) ts[i!=FLAG_m].tv_nsec = UTIME_OMIT;
// Loop through files on command line
for (ss = toys.optargs; *ss;) {