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 /ldd | |
| 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 'ldd')
| -rw-r--r-- | ldd/exec.go | 7 | ||||
| -rw-r--r-- | ldd/path.go | 19 |
2 files changed, 14 insertions, 12 deletions
diff --git a/ldd/exec.go b/ldd/exec.go index cb0fec75..79083d41 100644 --- a/ldd/exec.go +++ b/ldd/exec.go @@ -33,14 +33,17 @@ func Exec(ctx context.Context, p string) ([]*Entry, error) { return nil, err } - z := container.NewCommand(c, toolPath.String(), lddName, p) + z := container.NewCommand(c, toolPath, lddName, p) z.Hostname = "hakurei-" + lddName z.SeccompFlags |= seccomp.AllowMultiarch z.SeccompPresets |= seccomp.PresetStrict stdout, stderr := new(bytes.Buffer), new(bytes.Buffer) z.Stdout = stdout z.Stderr = stderr - z.Bind(container.FHSRoot, container.FHSRoot, 0).Proc(container.FHSProc).Dev(container.FHSProc, false) + z. + Bind(container.AbsFHSRoot, container.AbsFHSRoot, 0). + Proc(container.AbsFHSProc). + Dev(container.AbsFHSDev, false) if err := z.Start(); err != nil { return nil, err diff --git a/ldd/path.go b/ldd/path.go index 4e41ce74..a0cdb120 100644 --- a/ldd/path.go +++ b/ldd/path.go @@ -1,21 +1,20 @@ package ldd import ( - "path" - "slices" + "hakurei.app/container" ) // Path returns a deterministic, deduplicated slice of absolute directory paths in entries. -func Path(entries []*Entry) []string { - p := make([]string, 0, len(entries)*2) +func Path(entries []*Entry) []*container.Absolute { + p := make([]*container.Absolute, 0, len(entries)*2) for _, entry := range entries { - if path.IsAbs(entry.Path) { - p = append(p, path.Dir(entry.Path)) + if a, err := container.NewAbs(entry.Path); err == nil { + p = append(p, a.Dir()) } - if path.IsAbs(entry.Name) { - p = append(p, path.Dir(entry.Name)) + if a, err := container.NewAbs(entry.Name); err == nil { + p = append(p, a.Dir()) } } - slices.Sort(p) - return slices.Compact(p) + container.SortAbs(p) + return container.CompactAbs(p) } |
