aboutsummaryrefslogtreecommitdiffhomepage
path: root/pkg/pkg.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/pkg.go')
-rw-r--r--pkg/pkg.go20
1 files changed, 18 insertions, 2 deletions
diff --git a/pkg/pkg.go b/pkg/pkg.go
index 75e0d1b1..3515f99f 100644
--- a/pkg/pkg.go
+++ b/pkg/pkg.go
@@ -206,7 +206,7 @@ func (t *TContext) prepareStatus(writeHeader bool) error {
if t.status, t.statusErr = os.OpenFile(
t.statusPath.String(),
syscall.O_CREAT|syscall.O_EXCL|syscall.O_WRONLY,
- 0400,
+ 0444,
); t.statusErr != nil {
return t.statusErr
}
@@ -364,6 +364,9 @@ func (f *FContext) linkSubstitute(ids, substitutes string) (err error) {
if err == nil {
f.statusSPath = statusS
}
+ if errors.Is(err, os.ErrExist) {
+ err = nil
+ }
return
}
@@ -2798,7 +2801,6 @@ func Open(
dirSubstitute,
dirIdentifier,
dirChecksum,
- dirStatus,
dirFault,
dirWork,
} {
@@ -2810,6 +2812,17 @@ func Open(
}
}
+ for _, name := range []string{
+ dirStatus,
+ } {
+ if err := os.MkdirAll(
+ base.Append(name).String(),
+ 0711,
+ ); err != nil && !errors.Is(err, os.ErrExist) {
+ return nil, err
+ }
+ }
+
c := Cache{
parent: ctx,
@@ -2923,6 +2936,9 @@ func Open(
return &c, nil
}
+// Path returns the pathname of the directory holding [Cache] state.
+func (c *Cache) Path() *check.Absolute { return c.base }
+
// Collected is returned by [Collect.Cure] to indicate a successful collection.
type Collected struct{}