Patchwork libgo patch committed: Add Solaris version of os.Hostname

login
register
mail settings
Submitter Ian Taylor
Date Jan. 28, 2011, 1:45 a.m.
Message ID <mcripx9n6mw.fsf@google.com>
Download mbox | patch
Permalink /patch/80760/
State New
Headers show

Comments

Ian Taylor - Jan. 28, 2011, 1:45 a.m.
This libgo patch adds a Solaris version of os.Hostname.  I tested it by
trying this version on GNU/Linux.  This may also give a better result
for os.Hostname on RTEMS.  Bootstrapped on x86_64-unknown-linux-gnu.
Committed to mainline.

Ian

Patch

diff -r bbb7eb7edc26 libgo/Makefile.am
--- a/libgo/Makefile.am	Thu Jan 27 16:10:15 2011 -0800
+++ b/libgo/Makefile.am	Thu Jan 27 17:42:44 2011 -0800
@@ -657,6 +657,20 @@ 
 	go/netchan/export.go \
 	go/netchan/import.go
 
+if LIBGO_IS_LINUX
+go_os_sys_file = go/os/sys_linux.go
+else
+if LIBGO_IS_SOLARIS
+go_os_sys_file = go/os/sys_uname.go
+else
+if LIBGO_IS_RTEMS
+go_os_sys_file = go/os/sys_uname.go
+else
+go_os_sys_file = go/os/sys_bsd.go
+endif
+endif
+endif
+
 go_os_files = \
 	go/os/dir.go \
 	go/os/env.go \
@@ -669,7 +683,7 @@ 
 	go/os/path.go \
 	go/os/proc.go \
 	go/os/stat.go \
-	go/os/sys_linux.go \
+	$(go_os_sys_file) \
 	go/os/time.go \
 	go/os/types.go
 
diff -r bbb7eb7edc26 libgo/go/os/sys_uname.go
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgo/go/os/sys_uname.go	Thu Jan 27 17:42:44 2011 -0800
@@ -0,0 +1,25 @@ 
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// For systems which only store the hostname in uname (Solaris).
+
+package os
+
+import "syscall"
+
+func Hostname() (name string, err Error) {
+	var u syscall.Utsname
+	if errno := syscall.Uname(&u); errno != 0 {
+		return "", NewSyscallError("uname", errno)
+	}
+	b := make([]byte, len(u.Nodename))
+	i := 0
+	for ; i < len(u.Nodename); i++ {
+		if u.Nodename[i] == 0 {
+			break
+		}
+		b[i] = byte(u.Nodename[i])
+	}
+	return string(b[:i]), nil
+}