aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-25 22:52:48 +0900
committerOphestra <cat@gensokyo.uk>2025-08-25 22:52:48 +0900
commitc328b584c0449e846f8d49976df65fce657c2a67 (patch)
treea10fa3d86bd814d7f299836b0032ec6b5bd89cd0
parent9585b35d5b4e91bb327e3eddb229d1b711eeec2f (diff)
hst/fslink: improve string representation
This shortens the representation of most common use cases and generally improves readability. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--cmd/hakurei/print_test.go8
-rw-r--r--hst/fslink.go7
-rw-r--r--hst/fslink_test.go21
3 files changed, 26 insertions, 10 deletions
diff --git a/cmd/hakurei/print_test.go b/cmd/hakurei/print_test.go
index 2002c60e..b60c5dc9 100644
--- a/cmd/hakurei/print_test.go
+++ b/cmd/hakurei/print_test.go
@@ -51,8 +51,8 @@ Filesystem
w+ephemeral(-rwxr-xr-x):/tmp/
w*/nix/store:/mnt-root/nix/.rw-store/upper:/mnt-root/nix/.rw-store/work:/mnt-root/nix/.ro-store
*/nix/store
- &/run/current-system:*/run/current-system
- &/run/opengl-driver:*/run/opengl-driver
+ /run/current-system@
+ /run/opengl-driver@
w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium
d+/dev/dri
@@ -128,8 +128,8 @@ Filesystem
w+ephemeral(-rwxr-xr-x):/tmp/
w*/nix/store:/mnt-root/nix/.rw-store/upper:/mnt-root/nix/.rw-store/work:/mnt-root/nix/.ro-store
*/nix/store
- &/run/current-system:*/run/current-system
- &/run/opengl-driver:*/run/opengl-driver
+ /run/current-system@
+ /run/opengl-driver@
w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium
d+/dev/dri
diff --git a/hst/fslink.go b/hst/fslink.go
index 8bba9b49..40b4fd8b 100644
--- a/hst/fslink.go
+++ b/hst/fslink.go
@@ -50,9 +50,12 @@ func (l *FSLink) String() string {
return "<invalid>"
}
- dereference := ""
+ var dereference string
if l.Dereference {
+ if l.Target.String() == l.Linkname {
+ return l.Target.String() + "@"
+ }
dereference = "*"
}
- return "&" + l.Target.String() + ":" + dereference + l.Linkname
+ return l.Target.String() + " -> " + dereference + l.Linkname
}
diff --git a/hst/fslink_test.go b/hst/fslink_test.go
index c8583544..b3e196e6 100644
--- a/hst/fslink_test.go
+++ b/hst/fslink_test.go
@@ -12,7 +12,20 @@ func TestFSLink(t *testing.T) {
{"nil", (*hst.FSLink)(nil), false, nil, nil, nil, "<invalid>"},
{"zero", new(hst.FSLink), false, nil, nil, nil, "<invalid>"},
- {"deref rel", &hst.FSLink{Target: m("/"), Linkname: ":3", Dereference: true}, false, nil, nil, nil, "<invalid>"},
+ {"deref rel", &hst.FSLink{Target: m("/"), Linkname: ":3", Dereference: true},
+ false, nil, nil, nil, "<invalid>"},
+ {"deref differs", &hst.FSLink{
+ Target: m("/.hakurei/etc"),
+ Linkname: "/etc/static",
+ Dereference: true,
+ }, true, container.Ops{
+ &container.SymlinkOp{
+ Target: m("/.hakurei/etc"),
+ LinkName: "/etc/static",
+ Dereference: true,
+ },
+ }, m("/.hakurei/etc"), nil,
+ "/.hakurei/etc -> */etc/static"},
{"deref", &hst.FSLink{
Target: m("/run/current-system"),
Linkname: "/run/current-system",
@@ -24,7 +37,7 @@ func TestFSLink(t *testing.T) {
Dereference: true,
},
}, m("/run/current-system"), nil,
- "&/run/current-system:*/run/current-system"},
+ "/run/current-system@"},
{"direct", &hst.FSLink{
Target: m("/etc/mtab"),
@@ -34,7 +47,7 @@ func TestFSLink(t *testing.T) {
Target: m("/etc/mtab"),
LinkName: "/proc/mounts",
},
- }, m("/etc/mtab"), nil, "&/etc/mtab:/proc/mounts"},
+ }, m("/etc/mtab"), nil, "/etc/mtab -> /proc/mounts"},
{"direct rel", &hst.FSLink{
Target: m("/etc/mtab"),
@@ -44,6 +57,6 @@ func TestFSLink(t *testing.T) {
Target: m("/etc/mtab"),
LinkName: "../proc/mounts",
},
- }, m("/etc/mtab"), nil, "&/etc/mtab:../proc/mounts"},
+ }, m("/etc/mtab"), nil, "/etc/mtab -> ../proc/mounts"},
})
}