138 struct code_to_errno_map
140 unsigned long w32Err;
144 static const struct code_to_errno_map errmap[] =
146 { ERROR_INVALID_FUNCTION , EINVAL }
147 , { ERROR_FILE_NOT_FOUND , ENOENT }
148 , { ERROR_PATH_NOT_FOUND , ENOENT }
149 , { ERROR_TOO_MANY_OPEN_FILES , EMFILE }
150 , { ERROR_ACCESS_DENIED , EACCES }
151 , { ERROR_INVALID_HANDLE , EBADF }
152 , { ERROR_ARENA_TRASHED , ENOMEM }
153 , { ERROR_NOT_ENOUGH_MEMORY , ENOMEM }
154 , { ERROR_INVALID_BLOCK , ENOMEM }
155 , { ERROR_BAD_ENVIRONMENT , E2BIG }
156 , { ERROR_BAD_FORMAT , ENOEXEC }
157 , { ERROR_INVALID_ACCESS , EINVAL }
158 , { ERROR_INVALID_DATA , EINVAL }
159 , { ERROR_OUTOFMEMORY , ENOMEM }
160 , { ERROR_INVALID_DRIVE , ENOENT }
161 , { ERROR_CURRENT_DIRECTORY ,
ECURDIR }
162 , { ERROR_NOT_SAME_DEVICE , EXDEV }
163 , { ERROR_NO_MORE_FILES , ENOENT }
164 , { ERROR_WRITE_PROTECT , EROFS }
165 , { ERROR_BAD_UNIT , ENXIO }
166 , { ERROR_NOT_READY , EBUSY }
167 , { ERROR_BAD_COMMAND , EIO }
168 , { ERROR_CRC , EIO }
169 , { ERROR_BAD_LENGTH , EIO }
170 , { ERROR_SEEK , EIO }
171 , { ERROR_NOT_DOS_DISK , EIO }
172 , { ERROR_SECTOR_NOT_FOUND , ENXIO }
173 , { ERROR_OUT_OF_PAPER , EBUSY }
174 , { ERROR_WRITE_FAULT , EIO }
175 , { ERROR_READ_FAULT , EIO }
176 , { ERROR_GEN_FAILURE , EIO }
177 , { ERROR_SHARING_VIOLATION ,
EAGAIN }
178 , { ERROR_LOCK_VIOLATION , EACCES }
179 , { ERROR_WRONG_DISK , ENXIO }
181 , { ERROR_SHARING_BUFFER_EXCEEDED , ENFILE }
182 , { ERROR_HANDLE_EOF , EINVAL }
183 , { ERROR_HANDLE_DISK_FULL , ENOSPC }
197 , { ERROR_NOT_SUPPORTED ,
ENOSYS }
202 , { ERROR_BAD_NETPATH , ENOENT }
216 , { ERROR_NETWORK_ACCESS_DENIED , EACCES }
220 , { ERROR_BAD_NET_NAME , ENOENT }
235 , { ERROR_FILE_EXISTS , EEXIST }
239 , { ERROR_CANNOT_MAKE , EACCES }
240 , { ERROR_FAIL_I24 , EACCES }
246 , { ERROR_INVALID_PARAMETER , EINVAL }
250 , { ERROR_NO_PROC_SLOTS ,
EAGAIN }
271 , { ERROR_DRIVE_LOCKED , EACCES }
272 , { ERROR_BROKEN_PIPE , EPIPE }
277 , { ERROR_DISK_FULL , ENOSPC }
281 , { ERROR_INVALID_TARGET_HANDLE , EBADF }
291 , { ERROR_INSUFFICIENT_BUFFER , ERANGE }
292 , { ERROR_INVALID_NAME , ENOENT }
293 , { ERROR_INVALID_HANDLE , EINVAL }
297 , { ERROR_MOD_NOT_FOUND , ENOENT }
298 , { ERROR_PROC_NOT_FOUND , ENOENT }
299 , { ERROR_WAIT_NO_CHILDREN , ECHILD }
300 , { ERROR_CHILD_NOT_COMPLETE , ECHILD }
301 , { ERROR_DIRECT_ACCESS_HANDLE , EBADF }
302 , { ERROR_NEGATIVE_SEEK , EINVAL }
303 , { ERROR_SEEK_ON_DEVICE , EACCES }
333 , { ERROR_NOT_LOCKED , EACCES }
338 , { ERROR_BAD_PATHNAME , ENOENT }
343 , { ERROR_MAX_THRDS_REACHED ,
EAGAIN }
348 , { ERROR_LOCK_FAILED , EACCES }
366 , { ERROR_ALREADY_EXISTS , EEXIST }
388 , { ERROR_NESTING_NOT_ALLOWED ,
EAGAIN }
389 , { WAIT_TIMEOUT, ETIME}
391 , { ERROR_DIRECTORY , ENOTDIR }
392 , { ERROR_DIRECTORY_NOT_SUPPORTED , EISDIR }
394 , { ERROR_IO_INCOMPLETE ,
EAGAIN }
395 , { ERROR_IO_PENDING ,
EAGAIN }
397 , { ERROR_INVALID_FLAGS , EINVAL }
398 , { ERROR_NO_UNICODE_TRANSLATION , EINVAL }
399 , { ERROR_NOT_FOUND , ENOENT }
400 , { ERROR_USER_MAPPED_FILE , EACCES }
401 , { ERROR_PRIVILEGE_NOT_HELD , EACCES }
402 , { ERROR_NOT_ENOUGH_QUOTA , ENOMEM }
403 , { ERROR_ABANDONED_WAIT_0 , EIO }
404 , { ERROR_SYMLINK_NOT_SUPPORTED , EINVAL }
405 , { ERROR_NOT_A_REPARSE_POINT , EINVAL }
408 for(i = 0; i <
sizeof(errmap)/
sizeof(
struct code_to_errno_map); ++i)
410 if(w32Err == errmap[i].w32Err)
412 return errmap[i].eerrno;
416 assert(!
"Unrecognised value");