Add Solaris version of os.Hostname.

From-SVN: r169350
This commit is contained in:
Ian Lance Taylor 2011-01-28 01:44:55 +00:00
parent 0047207685
commit 51677e0338
3 changed files with 45 additions and 2 deletions

View File

@ -657,6 +657,20 @@ go_netchan_files = \
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_files = \
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

View File

@ -1037,6 +1037,10 @@ go_netchan_files = \
go/netchan/export.go \
go/netchan/import.go
@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_FALSE@@LIBGO_IS_SOLARIS_FALSE@go_os_sys_file = go/os/sys_bsd.go
@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_RTEMS_TRUE@@LIBGO_IS_SOLARIS_FALSE@go_os_sys_file = go/os/sys_uname.go
@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@go_os_sys_file = go/os/sys_uname.go
@LIBGO_IS_LINUX_TRUE@go_os_sys_file = go/os/sys_linux.go
go_os_files = \
go/os/dir.go \
go/os/env.go \
@ -1049,7 +1053,7 @@ go_os_files = \
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

25
libgo/go/os/sys_uname.go Normal file
View File

@ -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
}