summaryrefslogtreecommitdiff
path: root/apps/plugins/doom
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/doom')
-rw-r--r--apps/plugins/doom/rockdoom.c13
-rw-r--r--apps/plugins/doom/rockmacros.h6
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