about summary refs log tree commit diff
path: root/sysdeps/mach/hurd/gethostid.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach/hurd/gethostid.c')
-rw-r--r--sysdeps/mach/hurd/gethostid.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sysdeps/mach/hurd/gethostid.c b/sysdeps/mach/hurd/gethostid.c
index 5a3309266e..a413a50308 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 <ansidecl.h>
-#include <errno.h>
 #include <unistd.h>
 #include <hurd.h>
+#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);
 }