diff options
-rw-r--r-- | tests/test_helpers/mount_unmount.go | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/tests/test_helpers/mount_unmount.go b/tests/test_helpers/mount_unmount.go index 5035c2b..e2eaf1f 100644 --- a/tests/test_helpers/mount_unmount.go +++ b/tests/test_helpers/mount_unmount.go @@ -176,14 +176,31 @@ func ListFds(pid int) []string { log.Panic(err) } defer f.Close() + // Note: Readdirnames filters "." and ".." names, err := f.Readdirnames(0) if err != nil { log.Panic(err) } - for i, n := range names { - // Note: Readdirnames filters "." and ".." - target, _ := os.Readlink(dir + "/" + n) - names[i] = n + "=" + target + var out []string + for _, n := range names { + fdPath := dir + "/" + n + fi, err := os.Lstat(fdPath) + if err != nil { + // fd was closed in the meantime + continue + } + if fi.Mode()&0400 > 0 { + n += "r" + } + if fi.Mode()&0200 > 0 { + n += "w" + } + target, err := os.Readlink(fdPath) + if err != nil { + // fd was closed in the meantime + continue + } + out = append(out, n+"="+target) } - return names + return out } |