* print_timeval.c (print_timeval_item): New function.
(print_timeval_pair): Use it as a print_function in print_array call.
* tests/futimesat.c (main): Update to test new behaviour.
* tests/utimes.c (main): Likewise.
print_timeval_t(&t);
}
+static bool
+print_timeval_item(struct tcb *tcp, void *elem_buf, size_t size, void *data)
+{
+ timeval_t *t = elem_buf;
+
+ print_timeval_t(t);
+
+ return true;
+}
+
MPERS_PRINTER_DECL(void, print_timeval_pair,
struct tcb *tcp, const long addr)
{
- timeval_t t[2];
-
- if (umove_or_printaddr(tcp, addr, &t))
- return;
+ timeval_t t;
- tprints("[");
- print_timeval_t(&t[0]);
- tprints(", ");
- print_timeval_t(&t[1]);
- tprints("]");
+ print_array(tcp, addr, 2, &t, sizeof(t), umoven_or_printaddr,
+ print_timeval_item, NULL);
}
MPERS_PRINTER_DECL(const char *, sprint_timeval,
struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
dirfd = (unsigned long) 0xdeadbeefffffffffULL;
- rc = syscall(__NR_futimesat, dirfd, 0, ts + 1);
- printf("futimesat(%d, NULL, %p) = %ld %s (%m)\n",
- (int) dirfd, ts + 1, rc, errno2name());
-
ts[0].tv_sec = tv.tv_sec;
ts[0].tv_usec = tv.tv_usec;
ts[1].tv_sec = tv.tv_sec - 1;
ts[1].tv_usec = tv.tv_usec + 1;
+ rc = syscall(__NR_futimesat, dirfd, 0, ts + 2);
+ printf("futimesat(%d, NULL, %p) = %ld %s (%m)\n",
+ (int) dirfd, ts + 2, rc, errno2name());
+
+ rc = syscall(__NR_futimesat, dirfd, 0, ts + 1);
+ printf("futimesat(%d, NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
+ "%ld %s (%m)\n", (int) dirfd,
+ (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
+ ts + 2, rc, errno2name());
+
(void) close(0);
rc = syscall(__NR_futimesat, 0, "", ts);
printf("futimesat(0, \"\", [{tv_sec=%jd, tv_usec=%jd}, "
struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
- rc = syscall(__NR_utimes, 0, ts + 1);
- printf("utimes(NULL, %p) = %ld %s (%m)\n",
- ts + 1, rc, errno2name());
-
ts[0].tv_sec = tv.tv_sec;
ts[0].tv_usec = tv.tv_usec;
ts[1].tv_sec = tv.tv_sec - 1;
ts[1].tv_usec = tv.tv_usec + 1;
+ rc = syscall(__NR_utimes, 0, ts + 2);
+ printf("utimes(NULL, %p) = %ld %s (%m)\n", ts + 2, rc, errno2name());
+
+ rc = syscall(__NR_utimes, 0, ts + 1);
+ printf("utimes(NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
+ "%ld %s (%m)\n",
+ (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
+ ts + 2, rc, errno2name());
+
rc = syscall(__NR_utimes, "", ts);
printf("utimes(\"\", [{tv_sec=%jd, tv_usec=%jd}, "
"{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",