mirror of
https://github.com/golang/go
synced 2024-11-19 04:34:39 -07:00
5a986eca86
a -> an Change-Id: I7362bdc199e83073a712be657f5d9ba16df3077e Reviewed-on: https://go-review.googlesource.com/63850 Reviewed-by: Rob Pike <r@golang.org>
34 lines
874 B
Go
34 lines
874 B
Go
// Copyright 2009 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.
|
|
|
|
package os
|
|
|
|
import (
|
|
"internal/syscall/windows"
|
|
"syscall"
|
|
)
|
|
|
|
func hostname() (name string, err error) {
|
|
// Use PhysicalDnsHostname to uniquely identify host in a cluster
|
|
const format = windows.ComputerNamePhysicalDnsHostname
|
|
|
|
n := uint32(64)
|
|
for {
|
|
b := make([]uint16, n)
|
|
err := windows.GetComputerNameEx(format, &b[0], &n)
|
|
if err == nil {
|
|
return syscall.UTF16ToString(b[:n]), nil
|
|
}
|
|
if err != syscall.ERROR_MORE_DATA {
|
|
return "", NewSyscallError("ComputerNameEx", err)
|
|
}
|
|
|
|
// If we received an ERROR_MORE_DATA, but n doesn't get larger,
|
|
// something has gone wrong and we may be in an infinite loop
|
|
if n <= uint32(len(b)) {
|
|
return "", NewSyscallError("ComputerNameEx", err)
|
|
}
|
|
}
|
|
}
|