mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Merge pull request #609 from hasenj/osx-consts
Fix darwin open flags and mode
This commit is contained in:
+1
-1
@@ -101,7 +101,7 @@ write_entire_file :: proc(name: string, data: []byte, truncate := true) -> (succ
|
|||||||
}
|
}
|
||||||
|
|
||||||
mode: int = 0;
|
mode: int = 0;
|
||||||
when OS == "linux" {
|
when OS == "linux" || OS == "darwin" {
|
||||||
// NOTE(justasd): 644 (owner read, write; group read; others read)
|
// NOTE(justasd): 644 (owner read, write; group read; others read)
|
||||||
mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
|
mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-15
@@ -151,19 +151,18 @@ EOWNERDEAD: Errno : 105; /* Previous owner died */
|
|||||||
EQFULL: Errno : 106; /* Interface output queue is full */
|
EQFULL: Errno : 106; /* Interface output queue is full */
|
||||||
ELAST: Errno : 106; /* Must be equal largest errno */
|
ELAST: Errno : 106; /* Must be equal largest errno */
|
||||||
|
|
||||||
O_RDONLY :: 0x00000;
|
O_RDONLY :: 0x0000;
|
||||||
O_WRONLY :: 0x00001;
|
O_WRONLY :: 0x0001;
|
||||||
O_RDWR :: 0x00002;
|
O_RDWR :: 0x0002;
|
||||||
O_CREATE :: 0x00040;
|
O_CREATE :: 0x0200;
|
||||||
O_EXCL :: 0x00080;
|
O_EXCL :: 0x0800;
|
||||||
O_NOCTTY :: 0x00100;
|
O_NOCTTY :: 0;
|
||||||
O_TRUNC :: 0x00200;
|
O_TRUNC :: 0x0400;
|
||||||
O_NONBLOCK :: 0x00800;
|
O_NONBLOCK :: 0x0004;
|
||||||
O_APPEND :: 0x00400;
|
O_APPEND :: 0x0008;
|
||||||
O_SYNC :: 0x01000;
|
O_SYNC :: 0x0080;
|
||||||
O_ASYNC :: 0x02000;
|
O_ASYNC :: 0x0040;
|
||||||
O_CLOEXEC :: 0x80000;
|
O_CLOEXEC :: 0x1000000;
|
||||||
|
|
||||||
|
|
||||||
SEEK_SET :: 0;
|
SEEK_SET :: 0;
|
||||||
SEEK_CUR :: 1;
|
SEEK_CUR :: 1;
|
||||||
@@ -266,7 +265,7 @@ F_OK :: 0; // Test for file existance
|
|||||||
foreign libc {
|
foreign libc {
|
||||||
@(link_name="__error") __error :: proc() -> ^int ---;
|
@(link_name="__error") __error :: proc() -> ^int ---;
|
||||||
|
|
||||||
@(link_name="open") _unix_open :: proc(path: cstring, flags: int, #c_vararg mode: ..any) -> Handle ---;
|
@(link_name="open") _unix_open :: proc(path: cstring, flags: i32, mode: u16) -> Handle ---;
|
||||||
@(link_name="close") _unix_close :: proc(handle: Handle) ---;
|
@(link_name="close") _unix_close :: proc(handle: Handle) ---;
|
||||||
@(link_name="read") _unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> int ---;
|
@(link_name="read") _unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> int ---;
|
||||||
@(link_name="write") _unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> int ---;
|
@(link_name="write") _unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> int ---;
|
||||||
@@ -300,7 +299,7 @@ get_last_error :: proc() -> int {
|
|||||||
|
|
||||||
open :: proc(path: string, flags: int = O_RDONLY, mode: int = 0) -> (Handle, Errno) {
|
open :: proc(path: string, flags: int = O_RDONLY, mode: int = 0) -> (Handle, Errno) {
|
||||||
cstr := strings.clone_to_cstring(path);
|
cstr := strings.clone_to_cstring(path);
|
||||||
handle := _unix_open(cstr, flags, mode);
|
handle := _unix_open(cstr, i32(flags), u16(mode));
|
||||||
delete(cstr);
|
delete(cstr);
|
||||||
if handle == -1 {
|
if handle == -1 {
|
||||||
return INVALID_HANDLE, 1;
|
return INVALID_HANDLE, 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user