summaryrefslogtreecommitdiff
path: root/internal/file/file.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/file/file.go')
-rw-r--r--internal/file/file.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/internal/file/file.go b/internal/file/file.go
index b95d40b..8510b61 100644
--- a/internal/file/file.go
+++ b/internal/file/file.go
@@ -56,7 +56,12 @@ func NewFdWithPid(fd int32, pid uint32) *FdFile {
return f
}
- f.flags, _ = readFlagsFromFdInfo(fd, pid)
+ flags, err := readFlagsFromFdInfo(fd, pid)
+ if err != nil {
+ f.flags = unknownFlag
+ } else {
+ f.flags = flags
+ }
f.flagsFromProcFS = true
return f
@@ -73,6 +78,10 @@ func readFlagsFromFdInfo(fd int32, pid uint32) (Flags, error) {
if err != nil {
return unknownFlag, err
}
+ return parseFlagsFromFdInfo(data)
+}
+
+func parseFlagsFromFdInfo(data []byte) (Flags, error) {
scanner := bufio.NewScanner(bytes.NewReader(data))
for scanner.Scan() {
line := scanner.Text()
@@ -82,7 +91,10 @@ func readFlagsFromFdInfo(fd int32, pid uint32) (Flags, error) {
return Flags(flags), err
}
}
- return unknownFlag, scanner.Err()
+ if err := scanner.Err(); err != nil {
+ return unknownFlag, err
+ }
+ return unknownFlag, fmt.Errorf("flags field not found in fdinfo")
}
func (f *FdFile) Name() string {