(root)/
strace-6.5/
src/
uname.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) 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  }