Browse Source

sys/linux: fix open bits

Laytan Laats 1 year ago
parent
commit
eaab17f8fb
1 changed files with 35 additions and 16 deletions
  1. 35 16
      core/sys/linux/bits.odin

+ 35 - 16
core/sys/linux/bits.odin

@@ -153,22 +153,41 @@ Errno :: enum i32 {
 Open_Flags_Bits :: enum {
 Open_Flags_Bits :: enum {
 	WRONLY    = 0,
 	WRONLY    = 0,
 	RDWR      = 1,
 	RDWR      = 1,
-	CREAT     = 8,
-	EXCL      = 9,
-	NOCTTY    = 10,
-	TRUNC     = 11,
-	APPEND    = 12,
-	NONBLOCK  = 14,
-	DSYNC     = 16,
-	ASYNC     = 17,
-	DIRECT    = 18,
-	LARGEFILE = 20,
-	DIRECTORY = 21,
-	NOFOLLOW  = 22,
-	NOATIME   = 24,
-	CLOEXEC   = 25,
-	PATH      = 28,
-}
+	CREAT     = 6,
+	EXCL      = 7,
+	NOCTTY    = 8,
+	TRUNC     = 9,
+	APPEND    = 10,
+	NONBLOCK  = 11,
+	DSYNC     = 12,
+	ASYNC     = 13,
+	DIRECT    = 14,
+	LARGEFILE = 15,
+	DIRECTORY = 16,
+	NOFOLLOW  = 17,
+	NOATIME   = 18,
+	CLOEXEC   = 19,
+	PATH      = 21,
+}
+
+// https://github.com/torvalds/linux/blob/7367539ad4b0f8f9b396baf02110962333719a48/include/uapi/asm-generic/fcntl.h#L19
+#assert(1 << uint(Open_Flags_Bits.WRONLY)    == 0o0000000_1)
+#assert(1 << uint(Open_Flags_Bits.RDWR)      == 0o0000000_2)
+#assert(1 << uint(Open_Flags_Bits.CREAT)     == 0o00000_100)
+#assert(1 << uint(Open_Flags_Bits.EXCL)      == 0o00000_200)
+#assert(1 << uint(Open_Flags_Bits.NOCTTY)    == 0o00000_400)
+#assert(1 << uint(Open_Flags_Bits.TRUNC)     == 0o0000_1000)
+#assert(1 << uint(Open_Flags_Bits.APPEND)    == 0o0000_2000)
+#assert(1 << uint(Open_Flags_Bits.NONBLOCK)  == 0o0000_4000)
+#assert(1 << uint(Open_Flags_Bits.DSYNC)     == 0o000_10000)
+#assert(1 << uint(Open_Flags_Bits.ASYNC)     == 0o000_20000)
+#assert(1 << uint(Open_Flags_Bits.DIRECT)    == 0o000_40000)
+#assert(1 << uint(Open_Flags_Bits.LARGEFILE) == 0o00_100000)
+#assert(1 << uint(Open_Flags_Bits.DIRECTORY) == 0o00_200000)
+#assert(1 << uint(Open_Flags_Bits.NOFOLLOW)  == 0o00_400000)
+#assert(1 << uint(Open_Flags_Bits.NOATIME)   == 0o0_1000000)
+#assert(1 << uint(Open_Flags_Bits.CLOEXEC)   == 0o0_2000000)
+#assert(1 << uint(Open_Flags_Bits.PATH)      == 0o_10000000)
 
 
 /*
 /*
 	Bits for FD_Flags bitset
 	Bits for FD_Flags bitset