On 11/30/2009 10:16 AM, Richard W.M. Jones wrote:
My take from this is that we need a 'set_errno' function which is equivalent to 'set_winsock_errno' and is used for all non-socket functions.
For all non-socket functions that are mapped to Win32 functions, yes. Here is the list that Wine uses, it is at least a good starting point: ERROR_ACCESS_DENIED ERROR_CANNOT_MAKE ERROR_CURRENT_DIRECTORY ERROR_DRIVE_LOCKED ERROR_FAIL_I24 ERROR_INVALID_ACCESS ERROR_LOCK_FAILED ERROR_LOCK_VIOLATION ERROR_NETWORK_ACCESS_DENIED ERROR_NOT_LOCKED ERROR_SEEK_ON_DEVICE map to EACCES ERROR_BAD_NET_NAME ERROR_BAD_NETPATH ERROR_BAD_PATHNAME ERROR_FILENAME_EXCED_RANGE (better: ERANGE) ERROR_FILE_NOT_FOUND ERROR_INVALID_DRIVE ERROR_NO_MORE_FILES ERROR_PATH_NOT_FOUND map to ENOENT ERROR_IO_DEVICE map to EIO ERROR_BAD_FORMAT map to ENOEXEC ERROR_INVALID_HANDLE map to EBADF ERROR_ARENA_TRASHED ERROR_INVALID_BLOCK ERROR_NOT_ENOUGH_QUOTA (better: EDQUOT) ERROR_OUTOFMEMORY map to ENOMEM ERROR_BUSY map to EBUSY ERROR_ALREADY_EXISTS ERROR_FILE_EXISTS map to EEXIST ERROR_BAD_DEVICE map to ENODEV ERROR_TOO_MANY_OPEN_FILES map to EMFILE ERROR_DISK_FULL map to ENOSPC ERROR_BROKEN_PIPE map to EPIPE ERROR_POSSIBLE_DEADLOCK map to EDEADLK ERROR_DIR_NOT_EMPTY map to ENOTEMPTY ERROR_BAD_ENVIRONMENT map to E2BIG ERROR_CHILD_NOT_COMPLETE ERROR_WAIT_NO_CHILDREN map to ECHILD ERROR_MAX_THRDS_REACHED ERROR_NESTING_NOT_ALLOWED ERROR_NO_PROC_SLOTS map to EAGAIN Paolo