aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-04-14 06:51:11 +0200
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-04-20 19:14:12 +0200
commitd32669a273676eaec45d55de35a2470f23035aca (patch)
treeb25a7000109197eced62b54253d9ae70d6011a61
parentf4caa1b3cccbd0d63241f9e62ec942235b8f6da8 (diff)
downloadbusybox-w32-d32669a273676eaec45d55de35a2470f23035aca.tar.gz
busybox-w32-d32669a273676eaec45d55de35a2470f23035aca.tar.bz2
busybox-w32-d32669a273676eaec45d55de35a2470f23035aca.zip
win32: Replace open/fopen to support /dev/null
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
-rw-r--r--win32/mingw.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/win32/mingw.c b/win32/mingw.c
index 5d9834772..eede8ef6d 100644
--- a/win32/mingw.c
+++ b/win32/mingw.c
@@ -115,6 +115,40 @@ static int err_win_to_posix(DWORD winerr)
115 return error; 115 return error;
116} 116}
117 117
118#undef open
119int mingw_open (const char *filename, int oflags, ...)
120{
121 va_list args;
122 unsigned mode;
123 int fd;
124
125 va_start(args, oflags);
126 mode = va_arg(args, int);
127 va_end(args);
128
129 if (oflags & O_NONBLOCK) {
130 errno = ENOSYS;
131 return -1;
132 }
133 if (!strcmp(filename, "/dev/null"))
134 filename = "nul";
135 fd = open(filename, oflags, mode);
136 if (fd < 0 && (oflags & O_CREAT) && errno == EACCES) {
137 DWORD attrs = GetFileAttributes(filename);
138 if (attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_DIRECTORY))
139 errno = EISDIR;
140 }
141 return fd;
142}
143
144#undef fopen
145FILE *mingw_fopen (const char *filename, const char *mode)
146{
147 if (!strcmp(filename, "/dev/null"))
148 filename = "nul";
149 return fopen(filename, mode);
150}
151
118unsigned int sleep (unsigned int seconds) 152unsigned int sleep (unsigned int seconds)
119{ 153{
120 Sleep(seconds*1000); 154 Sleep(seconds*1000);