diff options
Diffstat (limited to 'apps/plugins/doom')
| -rw-r--r-- | apps/plugins/doom/rockdoom.c | 13 | ||||
| -rw-r--r-- | apps/plugins/doom/rockmacros.h | 6 |
2 files changed, 13 insertions, 6 deletions
diff --git a/apps/plugins/doom/rockdoom.c b/apps/plugins/doom/rockdoom.c index 21efbc4..1383a2b 100644 --- a/apps/plugins/doom/rockdoom.c +++ b/apps/plugins/doom/rockdoom.c @@ -63,13 +63,20 @@ int fileexists(const char * fname) } #ifndef SIMULATOR -int my_open(const char *file, int flags) +int my_open(const char *file, int flags, ...) { if(fpoint==8) return -1; #undef open - filearray[fpoint]=rb->open(file, flags); - + if (flags & O_CREAT) + { + va_list ap; + va_start(ap, flags); + filearray[fpoint]=rb->open(file, flags, va_arg(ap, mode_t)); + va_end(ap); + } + else + filearray[fpoint]=rb->open(file, flags); if(filearray[fpoint]<0) return filearray[fpoint]; diff --git a/apps/plugins/doom/rockmacros.h b/apps/plugins/doom/rockmacros.h index 98f908d..e066fe8 100644 --- a/apps/plugins/doom/rockmacros.h +++ b/apps/plugins/doom/rockmacros.h @@ -39,12 +39,12 @@ char *my_strtok( char * s, const char * delim ); #define read_line(a,b,c) rb->read_line((a),(b),(c)) #ifdef SIMULATOR -#define open(a,b) rb->open((a),(b)) +#define open(a, ...) rb->open((a), __VA_ARGS__) #define close(a) rb->close((a)) #else -int my_open(const char *file, int flags); +int my_open(const char *file, int flags, ...); int my_close(int id); -#define open(a,b) my_open((a),(b)) +#define open(a, ...) my_open((a), __VA_ARGS__) #define close(a) my_close((a)) #endif |