12 readable = writable =
false;
15 #ifndef _WIN32 // meaningless to do this on win32
26 mode_t xmode = fcntl(rwfd, F_GETFL);
27 xmode = xmode & (O_RDONLY | O_WRONLY | O_RDWR);
28 readable = (xmode == O_RDONLY) || (xmode == O_RDWR);
29 writable = (xmode == O_WRONLY) || (xmode == O_RDWR);
32 readable = writable =
false;
42 open(filename, mode, create_mode);
48 return new WvFile(s, O_RDONLY, 0666);
53 return new WvFile(s, O_WRONLY|O_CREAT|O_TRUNC, 0666);
58 return new WvFile(s, O_RDWR|O_CREAT, 0666);
66 bool WvFile::open(WvStringParm filename,
int mode,
int create_mode)
72 int xmode = (mode & (O_RDONLY | O_WRONLY | O_RDWR));
73 readable = (xmode == O_RDONLY) || (xmode == O_RDWR);
74 writable = (xmode == O_WRONLY) || (xmode == O_RDWR);
82 int rwfd = ::open(filename, mode | O_NONBLOCK, create_mode);
84 int rwfd = ::_open(filename, mode | O_NONBLOCK, create_mode);
92 fcntl(rwfd, F_SETFD, 1);
99 #ifndef _WIN32 // since win32 doesn't support fcntl
100 bool WvFile::open(
int _rwfd)
109 int mode = fcntl(_rwfd, F_GETFL);
110 int xmode = (mode & (O_RDONLY | O_WRONLY | O_RDWR));
111 readable = (xmode == O_RDONLY) || (xmode == O_RDWR);
112 writable = (xmode == O_WRONLY) || (xmode == O_RDWR);
118 fcntl(_rwfd, F_SETFL, mode | O_NONBLOCK);
119 fcntl(_rwfd, F_SETFD, 1);
131 if (!readable) si.wants.readable =
false;
132 if (!writable) si.wants.writable =
false;