aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Sing <jsing@google.com>2011-08-08 09:56:36 -0400
committerRuss Cox <rsc@golang.org>2011-08-08 09:56:36 -0400
commit604b91a43ec7532b100104db183983c1dd775b75 (patch)
treedcba6d46dceaa61edd1dce64ce90ff5136eac0a9
parent9c2ebab82686e31ec09b87a6cdb946a2ef2e1e2e (diff)
downloadgo-604b91a43ec7532b100104db183983c1dd775b75.tar.gz
go-604b91a43ec7532b100104db183983c1dd775b75.zip
os: add support for openbsd
R=rsc CC=golang-dev https://golang.org/cl/4798061
-rw-r--r--src/pkg/os/Makefile12
-rw-r--r--src/pkg/os/stat_openbsd.go32
2 files changed, 44 insertions, 0 deletions
diff --git a/src/pkg/os/Makefile b/src/pkg/os/Makefile
index 354e1e8db5..8923a8b480 100644
--- a/src/pkg/os/Makefile
+++ b/src/pkg/os/Makefile
@@ -53,6 +53,18 @@ GOFILES_linux=\
exec_unix.go\
signal_unix.go\
+GOFILES_openbsd=\
+ dir_unix.go\
+ error_posix.go\
+ env_unix.go\
+ file_posix.go\
+ file_unix.go\
+ path_unix.go\
+ sys_bsd.go\
+ exec_posix.go\
+ exec_unix.go\
+ signal_unix.go\
+
GOFILES_windows=\
dir_windows.go\
error_posix.go\
diff --git a/src/pkg/os/stat_openbsd.go b/src/pkg/os/stat_openbsd.go
new file mode 100644
index 0000000000..6d3a3813b0
--- /dev/null
+++ b/src/pkg/os/stat_openbsd.go
@@ -0,0 +1,32 @@
+// 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 "syscall"
+
+func isSymlink(stat *syscall.Stat_t) bool {
+ return stat.Mode&syscall.S_IFMT == syscall.S_IFLNK
+}
+
+func fileInfoFromStat(name string, fi *FileInfo, lstat, stat *syscall.Stat_t) *FileInfo {
+ fi.Dev = uint64(stat.Dev)
+ fi.Ino = uint64(stat.Ino)
+ fi.Nlink = uint64(stat.Nlink)
+ fi.Mode = uint32(stat.Mode)
+ fi.Uid = int(stat.Uid)
+ fi.Gid = int(stat.Gid)
+ fi.Rdev = uint64(stat.Rdev)
+ fi.Size = int64(stat.Size)
+ fi.Blksize = int64(stat.Blksize)
+ fi.Blocks = stat.Blocks
+ fi.Atime_ns = syscall.TimespecToNsec(stat.Atim)
+ fi.Mtime_ns = syscall.TimespecToNsec(stat.Mtim)
+ fi.Ctime_ns = syscall.TimespecToNsec(stat.Ctim)
+ fi.Name = basename(name)
+ if isSymlink(lstat) && !isSymlink(stat) {
+ fi.FollowedSymlink = true
+ }
+ return fi
+}