]> granicus.if.org Git - strace/blob - utimes.c
tests: add support of multi-line diagnostics to check_h
[strace] / utimes.c
1 /*
2  * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
3  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
4  * Copyright (c) 1993-1996 Rick Sladkey <jrs@world.std.com>
5  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
6  * Copyright (c) 2006-2007 Ulrich Drepper <drepper@redhat.com>
7  * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
8  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
9  * Copyright (c) 2014-2019 The strace developers.
10  * All rights reserved.
11  *
12  * SPDX-License-Identifier: LGPL-2.1-or-later
13  */
14
15 #include "defs.h"
16
17 SYS_FUNC(utimes)
18 {
19         printpath(tcp, tcp->u_arg[0]);
20         tprints(", ");
21         print_timeval_utimes(tcp, tcp->u_arg[1]);
22
23         return RVAL_DECODED;
24 }
25
26 SYS_FUNC(futimesat)
27 {
28         print_dirfd(tcp, tcp->u_arg[0]);
29         tprints(", ");
30         printpath(tcp, tcp->u_arg[1]);
31         tprints(", ");
32         print_timeval_utimes(tcp, tcp->u_arg[2]);
33
34         return RVAL_DECODED;
35 }
36
37 static int
38 do_utimensat(struct tcb *const tcp, const print_obj_by_addr_fn print_ts)
39 {
40         print_dirfd(tcp, tcp->u_arg[0]);
41         tprints(", ");
42         printpath(tcp, tcp->u_arg[1]);
43         tprints(", ");
44         print_ts(tcp, tcp->u_arg[2]);
45         tprints(", ");
46         printflags(at_flags, tcp->u_arg[3], "AT_???");
47
48         return RVAL_DECODED;
49 }
50
51 #if HAVE_ARCH_TIME32_SYSCALLS
52 SYS_FUNC(utimensat_time32)
53 {
54         return do_utimensat(tcp, print_timespec32_utime_pair);
55 }
56 #endif
57
58 SYS_FUNC(utimensat_time64)
59 {
60         return do_utimensat(tcp, print_timespec64_utime_pair);
61 }
62
63 #ifdef ALPHA
64 SYS_FUNC(osf_utimes)
65 {
66         printpath(tcp, tcp->u_arg[0]);
67         tprints(", ");
68         print_timeval32_utimes(tcp, tcp->u_arg[1]);
69
70         return RVAL_DECODED;
71 }
72 #endif /* ALPHA */