Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 1 | // Copyright 2009 The Go Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
| 5 | // Linux-specific |
| 6 | |
| 7 | package os |
| 8 | |
Alex Brainman | 994e064 | 2012-01-17 16:51:54 +1100 | [diff] [blame] | 9 | func hostname() (name string, err error) { |
Rob Pike | 8a90fd3 | 2011-04-04 23:42:14 -0700 | [diff] [blame] | 10 | f, err := Open("/proc/sys/kernel/hostname") |
Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 11 | if err != nil { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 12 | return "", err |
Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 13 | } |
Robert Griesemer | d65a5cc | 2009-12-15 15:40:16 -0800 | [diff] [blame] | 14 | defer f.Close() |
Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 15 | |
Robert Griesemer | d65a5cc | 2009-12-15 15:40:16 -0800 | [diff] [blame] | 16 | var buf [512]byte // Enough for a DNS name. |
Russ Cox | bb84f4b | 2010-05-27 14:51:47 -0700 | [diff] [blame] | 17 | n, err := f.Read(buf[0:]) |
Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 18 | if err != nil { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 19 | return "", err |
Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 20 | } |
| 21 | |
| 22 | if n > 0 && buf[n-1] == '\n' { |
Robert Griesemer | 40621d5 | 2009-11-09 12:07:39 -0800 | [diff] [blame] | 23 | n-- |
Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 24 | } |
Robert Griesemer | d65a5cc | 2009-12-15 15:40:16 -0800 | [diff] [blame] | 25 | return string(buf[0:n]), nil |
Russ Cox | b32769b | 2009-06-29 13:44:46 -0700 | [diff] [blame] | 26 | } |