From: Bruno Haible Date: Sun, 2 Aug 2009 14:49:23 +0000 (+0200) Subject: New module 'sys_utsname'. X-Git-Tag: v0.1~5721 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=1233d271afb7c3af7e0f4a4e37b1f3d181529c08;p=gnulib.git New module 'sys_utsname'. --- diff --git a/ChangeLog b/ChangeLog index 7c3387eb8..91f83e871 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2009-08-02 Bruno Haible + New module 'sys_utsname'. + * lib/sys_utsname.in.h: New file, based on glibc's . + * m4/sys_utsname_h.m4: New file. + * modules/sys_utsname: New file. + * doc/posix-headers/sys_utsname.texi: Mention the new module. + +2009-08-02 Bruno Haible + Implicitly initialize the sockets library. * lib/gethostname.c: Include sockets.h. (rpl_gethostname): Invoke gl_sockets_startup. diff --git a/doc/posix-headers/sys_utsname.texi b/doc/posix-headers/sys_utsname.texi index d92e29633..538100b5b 100644 --- a/doc/posix-headers/sys_utsname.texi +++ b/doc/posix-headers/sys_utsname.texi @@ -3,15 +3,15 @@ POSIX specification: @url{http://www.opengroup.org/susv3xbd/sys/utsname.h.html} -Gnulib module: --- +Gnulib module: sys_utsname Portability problems fixed by Gnulib: @itemize +@item +This header file is missing on some platforms: +mingw. @end itemize Portability problems not fixed by Gnulib: @itemize -@item -This header file is missing on some platforms: -mingw. @end itemize diff --git a/lib/sys_utsname.in.h b/lib/sys_utsname.in.h new file mode 100644 index 000000000..f8bc0f7ee --- /dev/null +++ b/lib/sys_utsname.in.h @@ -0,0 +1,84 @@ +/* Substitute for . + Copyright (C) 2009 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_SYS_UTSNAME_H +#define _GL_SYS_UTSNAME_H + +/* The definition of GL_LINK_WARNING is copied here. */ + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Length of the entries in 'struct utsname' is 256. */ +#define _UTSNAME_LENGTH 256 + +#ifndef _UTSNAME_NODENAME_LENGTH +# define _UTSNAME_NODENAME_LENGTH _UTSNAME_LENGTH +#endif +#ifndef _UTSNAME_SYSNAME_LENGTH +# define _UTSNAME_SYSNAME_LENGTH _UTSNAME_LENGTH +#endif +#ifndef _UTSNAME_RELEASE_LENGTH +# define _UTSNAME_RELEASE_LENGTH _UTSNAME_LENGTH +#endif +#ifndef _UTSNAME_VERSION_LENGTH +# define _UTSNAME_VERSION_LENGTH _UTSNAME_LENGTH +#endif +#ifndef _UTSNAME_MACHINE_LENGTH +# define _UTSNAME_MACHINE_LENGTH _UTSNAME_LENGTH +#endif + +/* Structure describing the system and machine. */ +struct utsname + { + /* Name of this node on the network. */ + char nodename[_UTSNAME_NODENAME_LENGTH]; + + /* Name of the implementation of the operating system. */ + char sysname[_UTSNAME_SYSNAME_LENGTH]; + /* Current release level of this implementation. */ + char release[_UTSNAME_RELEASE_LENGTH]; + /* Current version level of this release. */ + char version[_UTSNAME_VERSION_LENGTH]; + + /* Name of the hardware type the system is running on. */ + char machine[_UTSNAME_MACHINE_LENGTH]; + }; + + +#if @GNULIB_UNAME@ +# if !@HAVE_UNAME@ +extern int uname (struct utsname *buf); +# endif +#elif defined GNULIB_POSIXCHECK +# undef uname +# define uname(b) \ + (GL_LINK_WARNING ("uname is unportable - " \ + "use gnulib module uname for portability"), \ + uname (b)) +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif /* _GL_SYS_UTSNAME_H */ diff --git a/m4/sys_utsname_h.m4 b/m4/sys_utsname_h.m4 new file mode 100644 index 000000000..2e688fb15 --- /dev/null +++ b/m4/sys_utsname_h.m4 @@ -0,0 +1,34 @@ +# sys_utsname_h.m4 serial 1 +dnl Copyright (C) 2009 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Written by Bruno Haible. + +AC_DEFUN([gl_SYS_UTSNAME_H], +[ + dnl Use AC_REQUIRE here, so that the default behavior below is expanded + dnl once only, before all statements that occur in other macros. + AC_REQUIRE([gl_SYS_UTSNAME_H_DEFAULTS]) + + AC_CHECK_HEADERS_ONCE([sys/utsname.h]) + if test $ac_cv_header_sys_utsname_h != yes; then + SYS_UTSNAME_H='sys/utsname.h' + fi +]) + +AC_DEFUN([gl_SYS_UTSNAME_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_SYS_UTSNAME_H_DEFAULTS]) + GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1 +]) + +AC_DEFUN([gl_SYS_UTSNAME_H_DEFAULTS], +[ + GNULIB_UNAME=0; AC_SUBST([GNULIB_UNAME]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_UNAME=1; AC_SUBST([HAVE_UNAME]) + SYS_UTSNAME_H=''; AC_SUBST([SYS_UTSNAME_H]) +]) diff --git a/modules/sys_utsname b/modules/sys_utsname new file mode 100644 index 000000000..9aff99d9e --- /dev/null +++ b/modules/sys_utsname @@ -0,0 +1,40 @@ +Description: +A for systems which lack it. + +Files: +lib/sys_utsname.in.h +m4/sys_utsname_h.m4 + +Depends-on: +link-warning + +configure.ac: +gl_SYS_UTSNAME_H +AC_PROG_MKDIR_P + +Makefile.am: +BUILT_SOURCES += $(SYS_UTSNAME_H) + +# We need the following in order to create when the system +# does not have one. +sys/utsname.h: sys_utsname.in.h + @MKDIR_P@ sys + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GNULIB_UNAME''@|$(GNULIB_UNAME)|g' \ + -e 's|@''HAVE_UNAME''@|$(HAVE_UNAME)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/sys_utsname.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += sys/utsname.h sys/utsname.h-t +MOSTLYCLEANDIRS += sys + +Include: +#include + +License: +LGPLv2+ + +Maintainer: +Bruno Haible