2 * Check decoding of utime syscall.
4 * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
5 * Copyright (c) 2015-2018 The strace developers.
8 * SPDX-License-Identifier: GPL-2.0-or-later
12 #include <asm/unistd.h>
23 k_utime(const void *const filename, const void *const times)
25 return syscall(__NR_utime, filename, times);
31 static const char *const dummy_str = "dummy filename";
33 const time_t t = 1492350678;
34 const struct utimbuf u = { .actime = t, .modtime = t };
35 const struct utimbuf *const tail_u = tail_memdup(&u, sizeof(u));
36 const char *const dummy_filename =
37 tail_memdup(dummy_str, sizeof(dummy_str) - 1);
39 long rc = k_utime("", NULL);
40 printf("utime(\"\", NULL) = %s\n", sprintrc(rc));
42 rc = k_utime(dummy_filename + sizeof(dummy_str), tail_u + 1);
43 printf("utime(%p, %p) = %s\n", dummy_filename + sizeof(dummy_str),
44 tail_u + 1, sprintrc(rc));
46 rc = k_utime(dummy_filename, (struct tm *) tail_u + 1);
47 printf("utime(%p, %p) = %s\n",
48 dummy_filename, (struct tm *) tail_u + 1, sprintrc(rc));
50 rc = k_utime("utime\nfilename", tail_u);
51 const char *errstr = sprintrc(rc);
52 printf("utime(\"utime\\nfilename\", {actime=%lld", (long long) t);
53 print_time_t_nsec(t, 0, 1);
54 printf(", modtime=%lld", (long long) t);
55 print_time_t_nsec(t, 0, 1);
56 printf("}) = %s\n", errstr);
58 puts("+++ exited with 0 +++");
64 SKIP_MAIN_UNDEFINED("__NR_utime")