1 /* Substitute for <sys/utsname.h>.
2 Copyright (C) 2009-2024 Free Software Foundation, Inc.
4 This file is free software: you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as
6 published by the Free Software Foundation; either version 2.1 of the
7 License, or (at your option) any later version.
9 This file is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */
17 #ifndef _@GUARD_PREFIX@_SYS_UTSNAME_H
20 @PRAGMA_SYSTEM_HEADER@
24 /* The include_next requires a split double-inclusion guard. */
25 #if @HAVE_SYS_UTSNAME_H@
27 /* Minix 3.1.8 has a bug: <stddef.h> must be included before <sys/utsname.h>.
28 But avoid namespace pollution on glibc systems. */
29 # if defined __minix && !defined __GLIBC__
33 # @INCLUDE_NEXT@ @NEXT_SYS_UTSNAME_H@
37 #ifndef _@GUARD_PREFIX@_SYS_UTSNAME_H
38 #define _@GUARD_PREFIX@_SYS_UTSNAME_H
40 /* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
41 #if !_GL_CONFIG_H_INCLUDED
42 #error "Please include config.h first."
45 /* The definition of _GL_ARG_NONNULL is copied here. */
47 /* The definition of _GL_WARN_ON_USE is copied here. */
54 #if !@HAVE_STRUCT_UTSNAME@
55 /* Length of the entries in 'struct utsname' is 256. */
56 # define _UTSNAME_LENGTH 256
58 # ifndef _UTSNAME_NODENAME_LENGTH
59 # define _UTSNAME_NODENAME_LENGTH _UTSNAME_LENGTH
61 # ifndef _UTSNAME_SYSNAME_LENGTH
62 # define _UTSNAME_SYSNAME_LENGTH _UTSNAME_LENGTH
64 # ifndef _UTSNAME_RELEASE_LENGTH
65 # define _UTSNAME_RELEASE_LENGTH _UTSNAME_LENGTH
67 # ifndef _UTSNAME_VERSION_LENGTH
68 # define _UTSNAME_VERSION_LENGTH _UTSNAME_LENGTH
70 # ifndef _UTSNAME_MACHINE_LENGTH
71 # define _UTSNAME_MACHINE_LENGTH _UTSNAME_LENGTH
74 # if !GNULIB_defined_struct_utsname
75 /* Structure describing the system and machine. */
78 /* Name of this node on the network. */
79 char nodename
[_UTSNAME_NODENAME_LENGTH
];
81 /* Name of the implementation of the operating system. */
82 char sysname
[_UTSNAME_SYSNAME_LENGTH
];
83 /* Current release level of this implementation. */
84 char release
[_UTSNAME_RELEASE_LENGTH
];
85 /* Current version level of this release. */
86 char version
[_UTSNAME_VERSION_LENGTH
];
88 /* Name of the hardware type the system is running on. */
89 char machine
[_UTSNAME_MACHINE_LENGTH
];
91 # define GNULIB_defined_struct_utsname 1
94 #endif /* !@HAVE_STRUCT_UTSNAME@ */
99 extern int uname (struct utsname
*buf
) _GL_ARG_NONNULL ((1));
101 #elif defined GNULIB_POSIXCHECK
103 # if HAVE_RAW_DECL_UNAME
104 _GL_WARN_ON_USE (uname
, "uname is unportable - "
105 "use gnulib module uname for portability");
115 #endif /* _@GUARD_PREFIX@_SYS_UTSNAME_H */
116 #endif /* _@GUARD_PREFIX@_SYS_UTSNAME_H */