mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-15 08:29:31 +01:00
25 lines
404 B
Go
25 lines
404 B
Go
//go:build !(plan9 || solaris)
|
|
|
|
package flock
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/gofrs/flock"
|
|
)
|
|
|
|
var (
|
|
CouldntAcquire = errors.New("Couldn't acquire flock (is another Ergo running?)")
|
|
)
|
|
|
|
func TryAcquireFlock(path string) (fl Flocker, err error) {
|
|
f := flock.New(path)
|
|
success, err := f.TryLock()
|
|
if err != nil {
|
|
return nil, err
|
|
} else if !success {
|
|
return nil, CouldntAcquire
|
|
}
|
|
return f, nil
|
|
}
|