2 * Copyright (c) 2002-2005 Roland McGrath <roland@redhat.com>
3 * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
4 * Copyright (c) 2005-2018 Dmitry V. Levin <ldv@altlinux.org>
7 * SPDX-License-Identifier: LGPL-2.1-or-later
12 #ifdef HAVE_SYS_XATTR_H
13 # include <sys/xattr.h>
16 #include "xlat/xattrflags.h"
18 #ifndef XATTR_SIZE_MAX
19 # define XATTR_SIZE_MAX 65536
23 print_xattr_val(struct tcb *const tcp,
24 const kernel_ulong_t addr,
25 const kernel_ulong_t insize,
26 const kernel_ulong_t size)
30 if (size > XATTR_SIZE_MAX)
33 printstr_ex(tcp, addr, size, QUOTE_OMIT_TRAILING_0);
34 tprintf(", %" PRI_klu, insize);
39 printpath(tcp, tcp->u_arg[0]);
41 printstr(tcp, tcp->u_arg[1]);
42 print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_arg[3]);
44 printflags(xattrflags, tcp->u_arg[4], "XATTR_???");
50 printfd(tcp, tcp->u_arg[0]);
52 printstr(tcp, tcp->u_arg[1]);
53 print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_arg[3]);
55 printflags(xattrflags, tcp->u_arg[4], "XATTR_???");
62 printpath(tcp, tcp->u_arg[0]);
64 printstr(tcp, tcp->u_arg[1]);
66 print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_rval);
74 printfd(tcp, tcp->u_arg[0]);
76 printstr(tcp, tcp->u_arg[1]);
78 print_xattr_val(tcp, tcp->u_arg[2], tcp->u_arg[3], tcp->u_rval);
84 print_xattr_list(struct tcb *const tcp, const kernel_ulong_t addr,
85 const kernel_ulong_t size)
87 if (!size || syserror(tcp)) {
90 printstrn(tcp, addr, tcp->u_rval);
92 tprintf(", %" PRI_klu, size);
98 printpath(tcp, tcp->u_arg[0]);
101 print_xattr_list(tcp, tcp->u_arg[1], tcp->u_arg[2]);
109 printfd(tcp, tcp->u_arg[0]);
112 print_xattr_list(tcp, tcp->u_arg[1], tcp->u_arg[2]);
117 SYS_FUNC(removexattr)
119 printpath(tcp, tcp->u_arg[0]);
121 printstr(tcp, tcp->u_arg[1]);
125 SYS_FUNC(fremovexattr)
127 printfd(tcp, tcp->u_arg[0]);
129 printstr(tcp, tcp->u_arg[1]);