aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/initproc.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-21 00:18:50 +0900
committerOphestra <cat@gensokyo.uk>2025-08-21 00:18:50 +0900
commit5d8a2199b6c8dc5f75b529a39d196c6cb14c98c2 (patch)
tree5ad693466483081342b24df929365490015b4efa /container/initproc.go
parenta1482ecdd0f98728f4b97137cd7b2fa17f67bb89 (diff)
container/init: op interface valid method
Check ops early and eliminate duplicate checks. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/initproc.go')
-rw-r--r--container/initproc.go12
1 files changed, 4 insertions, 8 deletions
diff --git a/container/initproc.go b/container/initproc.go
index d3c37535..9b9769cd 100644
--- a/container/initproc.go
+++ b/container/initproc.go
@@ -16,15 +16,11 @@ func (f *Ops) Proc(target *Absolute) *Ops {
}
// MountProcOp mounts a new instance of [FstypeProc] on container path Target.
-type MountProcOp struct {
- Target *Absolute
-}
+type MountProcOp struct{ Target *Absolute }
+func (p *MountProcOp) Valid() bool { return p != nil && p.Target != nil }
func (p *MountProcOp) early(*setupState) error { return nil }
func (p *MountProcOp) apply(state *setupState) error {
- if p.Target == nil {
- return EBADE
- }
target := toSysroot(p.Target.String())
if err := os.MkdirAll(target, state.ParentPerm); err != nil {
return wrapErrSelf(err)
@@ -35,8 +31,8 @@ func (p *MountProcOp) apply(state *setupState) error {
func (p *MountProcOp) Is(op Op) bool {
vp, ok := op.(*MountProcOp)
- return ok && ((p == nil && vp == nil) ||
- (p.Target != nil && vp.Target != nil && p.Target.Is(vp.Target)))
+ return ok && p.Valid() && vp.Valid() &&
+ p.Target.Is(vp.Target)
}
func (*MountProcOp) prefix() string { return "mounting" }
func (p *MountProcOp) String() string { return fmt.Sprintf("proc on %q", p.Target) }