Commit e48df7f
committed
fileutils: Use ModeType as the mask for mode checks
POSIX provides S_IS*(m) macros to portably interpret the mode type,
but does not define values for each type [1]. Alban pointed out that
st_mode is not a bitfield on Linux [2]. For example, Linux defines
[3]:
S_IFBLK 060000
S_IFDIR 040000
S_IFCHR 020000
So 'm&S_IFCHR == S_IFCHR', for example, would succeed for both
character and block devices. Go translates the system values to a
platform-agnostic bitfield [4], so the previous approach works on Go.
But it may be confusing for people used to the native non-bitfield
mode, so this commit moves us to an approach that does not rely on
Go's using a bitfield.
[1]: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html
[2]: opencontainers/runtime-tools#308 (comment)
[3]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/stat.h?h=v4.16#n9
[4]: https://github.com/golang/go/blob/b0d437f866eb8987cde7e6550cacd77876f36d4b/src/os/types.go#L451 parent 7d4729f commit e48df7f
1 file changed
+2
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | | - | |
| 79 | + | |
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| |||
0 commit comments