aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/app/lock.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/app/lock.go')
-rw-r--r--cmd/app/lock.go22
1 files changed, 11 insertions, 11 deletions
diff --git a/cmd/app/lock.go b/cmd/app/lock.go
index 5a22efba..2a419ea1 100644
--- a/cmd/app/lock.go
+++ b/cmd/app/lock.go
@@ -6,8 +6,8 @@ import (
"os"
"strconv"
"strings"
+ "syscall"
- "hakurei.app/check"
"hakurei.app/fhs"
"hakurei.app/hst"
"hakurei.app/internal/env"
@@ -23,15 +23,15 @@ func (e MutationConflictError) Error() string {
}
// informTemplate guards intention of a template or its derivatives.
-func informTemplate(base *check.Absolute, name string, mutable bool) (func() error, error) {
- mu := lockedfile.MutexAt(base.Append("lock", name).String())
+func informTemplate(b *base, name string, mutable bool) (func() error, error) {
+ mu := lockedfile.MutexAt(b.append("lock", name).String())
if unlock, err := mu.Lock(); err != nil {
return nil, err
} else {
defer unlock()
}
- marker := base.Append("lock", "."+name)
+ marker := b.append("lock", "."+name)
if p, err := os.ReadFile(marker.String()); err == nil {
if _, err = os.Stat(fhs.AbsProc.Append(string(p)).String()); err == nil {
return nil, MutationConflictError(p)
@@ -57,7 +57,7 @@ func informTemplate(base *check.Absolute, name string, mutable bool) (func() err
var s hst.State
for eh := range entries {
s = hst.State{}
- if _, err := eh.Load(&s); err != nil {
+ if _, err := eh.Load(&s, syscall.Kill); err != nil {
return nil, err
}
@@ -71,8 +71,8 @@ func informTemplate(base *check.Absolute, name string, mutable bool) (func() err
if !root.Target.Is(fhs.AbsRoot) ||
len(root.Lower) != 1 ||
- !root.Lower[0].Is(base.Append("initial")) ||
- !root.Upper.Is(base.Append("template", name)) ||
+ !root.Lower[0].Is(b.initial()) ||
+ !root.Upper.Is(b.template(name)) ||
root.Work != nil {
continue
}
@@ -101,12 +101,12 @@ func informTemplate(base *check.Absolute, name string, mutable bool) (func() err
}
// acquireTemplate obtains exclusivity of a template.
-func acquireTemplate(base *check.Absolute, name string) (remove func() error, err error) {
- return informTemplate(base, name, true)
+func acquireTemplate(b *base, name string) (remove func() error, err error) {
+ return informTemplate(b, name, true)
}
// enterTemplate checks against exclusivity of a template.
-func enterTemplate(base *check.Absolute, name string) error {
- _, err := informTemplate(base, name, false)
+func enterTemplate(b *base, name string) error {
+ _, err := informTemplate(b, name, false)
return err
}