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