From 5fbef188648f5150617e0a14f1011e600f1b3a0f Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 16 Jun 1996 03:49:40 +0000 Subject: * hurd/Makefile (routines): Add get-host, set-host. (distribute): Add hurdhost.h. * hurd/hurdhost.h: New file. * sysdeps/mach/hurd/gethostname.c: Use _hurd_get_host_config. * sysdeps/mach/hurd/gethostid.c: Likewise. * sysdeps/mach/hurd/sethostname.c: Use _hurd_set_host_config. * sysdeps/mach/hurd/sethostid.c: Likewise. * hurd/get-host.c: New file. * hurd/set-host.c: New file. * math/Makefile (headers): Add fpu_control.h. (aux): New variable, list fpu_control and setfpucw. * sysdeps/generic/fpu_control.c: New file. * sysdeps/stub/fpu_control.h: New file. * sysdeps/unix/sysv/linux/m68k/fpu_control.h: Moved to ... * sysdeps/m68k/fpu_control.h: here. * sysdeps/unix/sysv/linux/i386/fpu_control.h: Moved to ... * sysdeps/i386/fpu_control.h: here. * sysdeps/unix/sysv/linux/alpha/fpu_control.h: Moved to ... * sysdeps/alpha/fpu/fpu_control.h: here. Fixed copyright. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove setfpucw, fpu_control. * sysdeps/unix/sysv/linux/alpha/fpu_control.c: File removed. * sysdeps/unix/sysv/linux/setfpucw.c: Moved to ... * sysdeps/generic/setfpucw.c: here. (__fpu_control): Variable removed. (__setfpucw): Use SET even if zero. --- sysdeps/mach/hurd/gethostid.c | 16 +++++++++------- sysdeps/mach/hurd/gethostname.c | 23 +++++------------------ sysdeps/mach/hurd/sethostid.c | 19 +++++++++++++++---- sysdeps/mach/hurd/sethostname.c | 12 +++++------- 4 files changed, 34 insertions(+), 36 deletions(-) (limited to 'sysdeps/mach') diff --git a/sysdeps/mach/hurd/gethostid.c b/sysdeps/mach/hurd/gethostid.c index 5a33092..a413a50 100644 --- a/sysdeps/mach/hurd/gethostid.c +++ b/sysdeps/mach/hurd/gethostid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 96 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 @@ -17,17 +17,19 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include -#include #include #include +#include "hurdhost.h" /* Return the current machine's Internet number. */ long int DEFUN_VOID(gethostid) { - int hostid; - error_t err; - if (err = __USEPORT (PROC, __proc_gethostid (port, &hostid))) - return __hurd_fail (err); - return hostid; + /* The hostid is just the contents of the file /etc/hostid, + kept as text of hexadecimal digits. */ + char buf[8]; + ssize_t n = _hurd_get_host_config ("/etc/hostid", buf, sizeof buf); + if (n < 0) + return -1; + return strtol (buf, NULL, 16); } diff --git a/sysdeps/mach/hurd/gethostname.c b/sysdeps/mach/hurd/gethostname.c index 94a0537..06703ea 100644 --- a/sysdeps/mach/hurd/gethostname.c +++ b/sysdeps/mach/hurd/gethostname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96 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 @@ -17,11 +17,8 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include -#include #include -#include -#include -#include +#include "hurdhost.h" /* Put the name of the current host in no more than LEN bytes of NAME. The result is null-terminated if LEN is large enough for the full @@ -30,19 +27,9 @@ int DEFUN(__gethostname, (name, len), char *name AND size_t len) { - error_t err; - char *buf = name; - mach_msg_type_number_t buflen = len; - if (err = __USEPORT (PROC, __proc_gethostname (port, &buf, &buflen))) - return __hurd_fail (err); - if (buf != name) - { - memcpy (name, buf, len < buflen ? len : buflen); - __vm_deallocate (__mach_task_self (), (vm_address_t) buf, buflen); - } - if (buflen > len) - return __hurd_fail (ENAMETOOLONG); - return 0; + /* The host name is just the contents of the file /etc/hostname. */ + ssize_t n = _hurd_get_host_config ("/etc/hostname", name, len); + return n < 0 ? -1 : 0; } weak_alias (__gethostname, gethostname) diff --git a/sysdeps/mach/hurd/sethostid.c b/sysdeps/mach/hurd/sethostid.c index dc8153c..64f5e0c 100644 --- a/sysdeps/mach/hurd/sethostid.c +++ b/sysdeps/mach/hurd/sethostid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1996 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 @@ -17,15 +17,26 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include -#include #include #include +#include "hurdhost.h" +#include "../stdio-common/_itoa.h" /* Set the current machine's Internet number to ID. This call is restricted to the super-user. */ int DEFUN(sethostid, (id), long int id) { - error_t err = __USEPORT (PROC, __proc_sethostid (port, id)); - return err ? __hurd_fail (err) : 0; + char buf[8], *bp; + ssize_t n; + + /* The hostid is kept in the file /etc/hostid, + eight characters of upper-case hexadecimal. */ + + bp = _itoa_word (id, &buf[sizeof buf], 16, 1); + while (bp > buf) + *--bp = '0'; + + n = _hurd_set_host_config ("/etc/hostid", buf, sizeof buf); + return n < 0 ? -1 : 0; } diff --git a/sysdeps/mach/hurd/sethostname.c b/sysdeps/mach/hurd/sethostname.c index 2c019cf..d07e69d 100644 --- a/sysdeps/mach/hurd/sethostname.c +++ b/sysdeps/mach/hurd/sethostname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 96 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 @@ -17,9 +17,8 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include -#include #include -#include +#include "hurdhost.h" /* Set the name of the current host to NAME, which is LEN bytes long. This call is restricted to the super-user. */ @@ -27,8 +26,7 @@ int DEFUN(sethostname, (name, len), CONST char *name AND size_t len) { - error_t err = __USEPORT (PROC, __proc_sethostname (port, name, len)); - if (err) - return __hurd_fail (err); - return 0; + /* The host name is just the contents of the file /etc/hostname. */ + ssize_t n = _hurd_set_host_config ("/etc/hostname", name, len); + return n < 0 ? -1 : 0; } -- cgit v1.1