From b278bbb23d0f2ffcc93b598935532ed412babbdc Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Sat, 22 Aug 2015 00:31:12 -0700 Subject: [PATCH] PSP2: Translate POSIX open modes to SCE open modes --- src/util/vfs.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/util/vfs.c b/src/util/vfs.c index b1735136d..942b4c5b5 100644 --- a/src/util/vfs.c +++ b/src/util/vfs.c @@ -35,7 +35,29 @@ struct VFile* VFileOpen(const char* path, int flags) { } return VFileFOpen(path, chflags); #elif defined(PSP2) - return VFileOpenSce(path, flags, 0666); + int sceFlags = PSP2_O_RDONLY; + switch (flags & O_ACCMODE) { + case O_WRONLY: + sceFlags = PSP2_O_WRONLY; + break; + case O_RDWR: + sceFlags = PSP2_O_RDWR; + break; + case O_RDONLY: + sceFlags = PSP2_O_RDONLY; + break; + } + + if (flags & O_APPEND) { + sceFlags |= PSP2_O_APPEND; + } + if (flags & O_TRUNC) { + sceFlags |= PSP2_O_TRUNC; + } + if (flags & O_CREAT) { + sceFlags |= PSP2_O_CREAT; + } + return VFileOpenSce(path, sceFlags, 0666); #else return VFileOpenFD(path, flags); #endif