From 2b25f93f7ad09ec1c2b93e07ceae577b56b44a80 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 21 Jul 1998 10:36:59 +0000 Subject: Update. 1998-07-20 Jose M. Moya * hurd/hurdmsg.c (_S_msg_get_env_variable): Copy getenv return value. 1998-07-20 Roland McGrath * sysdeps/mach/hurd/getdomain.c: New file. * sysdeps/mach/hurd/setdomain.c: New file. 1998-07-20 Roland McGrath * sysdeps/unix/bsd/sigsuspend.c: Define __sigsuspend with sigsuspend as a weak alias. --- ChangeLog | 15 +++++++++++++++ hurd/hurdmsg.c | 16 +++++++++++++--- sysdeps/mach/hurd/getdomain.c | 35 +++++++++++++++++++++++++++++++++++ sysdeps/mach/hurd/setdomain.c | 32 ++++++++++++++++++++++++++++++++ sysdeps/unix/bsd/sigsuspend.c | 5 +++-- sysdeps/unix/sysv/linux/gethostname.c | 4 ++-- 6 files changed, 100 insertions(+), 7 deletions(-) create mode 100644 sysdeps/mach/hurd/getdomain.c create mode 100644 sysdeps/mach/hurd/setdomain.c diff --git a/ChangeLog b/ChangeLog index e19fcede08..2e6cc830e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +1998-07-20 Jose M. Moya + + * hurd/hurdmsg.c (_S_msg_get_env_variable): Copy getenv return + value. + +1998-07-20 Roland McGrath + + * sysdeps/mach/hurd/getdomain.c: New file. + * sysdeps/mach/hurd/setdomain.c: New file. + +1998-07-20 Roland McGrath + + * sysdeps/unix/bsd/sigsuspend.c: Define __sigsuspend with sigsuspend as + a weak alias. + 1998-07-20 18:23 Ulrich Drepper * libio/libioP.h: Use __PMT in typedef. diff --git a/hurd/hurdmsg.c b/hurd/hurdmsg.c index 5fac8d4cd3..2348550611 100644 --- a/hurd/hurdmsg.c +++ b/hurd/hurdmsg.c @@ -315,14 +315,24 @@ _S_msg_get_env_variable (mach_port_t msgport, char *variable, char **data, mach_msg_type_number_t *datalen) { + error_t err; + mach_msg_type_number_t valuelen; const char *value = getenv (variable); if (value == NULL) return ENOENT; - /* XXX this pointer might become invalid */ - *data = value; - *datalen = strlen (value); + valuelen = strlen (value); + if (valuelen > *datalen) + { + if (err = __vm_allocate (__mach_task_self (), + (vm_address_t *) data, valuelen, 1)) + return err; + } + + memcpy (*data, value, valuelen); + *datalen = valuelen; + return 0; } diff --git a/sysdeps/mach/hurd/getdomain.c b/sysdeps/mach/hurd/getdomain.c new file mode 100644 index 0000000000..0f32374bd1 --- /dev/null +++ b/sysdeps/mach/hurd/getdomain.c @@ -0,0 +1,35 @@ +/* Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include +#include "hurdhost.h" + +/* Put the name of the current NIS domain in no more than LEN bytes of NAME. + The result is null-terminated if LEN is large enough for the full + name and the terminator. */ +int +__getdomainname (name, len) + char *name; + size_t len; +{ + /* The NIS domain name is just the contents of the file /etc/nisdomain. */ + ssize_t n = _hurd_get_host_config ("/etc/nisdomain", name, len); + return n < 0 ? -1 : 0; +} + +weak_alias (__getdomainname, getdomainname) diff --git a/sysdeps/mach/hurd/setdomain.c b/sysdeps/mach/hurd/setdomain.c new file mode 100644 index 0000000000..c997d62ddb --- /dev/null +++ b/sysdeps/mach/hurd/setdomain.c @@ -0,0 +1,32 @@ +/* Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include +#include "hurdhost.h" + +/* Set the name of the current YP domain to NAME, which is LEN bytes long. + This call is restricted to the super-user. */ +int +setdomainname (name, len) + const char *name; + size_t len; +{ + /* The NIS domain name is just the contents of the file /etc/nisdomain. */ + ssize_t n = _hurd_set_host_config ("/etc/nisdomain", name, len); + return n < 0 ? -1 : 0; +} diff --git a/sysdeps/unix/bsd/sigsuspend.c b/sysdeps/unix/bsd/sigsuspend.c index d416a5f6c7..a12d1381ac 100644 --- a/sysdeps/unix/bsd/sigsuspend.c +++ b/sysdeps/unix/bsd/sigsuspend.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -25,7 +25,7 @@ /* Change the set of blocked signals to SET, wait until a signal arrives, and restore the set of blocked signals. */ int -sigsuspend (set) +__sigsuspend (set) const sigset_t *set; { int mask; @@ -44,3 +44,4 @@ sigsuspend (set) return __sigpause (mask, 0); } +weak_alias (__sigsuspend, sigsuspend) diff --git a/sysdeps/unix/sysv/linux/gethostname.c b/sysdeps/unix/sysv/linux/gethostname.c index 0e3ca57aca..94a460185e 100644 --- a/sysdeps/unix/sysv/linux/gethostname.c +++ b/sysdeps/unix/sysv/linux/gethostname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,7 +44,7 @@ __gethostname (name, len) node_len = strlen (buf.nodename) + 1; if (node_len > len) { - __set_errno (EINVAL); + __set_errno (ENAMETOOLONG); return -1; } -- cgit v1.2.3