aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2019-12-23 18:07:59 +0000
committerGitHub <noreply@github.com>2019-12-23 18:07:59 +0000
commitfb0fb4767b09c45cd3e44fe5f10d0b2285d2a8b3 (patch)
tree632148d4203d9f232c4ad526241f182b83aa874a
parent1d14b3059e0e4310ffc061ca606d2eb6a153149d (diff)
parent38a9a2b7fc0b0430b7a664719d4ce2e6bf836256 (diff)
Merge pull request #517 from SSStormy/fix-os-linux-fs-stuffs
Unix: Fix improper _unix_open binding; make write_entire_file set sane file permissions.
-rw-r--r--core/os/os.odin9
-rw-r--r--core/os/os_linux.odin2
2 files changed, 9 insertions, 2 deletions
diff --git a/core/os/os.odin b/core/os/os.odin
index d5ac23b62..11cc59a8f 100644
--- a/core/os/os.odin
+++ b/core/os/os.odin
@@ -99,7 +99,14 @@ write_entire_file :: proc(name: string, data: []byte, truncate := true) -> (succ
if truncate {
flags |= O_TRUNC;
}
- fd, err := open(name, flags, 0);
+
+ mode: int = 0;
+ when OS == "linux" {
+ // NOTE(justasd): 644 (owner read, write; group read; others read)
+ mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
+ }
+
+ fd, err := open(name, flags, mode);
if err != 0 {
return false;
}
diff --git a/core/os/os_linux.odin b/core/os/os_linux.odin
index cf03dac71..0f244c526 100644
--- a/core/os/os_linux.odin
+++ b/core/os/os_linux.odin
@@ -259,7 +259,7 @@ foreign libc {
@(link_name="__errno_location") __errno_location :: proc() -> ^int ---;
@(link_name="syscall") syscall :: proc(number: Syscall, #c_vararg args: ..any) -> 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: int, mode: int) -> Handle ---;
@(link_name="close") _unix_close :: proc(fd: Handle) -> int ---;
@(link_name="read") _unix_read :: proc(fd: Handle, buf: rawptr, size: int) -> int ---;
@(link_name="write") _unix_write :: proc(fd: Handle, buf: rawptr, size: int) -> int ---;