open.c revision 4c05150d77225cd8be862b006c421d8c045fa71c
1#include <unistd.h> 2#include <fcntl.h> 3#include <stdarg.h> 4 5extern int __open(const char*, int, int); 6#define O_CREAT_PORTABLE 00000100 7 8static inline int mips_change_flags(int flags) { 9 if (flags & O_CREAT_PORTABLE) { 10 flags &= ~O_CREAT_PORTABLE; 11 flags |= O_CREAT; 12 } 13 return flags; 14} 15 16int open(const char *pathname, int flags, ...) { 17 mode_t mode = 0; 18 flags = mips_change_flags(flags); 19 flags |= O_LARGEFILE; 20 21 if (flags & O_CREAT) { 22 va_list args; 23 24 va_start(args, flags); 25 mode = (mode_t) va_arg(args, int); 26 va_end(args); 27 } 28 29 return __open(pathname, flags, mode); 30} 31