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 Ulrich Drepper <drepper@redhat.com>
7 * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
8 * Copyright (c) 2006-2021 Dmitry V. Levin <ldv@strace.io>
9 * All rights reserved.
10 *
11 * SPDX-License-Identifier: LGPL-2.1-or-later
12 */
13
14 #include "defs.h"
15 #include <linux/fcntl.h>
16 #include "xlat/at_flags.h"
17
18 SYS_FUNC(link)
19 {
20 /* oldpath */
21 printpath(tcp, tcp->u_arg[0]);
22 tprint_arg_next();
23
24 /* newpath */
25 printpath(tcp, tcp->u_arg[1]);
26
27 return RVAL_DECODED;
28 }
29
30 SYS_FUNC(linkat)
31 {
32 /* olddirfd */
33 print_dirfd(tcp, tcp->u_arg[0]);
34 tprint_arg_next();
35
36 /* oldpath */
37 printpath(tcp, tcp->u_arg[1]);
38 tprint_arg_next();
39
40 /* newdirfd */
41 print_dirfd(tcp, tcp->u_arg[2]);
42 tprint_arg_next();
43
44 /* newpath */
45 printpath(tcp, tcp->u_arg[3]);
46 tprint_arg_next();
47
48 /* flags */
49 printflags(at_flags, tcp->u_arg[4], "AT_???");
50
51 return RVAL_DECODED;
52 }
53
54 SYS_FUNC(unlinkat)
55 {
56 /* dirfd */
57 print_dirfd(tcp, tcp->u_arg[0]);
58 tprint_arg_next();
59
60 /* pathname */
61 printpath(tcp, tcp->u_arg[1]);
62 tprint_arg_next();
63
64 /* flags */
65 printflags(at_flags, tcp->u_arg[2], "AT_???");
66
67 return RVAL_DECODED;
68 }
69
70 SYS_FUNC(symlinkat)
71 {
72 /* target */
73 printpath(tcp, tcp->u_arg[0]);
74 tprint_arg_next();
75
76 /* newdirfd */
77 print_dirfd(tcp, tcp->u_arg[1]);
78 tprint_arg_next();
79
80 /* linkpath */
81 printpath(tcp, tcp->u_arg[2]);
82
83 return RVAL_DECODED;
84 }