diff options
Diffstat (limited to 'sysdeps/mach/hurd/sethostid.c')
-rw-r--r-- | sysdeps/mach/hurd/sethostid.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/sysdeps/mach/hurd/sethostid.c b/sysdeps/mach/hurd/sethostid.c index dc8153caa6..64f5e0c1c6 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 <ansidecl.h> -#include <errno.h> #include <unistd.h> #include <hurd.h> +#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; } |