mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-12 11:48:07 +08:00
@jbenet @whyrusleeping @mappum very helpful for tracking down errors. the stack traces are only shown when debug mode is visible. They function best when caught at the source. I propose we use this errors package as a drop-in replacement for fmt.Errorf and errors.New in all of our code, and use errors.Wrap for external errors as they emerge from others' libraries. License: MIT Signed-off-by: Brian Tiger Chow <brian@perfmode.com> Signed-off-by: Brian Tiger Chow <brian.holderchow@gmail.com>
32 lines
640 B
Go
32 lines
640 B
Go
package daemon
|
|
|
|
import (
|
|
"io"
|
|
"path"
|
|
|
|
lock "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/camlistore/lock"
|
|
"github.com/jbenet/go-ipfs/util"
|
|
"github.com/jbenet/go-ipfs/util/errors"
|
|
)
|
|
|
|
// LockFile is the filename of the daemon lock, relative to config dir
|
|
const LockFile = "daemon.lock"
|
|
|
|
func Lock(confdir string) (io.Closer, error) {
|
|
c, err := lock.Lock(path.Join(confdir, LockFile))
|
|
return c, errors.Wrap(err)
|
|
}
|
|
|
|
func Locked(confdir string) bool {
|
|
if !util.FileExists(path.Join(confdir, LockFile)) {
|
|
return false
|
|
}
|
|
if lk, err := Lock(confdir); err != nil {
|
|
return true
|
|
|
|
} else {
|
|
lk.Close()
|
|
return false
|
|
}
|
|
}
|