int Posix_Open(const char *pathName, // IN: int flags, // IN: ...) // IN: { char *path; mode_t mode = 0; int fd; if (!PosixConvertToCurrent(pathName, &path)) { return -1; } if ((flags & O_CREAT) != 0) { va_list a; /* * The FreeBSD tools compiler * (toolchain/lin32/gcc-4.1.2-5/bin/i686-freebsd5.0-gcc) * wants us to use va_arg(a, int) instead of va_arg(a, mode_t), * so oblige. -- edward */ va_start(a, flags); ASSERT_ON_COMPILE(sizeof (int) >= sizeof(mode_t)); mode = va_arg(a, int); va_end(a); }
void * Posix_Dlopen(const char *pathName, // IN: int flag) // IN: { char *path; void *ret; if (!PosixConvertToCurrent(pathName, &path)) { return NULL; } ret = dlopen(path, flag); Posix_Free(path); return ret; }