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) 2012-2015 Dmitry V. Levin <ldv@strace.io>
7 * Copyright (c) 2014-2021 The strace developers.
8 * All rights reserved.
9 *
10 * SPDX-License-Identifier: LGPL-2.1-or-later
11 */
12
13 #include "defs.h"
14 #include <sys/utsname.h>
15
16 SYS_FUNC(uname)
17 {
18 struct utsname uname;
19
20 if (entering(tcp))
21 return 0;
22
23 if (!umove_or_printaddr(tcp, tcp->u_arg[0], &uname)) {
24 tprint_struct_begin();
25 PRINT_FIELD_CSTRING(uname, sysname);
26 tprint_struct_next();
27 PRINT_FIELD_CSTRING(uname, nodename);
28 if (abbrev(tcp)) {
29 tprint_struct_next();
30 tprint_more_data_follows();
31 tprint_struct_end();
32 return 0;
33 }
34 tprint_struct_next();
35 PRINT_FIELD_CSTRING(uname, release);
36 tprint_struct_next();
37 PRINT_FIELD_CSTRING(uname, version);
38 tprint_struct_next();
39 PRINT_FIELD_CSTRING(uname, machine);
40 #ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
41 tprint_struct_next();
42 PRINT_FIELD_CSTRING(uname, domainname);
43 #endif
44 tprint_struct_end();
45 }
46
47 return 0;
48 }