diff --git a/cmd/hakurei/print_test.go b/cmd/hakurei/print_test.go index 2002c60..b60c5dc 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 8bba9b4..40b4fd8 100644 --- a/hst/fslink.go +++ b/hst/fslink.go @@ -50,9 +50,12 @@ func (l *FSLink) String() string { return "" } - 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 c858354..b3e196e 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, ""}, {"zero", new(hst.FSLink), false, nil, nil, nil, ""}, - {"deref rel", &hst.FSLink{Target: m("/"), Linkname: ":3", Dereference: true}, false, nil, nil, nil, ""}, + {"deref rel", &hst.FSLink{Target: m("/"), Linkname: ":3", Dereference: true}, + false, nil, nil, nil, ""}, + {"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"}, }) }