aboutsummaryrefslogtreecommitdiffstats
path: root/src/gfile/inc_nativefs.c
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-01-24 19:33:28 +1000
committerinmarket <andrewh@inmarket.com.au>2014-01-24 19:33:28 +1000
commitc5ab2adbf0c14a6d0d4e2245a616d01de4b88214 (patch)
tree0394021132c5457d2af253b13938993b7261f418 /src/gfile/inc_nativefs.c
parent0d9532c0470ef6e6c5d04bbf221e3f8d543965c4 (diff)
downloaduGFX-c5ab2adbf0c14a6d0d4e2245a616d01de4b88214.tar.gz
uGFX-c5ab2adbf0c14a6d0d4e2245a616d01de4b88214.tar.bz2
uGFX-c5ab2adbf0c14a6d0d4e2245a616d01de4b88214.zip
More code for GFile
Diffstat (limited to 'src/gfile/inc_nativefs.c')
-rw-r--r--src/gfile/inc_nativefs.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/gfile/inc_nativefs.c b/src/gfile/inc_nativefs.c
index 7828ff84..ccf1d40a 100644
--- a/src/gfile/inc_nativefs.c
+++ b/src/gfile/inc_nativefs.c
@@ -36,11 +36,11 @@ static bool_t NativeEof(GFILE *f);
static const GFILEVMT FsNativeVMT = {
GFILE_CHAINHEAD, // next
- 'N', // prefix
#if !defined(WIN32) && !GFX_USE_OS_WIN32
GFSFLG_CASESENSITIVE|
#endif
GFSFLG_WRITEABLE|GFSFLG_SEEKABLE|GFSFLG_FAST, // flags
+ 'N', // prefix
NativeDel, NativeExists, NativeFilesize, NativeRen,
NativeOpen, NativeClose, NativeRead, NativeWrite,
NativeSetpos, NativeGetsize, NativeEof,
@@ -48,6 +48,23 @@ static const GFILEVMT FsNativeVMT = {
#undef GFILE_CHAINHEAD
#define GFILE_CHAINHEAD &FsNativeVMT
+static char *flags2mode(char *buf, uint16_t flags) {
+ if (flags & GFILEFLG_MUSTEXIST)
+ *buf = 'r';
+ else if (flags & GFILEFLG_APPEND)
+ *buf = 'a';
+ else
+ *buf = 'w';
+ buf++;
+ if ((flags & (GFILEFLG_READ|GFILEFLG_WRITE)) == (GFILEFLG_READ|GFILEFLG_WRITE))
+ *buf++ = '+';
+ if (flags & GFILEFLG_BINARY)
+ *buf++ = 'b';
+ if (flags & GFILEFLG_MUSTNOTEXIST)
+ *buf++ = 'x';
+ *buf++ = 0;
+}
+
static bool_t NativeDel(const char *fname) { return remove(fname) ? FALSE : TRUE; }
static bool_t NativeExists(const char *fname) { return access(fname, 0) ? FALSE : TRUE; }
static long int NativeFilesize(const char *fname) {
@@ -56,12 +73,12 @@ static long int NativeFilesize(const char *fname) {
return st.st_size;
}
static bool_t NativeRen(const char *oldname, const char *newname) { return rename(oldname, newname) ? FALSE : TRUE };
-static bool_t NativeOpen(GFILE *f, const char *fname, const char *mode) {
+static bool_t NativeOpen(GFILE *f, const char *fname) {
FILE *fd;
+ char mode[5];
if (!(fd = fopen(fname, mode)))
return FALSE;
- f->vmt = &FsNativeVMT;
f->obj = (void *)fd;
return TRUE;
}