summaryrefslogtreecommitdiff
path: root/internal/file/flags.go
blob: fcba927d1e84fb1d80a789707502a81ea5a47ac9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package file

import (
	"strings"
	"syscall"
)

var flagsToHuman = map[int]string{
	syscall.O_ACCMODE:   "O_ACCMODE",
	syscall.O_APPEND:    "O_APPEND",
	syscall.O_ASYNC:     "O_ASYNC",
	syscall.O_CLOEXEC:   "O_CLOEXEC",
	syscall.O_CREAT:     "O_CREAT",
	syscall.O_DIRECT:    "O_DIRECT",
	syscall.O_DIRECTORY: "O_DIRECTORY",
	syscall.O_DSYNC:     "O_DSYNC",
	syscall.O_EXCL:      "O_EXCL",
	syscall.O_NOATIME:   "O_NOATIME",
	syscall.O_NOCTTY:    "O_NOCTTY",
	syscall.O_NOFOLLOW:  "O_NOFOLLOW",
	syscall.O_NONBLOCK:  "O_NONBLOCK",
	syscall.O_RDONLY:    "O_RDONLY",
	syscall.O_RDWR:      "O_RDWR",
	syscall.O_SYNC:      "O_SYNC",
	syscall.O_TRUNC:     "O_TRUNC",
	syscall.O_WRONLY:    "O_WRONLY",
}

func FlagsToStr(flags int32) string {
	return strings.Join(FlagsToStrs(flags), "|")
}

func FlagsToStrs(flags int32) (result []string) {
	for flag, name := range flagsToHuman {
		if int(flags)&flag == flag {
			result = append(result, name)
		}
	}
	if len(result) == 0 {
		result = append(result, "O_RDONLY")
	}
	return
}