vfs: move from container
Some checks failed
Test / Create distribution (push) Failing after 33s
Test / ShareFS (push) Failing after 39s
Test / Hakurei (push) Failing after 46s
Test / Sandbox (push) Failing after 46s
Test / Hakurei (race detector) (push) Failing after 47s
Test / Sandbox (race detector) (push) Failing after 50s
Test / Flake checks (push) Has been skipped

This package is not container-specific.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-03-17 15:16:46 +09:00
parent 0a12d456ce
commit 8e68ddd149
13 changed files with 10 additions and 10 deletions

32
vfs/mangle.go Normal file
View File

@@ -0,0 +1,32 @@
package vfs
import "strings"
// Unmangle reverses mangling of strings done by the kernel. Its behaviour is
// consistent with the equivalent function in util-linux.
func Unmangle(s string) string {
if !strings.ContainsRune(s, '\\') {
return s
}
v := make([]byte, len(s))
var (
j int
c byte
)
for i := 0; i < len(s); i++ {
c = s[i]
if c == '\\' && len(s) > i+3 &&
(s[i+1] == '0' || s[i+1] == '1') &&
(s[i+2] >= '0' && s[i+2] <= '7') &&
(s[i+3] >= '0' && s[i+3] <= '7') {
c = ((s[i+1] - '0') << 6) |
((s[i+2] - '0') << 3) |
(s[i+3] - '0')
i += 3
}
v[j] = c
j++
}
return string(v[:j])
}