Mercurial > octave
changeset 21895:e171851ca344
hide sys/utsname header
* liboctave/wrappers/uname-wrapper.c,
liboctave/wrappers/uname-wrapper.h: New files.
* liboctave/wrappers/module.mk: Update.
* oct-uname.cc: Use new octave_uname_wrapper function.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 14 Jun 2016 11:35:23 -0400 |
parents | 67a5cb9cd941 |
children | 83c824c727c9 |
files | liboctave/system/oct-uname.cc liboctave/wrappers/module.mk liboctave/wrappers/uname-wrapper.c liboctave/wrappers/uname-wrapper.h |
diffstat | 4 files changed, 112 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/system/oct-uname.cc Tue Jun 14 10:47:10 2016 -0400 +++ b/liboctave/system/oct-uname.cc Tue Jun 14 11:35:23 2016 -0400 @@ -27,9 +27,8 @@ #include <cerrno> #include <cstring> -#include <sys/utsname.h> - #include "oct-uname.h" +#include "uname-wrapper.h" namespace octave { @@ -38,19 +37,20 @@ void uname::init (void) { - struct utsname unm; + char *sysname, *nodename, *release, *version, *machine; - err = ::uname (&unm); + err = octave_uname_wrapper (&sysname, &nodename, &release, + &version, &machine); if (err < 0) msg = gnulib::strerror (errno); else { - m_sysname = unm.sysname; - m_nodename = unm.nodename; - m_release = unm.release; - m_version = unm.version; - m_machine = unm.machine; + m_sysname = sysname; + m_nodename = nodename; + m_release = release; + m_version = version; + m_machine = machine; } } }
--- a/liboctave/wrappers/module.mk Tue Jun 14 10:47:10 2016 -0400 +++ b/liboctave/wrappers/module.mk Tue Jun 14 11:35:23 2016 -0400 @@ -11,6 +11,7 @@ liboctave/wrappers/set-program-name-wrapper.h \ liboctave/wrappers/strftime-wrapper.h \ liboctave/wrappers/strptime-wrapper.h \ + liboctave/wrappers/uname-wrapper.h \ liboctave/wrappers/unsetenv-wrapper.h \ liboctave/wrappers/vasprintf-wrapper.h @@ -27,6 +28,7 @@ liboctave/wrappers/set-program-name-wrapper.c \ liboctave/wrappers/strftime-wrapper.c \ liboctave/wrappers/strptime-wrapper.c \ + liboctave/wrappers/uname-wrapper.c \ liboctave/wrappers/unsetenv-wrapper.c \ liboctave/wrappers/vasprintf-wrapper.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/liboctave/wrappers/uname-wrapper.c Tue Jun 14 11:35:23 2016 -0400 @@ -0,0 +1,63 @@ +/* + +Copyright (C) 2016 John W. Eaton + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +// uname may be provided by gnulib. We don't include gnulib headers +// directly in Octave's C++ source files to avoid problems that may be +// caused by the way that gnulib overrides standard library functions. + +#if defined (HAVE_CONFIG_H) +# include "config.h" +#endif + +#include <sys/utsname.h> + +#include "uname-wrapper.h" + +// Returns pointers to static storage. + +int +octave_uname_wrapper (char **sysname, char **nodename, + char **release, char **version, char **machine) +{ + static struct utsname unm; + + int err = uname (&unm); + + if (err == 0) + { + *sysname = unm.sysname; + *nodename = unm.nodename; + *release = unm.release; + *version = unm.version; + *machine = unm.machine; + } + else + { + *sysname = 0; + *nodename = 0; + *release = 0; + *version = 0; + *machine = 0; + } + + return err; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/liboctave/wrappers/uname-wrapper.h Tue Jun 14 11:35:23 2016 -0400 @@ -0,0 +1,38 @@ +/* + +Copyright (C) 2016 John W. Eaton + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +#if ! defined (octave_uname_wrapper_h) +#define octave_uname_wrapper_h 1 + +#if defined __cplusplus +extern "C" { +#endif + +extern int +octave_uname_wrapper (char **sysname, char **nodename, + char **release, char **version, char **machine); + +#if defined __cplusplus +} +#endif + +#endif