From a0d72fb00c5ab2d1a48fd7d9ce35349aa1ba3db1 Mon Sep 17 00:00:00 2001 From: Barak Michener Date: Thu, 18 Dec 2014 13:44:29 -0500 Subject: [PATCH] Fix building the lock on windows --- pkg/fileutil/{lock.go => lock_unix.go} | 2 + pkg/fileutil/lock_windows.go | 57 ++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) rename pkg/fileutil/{lock.go => lock_unix.go} (97%) create mode 100644 pkg/fileutil/lock_windows.go diff --git a/pkg/fileutil/lock.go b/pkg/fileutil/lock_unix.go similarity index 97% rename from pkg/fileutil/lock.go rename to pkg/fileutil/lock_unix.go index d3c8e9eff..ccf5106c5 100644 --- a/pkg/fileutil/lock.go +++ b/pkg/fileutil/lock_unix.go @@ -1,3 +1,5 @@ +// +build !windows,!plan9 + package fileutil import ( diff --git a/pkg/fileutil/lock_windows.go b/pkg/fileutil/lock_windows.go new file mode 100644 index 000000000..cdd4e7795 --- /dev/null +++ b/pkg/fileutil/lock_windows.go @@ -0,0 +1,57 @@ +// +build windows + +package fileutil + +import ( + "errors" + "os" +) + +var ( + ErrLocked = errors.New("file already locked") +) + +type Lock interface { + Name() string + TryLock() error + Lock() error + Unlock() error + Destroy() error +} + +type lock struct { + fd int + file *os.File +} + +func (l *lock) Name() string { + return l.file.Name() +} + +// TryLock acquires exclusivity on the lock without blocking +func (l *lock) TryLock() error { + return nil +} + +// Lock acquires exclusivity on the lock without blocking +func (l *lock) Lock() error { + return nil +} + +// Unlock unlocks the lock +func (l *lock) Unlock() error { + return nil +} + +func (l *lock) Destroy() error { + return l.file.Close() +} + +func NewLock(file string) (Lock, error) { + f, err := os.Open(file) + if err != nil { + return nil, err + } + l := &lock{int(f.Fd()), f} + return l, nil +}