67
66
uv_err_code uv_translate_sys_error(int sys_errno) {
68
67
switch (sys_errno) {
69
68
case ERROR_SUCCESS: return UV_OK;
70
case ERROR_BEGINNING_OF_MEDIA: return UV_EIO;
71
case ERROR_BUS_RESET: return UV_EIO;
72
case ERROR_CRC: return UV_EIO;
73
case ERROR_DEVICE_DOOR_OPEN: return UV_EIO;
74
case ERROR_DEVICE_REQUIRES_CLEANING: return UV_EIO;
75
case ERROR_DISK_CORRUPT: return UV_EIO;
76
case ERROR_EOM_OVERFLOW: return UV_EIO;
77
case ERROR_FILEMARK_DETECTED: return UV_EIO;
78
case ERROR_INVALID_BLOCK_LENGTH: return UV_EIO;
79
case ERROR_IO_DEVICE: return UV_EIO;
80
case ERROR_NO_DATA_DETECTED: return UV_EIO;
81
case ERROR_NO_SIGNAL_SENT: return UV_EIO;
82
case ERROR_OPEN_FAILED: return UV_EIO;
83
case ERROR_SETMARK_DETECTED: return UV_EIO;
84
case ERROR_SIGNAL_REFUSED: return UV_EIO;
85
case ERROR_FILE_NOT_FOUND: return UV_ENOENT;
86
case ERROR_INVALID_NAME: return UV_ENOENT;
87
case ERROR_MOD_NOT_FOUND: return UV_ENOENT;
88
case ERROR_PATH_NOT_FOUND: return UV_ENOENT;
89
case ERROR_ACCESS_DENIED: return UV_EPERM;
90
69
case ERROR_NOACCESS: return UV_EACCES;
91
70
case WSAEACCES: return UV_EACCES;
92
71
case ERROR_ADDRESS_ALREADY_ASSOCIATED: return UV_EADDRINUSE;
95
74
case WSAEAFNOSUPPORT: return UV_EAFNOSUPPORT;
96
75
case WSAEWOULDBLOCK: return UV_EAGAIN;
97
76
case WSAEALREADY: return UV_EALREADY;
77
case ERROR_INVALID_FLAGS: return UV_EBADF;
78
case ERROR_INVALID_HANDLE: return UV_EBADF;
98
79
case ERROR_LOCK_VIOLATION: return UV_EBUSY;
80
case ERROR_PIPE_BUSY: return UV_EBUSY;
99
81
case ERROR_SHARING_VIOLATION: return UV_EBUSY;
82
case ERROR_OPERATION_ABORTED: return UV_ECANCELED;
83
case WSAEINTR: return UV_ECANCELED;
84
case ERROR_NO_UNICODE_TRANSLATION: return UV_ECHARSET;
100
85
case ERROR_CONNECTION_ABORTED: return UV_ECONNABORTED;
101
86
case WSAECONNABORTED: return UV_ECONNABORTED;
102
87
case ERROR_CONNECTION_REFUSED: return UV_ECONNREFUSED;
105
90
case WSAECONNRESET: return UV_ECONNRESET;
106
91
case ERROR_ALREADY_EXISTS: return UV_EEXIST;
107
92
case ERROR_FILE_EXISTS: return UV_EEXIST;
93
case ERROR_BUFFER_OVERFLOW: return UV_EFAULT;
108
94
case WSAEFAULT: return UV_EFAULT;
109
95
case ERROR_HOST_UNREACHABLE: return UV_EHOSTUNREACH;
110
96
case WSAEHOSTUNREACH: return UV_EHOSTUNREACH;
111
case ERROR_OPERATION_ABORTED: return UV_EINTR;
112
case WSAEINTR: return UV_EINTR;
97
case ERROR_INSUFFICIENT_BUFFER: return UV_EINVAL;
113
98
case ERROR_INVALID_DATA: return UV_EINVAL;
99
case ERROR_INVALID_PARAMETER: return UV_EINVAL;
100
case ERROR_SYMLINK_NOT_SUPPORTED: return UV_EINVAL;
114
101
case WSAEINVAL: return UV_EINVAL;
102
case WSAEPFNOSUPPORT: return UV_EINVAL;
103
case WSAESOCKTNOSUPPORT: return UV_EINVAL;
104
case ERROR_BEGINNING_OF_MEDIA: return UV_EIO;
105
case ERROR_BUS_RESET: return UV_EIO;
106
case ERROR_CRC: return UV_EIO;
107
case ERROR_DEVICE_DOOR_OPEN: return UV_EIO;
108
case ERROR_DEVICE_REQUIRES_CLEANING: return UV_EIO;
109
case ERROR_DISK_CORRUPT: return UV_EIO;
110
case ERROR_EOM_OVERFLOW: return UV_EIO;
111
case ERROR_FILEMARK_DETECTED: return UV_EIO;
112
case ERROR_GEN_FAILURE: return UV_EIO;
113
case ERROR_INVALID_BLOCK_LENGTH: return UV_EIO;
114
case ERROR_IO_DEVICE: return UV_EIO;
115
case ERROR_NO_DATA_DETECTED: return UV_EIO;
116
case ERROR_NO_SIGNAL_SENT: return UV_EIO;
117
case ERROR_OPEN_FAILED: return UV_EIO;
118
case ERROR_SETMARK_DETECTED: return UV_EIO;
119
case ERROR_SIGNAL_REFUSED: return UV_EIO;
115
120
case ERROR_CANT_RESOLVE_FILENAME: return UV_ELOOP;
116
121
case ERROR_TOO_MANY_OPEN_FILES: return UV_EMFILE;
117
122
case WSAEMFILE: return UV_EMFILE;
120
125
case ERROR_NETWORK_UNREACHABLE: return UV_ENETUNREACH;
121
126
case WSAENETUNREACH: return UV_ENETUNREACH;
122
127
case WSAENOBUFS: return UV_ENOBUFS;
128
case ERROR_DIRECTORY: return UV_ENOENT;
129
case ERROR_FILE_NOT_FOUND: return UV_ENOENT;
130
case ERROR_INVALID_NAME: return UV_ENOENT;
131
case ERROR_INVALID_REPARSE_DATA: return UV_ENOENT;
132
case ERROR_MOD_NOT_FOUND: return UV_ENOENT;
133
case ERROR_PATH_NOT_FOUND: return UV_ENOENT;
134
case WSAHOST_NOT_FOUND: return UV_ENOENT;
135
case WSANO_DATA: return UV_ENOENT;
136
case ERROR_NOT_ENOUGH_MEMORY: return UV_ENOMEM;
123
137
case ERROR_OUTOFMEMORY: return UV_ENOMEM;
124
138
case ERROR_CANNOT_MAKE: return UV_ENOSPC;
125
139
case ERROR_DISK_FULL: return UV_ENOSPC;
126
140
case ERROR_EA_TABLE_FULL: return UV_ENOSPC;
127
141
case ERROR_END_OF_MEDIA: return UV_ENOSPC;
128
142
case ERROR_HANDLE_DISK_FULL: return UV_ENOSPC;
129
case ERROR_WRITE_PROTECT: return UV_EROFS;
130
143
case ERROR_NOT_CONNECTED: return UV_ENOTCONN;
131
144
case WSAENOTCONN: return UV_ENOTCONN;
132
145
case ERROR_DIR_NOT_EMPTY: return UV_ENOTEMPTY;
146
case WSAENOTSOCK: return UV_ENOTSOCK;
133
147
case ERROR_NOT_SUPPORTED: return UV_ENOTSUP;
134
case ERROR_INSUFFICIENT_BUFFER: return UV_EINVAL;
135
case ERROR_INVALID_FLAGS: return UV_EBADF;
136
case ERROR_INVALID_PARAMETER: return UV_EINVAL;
137
case ERROR_NO_UNICODE_TRANSLATION: return UV_ECHARSET;
138
148
case ERROR_BROKEN_PIPE: return UV_EOF;
149
case ERROR_ACCESS_DENIED: return UV_EPERM;
150
case ERROR_PRIVILEGE_NOT_HELD: return UV_EPERM;
139
151
case ERROR_BAD_PIPE: return UV_EPIPE;
140
152
case ERROR_NO_DATA: return UV_EPIPE;
141
153
case ERROR_PIPE_NOT_CONNECTED: return UV_EPIPE;
142
case ERROR_PIPE_BUSY: return UV_EBUSY;
154
case WSAESHUTDOWN: return UV_EPIPE;
155
case WSAEPROTONOSUPPORT: return UV_EPROTONOSUPPORT;
156
case ERROR_WRITE_PROTECT: return UV_EROFS;
143
157
case ERROR_SEM_TIMEOUT: return UV_ETIMEDOUT;
144
158
case WSAETIMEDOUT: return UV_ETIMEDOUT;
145
case WSAHOST_NOT_FOUND: return UV_ENOENT;
146
case WSAENOTSOCK: return UV_ENOTSOCK;
147
159
case ERROR_NOT_SAME_DEVICE: return UV_EXDEV;
160
case ERROR_INVALID_FUNCTION: return UV_EISDIR;
148
161
default: return UV_UNKNOWN;