os file IO fixes linux
This commit is contained in:
20
os_linux.c
20
os_linux.c
@@ -46,7 +46,7 @@ string os_readEntireFile(Arena *arena, string filename) {
|
||||
close(input);
|
||||
if (bytesRead == -1) {
|
||||
arenaPopTo(arena, readBuffer.str);
|
||||
return s("");
|
||||
readBuffer = s("");
|
||||
}
|
||||
} else {
|
||||
readBuffer = s("");
|
||||
@@ -56,35 +56,37 @@ string os_readEntireFile(Arena *arena, string filename) {
|
||||
return readBuffer;
|
||||
}
|
||||
|
||||
bool os_writeEntireFile(Arena *arena, string filename, const byte *contents, uint64 contentsLength) {
|
||||
Scratch temp = scratchStart(&arena, 1);
|
||||
bool os_writeEntireFile(string filename, const byte *contents, uint64 contentsLength) {
|
||||
Scratch temp = scratchStart(NULL, 0);
|
||||
|
||||
bool result = false;
|
||||
int output = open(cstring(temp.arena, filename), O_WRONLY);
|
||||
struct stat st;
|
||||
stat((char *)filename.str, &st);
|
||||
int output = open(cstring(temp.arena, filename), O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
|
||||
if (output) {
|
||||
int64 bytesWritten = write(output, contents, contentsLength);
|
||||
if (bytesWritten != -1) {
|
||||
result = true;
|
||||
}
|
||||
close(output);
|
||||
}
|
||||
close(output);
|
||||
|
||||
scratchEnd(temp);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool os_fileAppend(Arena *arena, string filename, const byte *contents, uint64 contentsLength) {
|
||||
Scratch temp = scratchStart(&arena, 1);
|
||||
bool os_fileAppend(string filename, const byte *contents, uint64 contentsLength) {
|
||||
Scratch temp = scratchStart(NULL, 0);
|
||||
|
||||
bool result = false;
|
||||
int output = open(cstring(temp.arena, filename), O_APPEND);
|
||||
int output = open(cstring(temp.arena, filename), O_WRONLY | O_APPEND);
|
||||
if (output) {
|
||||
int bytesWritten = write(output, contents, contentsLength);
|
||||
if (bytesWritten != -1) {
|
||||
result = true;
|
||||
}
|
||||
close(output);
|
||||
}
|
||||
close(output);
|
||||
|
||||
scratchEnd(temp);
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user