diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-08-11 02:52:32 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-08-11 04:56:42 +0900 |
| commit | e99d7affb0c128fa82722f9b3d79c99b5e5918cd (patch) | |
| tree | 387e08d6c4363d8b9e0462f069c140fbdb15c917 /container/autoroot.go | |
| parent | 41ac2be9658b49c68cb793f3a6f0c5932d82e1c2 (diff) | |
container: use absolute for pathname
This is simultaneously more efficient and less error-prone. This change caused minor API changes in multiple other packages.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/autoroot.go')
| -rw-r--r-- | container/autoroot.go | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/container/autoroot.go b/container/autoroot.go index 5ed9b6c7..70b504eb 100644 --- a/container/autoroot.go +++ b/container/autoroot.go @@ -4,21 +4,21 @@ import ( "encoding/gob" "fmt" "os" - "path" - . "syscall" + "syscall" ) func init() { gob.Register(new(AutoRootOp)) } // Root appends an [Op] that expands a directory into a toplevel bind mount mirror on container root. // This is not a generic setup op. It is implemented here to reduce ipc overhead. -func (f *Ops) Root(host, prefix string, flags int) *Ops { +func (f *Ops) Root(host *Absolute, prefix string, flags int) *Ops { *f = append(*f, &AutoRootOp{host, prefix, flags, nil}) return f } type AutoRootOp struct { - Host, Prefix string + Host *Absolute + Prefix string // passed through to bindMount Flags int @@ -29,11 +29,11 @@ type AutoRootOp struct { } func (r *AutoRootOp) early(params *Params) error { - if !path.IsAbs(r.Host) { - return msg.WrapErr(EBADE, fmt.Sprintf("path %q is not absolute", r.Host)) + if r.Host == nil { + return syscall.EBADE } - if d, err := os.ReadDir(r.Host); err != nil { + if d, err := os.ReadDir(r.Host.String()); err != nil { return wrapErrSelf(err) } else { r.resolved = make([]Op, 0, len(d)) @@ -41,8 +41,8 @@ func (r *AutoRootOp) early(params *Params) error { name := ent.Name() if IsAutoRootBindable(name) { op := &BindMountOp{ - Source: path.Join(r.Host, name), - Target: FHSRoot + name, + Source: r.Host.Append(name), + Target: AbsFHSRoot.Append(name), Flags: r.Flags, } if err = op.early(params); err != nil { |
