Add support for fopen()
's modes.
This commit is contained in:
parent
a2b65c0eaf
commit
46f8468c24
1 changed files with 31 additions and 2 deletions
33
oogabooga/third_party/stb_vorbis.c
vendored
33
oogabooga/third_party/stb_vorbis.c
vendored
|
@ -70,8 +70,37 @@ int fseek(File f, s64 offset, s64 origin) {
|
||||||
}
|
}
|
||||||
|
|
||||||
File fopen(const char *filename, const char *mode) {
|
File fopen(const char *filename, const char *mode) {
|
||||||
// Handling modes
|
Os_Io_Open_Flags flags = 0;
|
||||||
File f = os_file_open_s(STR(filename), O_READ);
|
|
||||||
|
while (*mode) {
|
||||||
|
switch (*mode) {
|
||||||
|
case 'r':
|
||||||
|
if (*(mode + 1) == '+') {
|
||||||
|
flags = O_READ | O_WRITE;
|
||||||
|
} else {
|
||||||
|
flags = O_READ;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'w':
|
||||||
|
if (*(mode + 1) == '+') {
|
||||||
|
flags = O_READ | O_WRITE | O_CREATE;
|
||||||
|
} else {
|
||||||
|
flags = O_WRITE | O_CREATE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'b':
|
||||||
|
// Do nothing.
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
assert(0, "Unknown/unsupported fopen mode: %c", *mode);
|
||||||
|
}
|
||||||
|
mode++;
|
||||||
|
}
|
||||||
|
|
||||||
|
File f = os_file_open_s(STR(filename), flags);
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue