From f44b2c1a4a7dda869ac9c8187da6b3e98cfff611 Mon Sep 17 00:00:00 2001 From: Richard Gooch Date: Thu, 4 Apr 2019 11:28:45 -0700 Subject: [PATCH] Make lib/wsyscall compile for Windoze. --- lib/wsyscall/api.go | 14 ++--------- lib/wsyscall/wrappers_darwin.go | 18 ++++++++++++++ lib/wsyscall/wrappers_linux.go | 18 ++++++++++++++ lib/wsyscall/wrappers_windows.go | 40 ++++++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 12 deletions(-) create mode 100644 lib/wsyscall/wrappers_windows.go diff --git a/lib/wsyscall/api.go b/lib/wsyscall/api.go index cd2f732b..692f1732 100644 --- a/lib/wsyscall/api.go +++ b/lib/wsyscall/api.go @@ -59,12 +59,7 @@ func Ioctl(fd int, request, argp uintptr) error { } func Lstat(path string, statbuf *Stat_t) error { - var rawStatbuf syscall.Stat_t - if err := syscall.Lstat(path, &rawStatbuf); err != nil { - return err - } - convertStat(statbuf, &rawStatbuf) - return nil + return lstat(path, statbuf) } func Mount(source string, target string, fstype string, flags uintptr, @@ -89,12 +84,7 @@ func SetNetNamespace(fd int) error { } func Stat(path string, statbuf *Stat_t) error { - var rawStatbuf syscall.Stat_t - if err := syscall.Stat(path, &rawStatbuf); err != nil { - return err - } - convertStat(statbuf, &rawStatbuf) - return nil + return stat(path, statbuf) } func UnshareMountNamespace() error { diff --git a/lib/wsyscall/wrappers_darwin.go b/lib/wsyscall/wrappers_darwin.go index c4c77956..a4e72f31 100644 --- a/lib/wsyscall/wrappers_darwin.go +++ b/lib/wsyscall/wrappers_darwin.go @@ -22,6 +22,15 @@ func fallocate(fd int, mode uint32, off int64, len int64) error { return syscall.ENOTSUP } +func lstat(path string, statbuf *Stat_t) error { + var rawStatbuf syscall.Stat_t + if err := syscall.Lstat(path, &rawStatbuf); err != nil { + return err + } + convertStat(statbuf, &rawStatbuf) + return nil +} + func mount(source string, target string, fstype string, flags uintptr, data string) error { return syscall.ENOTSUP @@ -72,6 +81,15 @@ func setNetNamespace(namespaceFd int) error { return syscall.ENOTSUP } +func stat(path string, statbuf *Stat_t) error { + var rawStatbuf syscall.Stat_t + if err := syscall.Stat(path, &rawStatbuf); err != nil { + return err + } + convertStat(statbuf, &rawStatbuf) + return nil +} + func unshareNetNamespace() (int, int, error) { return -1, -1, syscall.ENOTSUP } diff --git a/lib/wsyscall/wrappers_linux.go b/lib/wsyscall/wrappers_linux.go index b493dfec..47a12cde 100644 --- a/lib/wsyscall/wrappers_linux.go +++ b/lib/wsyscall/wrappers_linux.go @@ -30,6 +30,15 @@ func fallocate(fd int, mode uint32, off int64, len int64) error { return syscall.Fallocate(fd, mode, off, len) } +func lstat(path string, statbuf *Stat_t) error { + var rawStatbuf syscall.Stat_t + if err := syscall.Lstat(path, &rawStatbuf); err != nil { + return err + } + convertStat(statbuf, &rawStatbuf) + return nil +} + func mount(source string, target string, fstype string, flags uintptr, data string) error { var linuxFlags uintptr @@ -93,6 +102,15 @@ func setNetNamespace(namespaceFd int) error { } +func stat(path string, statbuf *Stat_t) error { + var rawStatbuf syscall.Stat_t + if err := syscall.Stat(path, &rawStatbuf); err != nil { + return err + } + convertStat(statbuf, &rawStatbuf) + return nil +} + func unshareMountNamespace() error { // Pin goroutine to OS thread. This hack is required because // syscall.Unshare() operates on only one thread in the process, and Go diff --git a/lib/wsyscall/wrappers_windows.go b/lib/wsyscall/wrappers_windows.go new file mode 100644 index 00000000..4c11dfca --- /dev/null +++ b/lib/wsyscall/wrappers_windows.go @@ -0,0 +1,40 @@ +package wsyscall + +import "syscall" + +func fallocate(fd int, mode uint32, off int64, len int64) error { + return syscall.ENOTSUP +} + +func lstat(path string, statbuf *Stat_t) error { + return syscall.ENOTSUP +} + +func mount(source string, target string, fstype string, flags uintptr, + data string) error { + return syscall.ENOTSUP +} + +func getrusage(who int, rusage *Rusage) error { + return syscall.ENOTSUP +} + +func setAllGid(gid int) error { + return syscall.ENOTSUP +} + +func setAllUid(uid int) error { + return syscall.ENOTSUP +} + +func setNetNamespace(namespaceFd int) error { + return syscall.ENOTSUP +} + +func unshareNetNamespace() (int, int, error) { + return -1, -1, syscall.ENOTSUP +} + +func unshareMountNamespace() error { + return syscall.ENOTSUP +}