open and fcntl are variadic in C, which matters on Apple arm64 (variadic arguments go on the stack).
c_open :: (path: *u8, flags: s32, args: ..Any) -> s32 #foreign