| [25] | 1 | /* |
|---|
| 2 | * tclWinError.c -- |
|---|
| 3 | * |
|---|
| 4 | * This file contains code for converting from Win32 errors to errno |
|---|
| 5 | * errors. |
|---|
| 6 | * |
|---|
| 7 | * Copyright (c) 1995-1996 by Sun Microsystems, Inc. |
|---|
| 8 | * |
|---|
| 9 | * See the file "license.terms" for information on usage and redistribution of |
|---|
| 10 | * this file, and for a DISCLAIMER OF ALL WARRANTIES. |
|---|
| 11 | * |
|---|
| 12 | * RCS: @(#) $Id: tclWinError.c,v 1.7 2005/11/04 00:06:50 dkf Exp $ |
|---|
| 13 | */ |
|---|
| 14 | |
|---|
| 15 | #include "tclInt.h" |
|---|
| 16 | |
|---|
| 17 | /* |
|---|
| 18 | * The following table contains the mapping from Win32 errors to errno errors. |
|---|
| 19 | */ |
|---|
| 20 | |
|---|
| 21 | static char errorTable[] = { |
|---|
| 22 | 0, |
|---|
| 23 | EINVAL, /* ERROR_INVALID_FUNCTION 1 */ |
|---|
| 24 | ENOENT, /* ERROR_FILE_NOT_FOUND 2 */ |
|---|
| 25 | ENOENT, /* ERROR_PATH_NOT_FOUND 3 */ |
|---|
| 26 | EMFILE, /* ERROR_TOO_MANY_OPEN_FILES 4 */ |
|---|
| 27 | EACCES, /* ERROR_ACCESS_DENIED 5 */ |
|---|
| 28 | EBADF, /* ERROR_INVALID_HANDLE 6 */ |
|---|
| 29 | ENOMEM, /* ERROR_ARENA_TRASHED 7 */ |
|---|
| 30 | ENOMEM, /* ERROR_NOT_ENOUGH_MEMORY 8 */ |
|---|
| 31 | ENOMEM, /* ERROR_INVALID_BLOCK 9 */ |
|---|
| 32 | E2BIG, /* ERROR_BAD_ENVIRONMENT 10 */ |
|---|
| 33 | ENOEXEC, /* ERROR_BAD_FORMAT 11 */ |
|---|
| 34 | EACCES, /* ERROR_INVALID_ACCESS 12 */ |
|---|
| 35 | EINVAL, /* ERROR_INVALID_DATA 13 */ |
|---|
| 36 | EFAULT, /* ERROR_OUT_OF_MEMORY 14 */ |
|---|
| 37 | ENOENT, /* ERROR_INVALID_DRIVE 15 */ |
|---|
| 38 | EACCES, /* ERROR_CURRENT_DIRECTORY 16 */ |
|---|
| 39 | EXDEV, /* ERROR_NOT_SAME_DEVICE 17 */ |
|---|
| 40 | ENOENT, /* ERROR_NO_MORE_FILES 18 */ |
|---|
| 41 | EROFS, /* ERROR_WRITE_PROTECT 19 */ |
|---|
| 42 | ENXIO, /* ERROR_BAD_UNIT 20 */ |
|---|
| 43 | EBUSY, /* ERROR_NOT_READY 21 */ |
|---|
| 44 | EIO, /* ERROR_BAD_COMMAND 22 */ |
|---|
| 45 | EIO, /* ERROR_CRC 23 */ |
|---|
| 46 | EIO, /* ERROR_BAD_LENGTH 24 */ |
|---|
| 47 | EIO, /* ERROR_SEEK 25 */ |
|---|
| 48 | EIO, /* ERROR_NOT_DOS_DISK 26 */ |
|---|
| 49 | ENXIO, /* ERROR_SECTOR_NOT_FOUND 27 */ |
|---|
| 50 | EBUSY, /* ERROR_OUT_OF_PAPER 28 */ |
|---|
| 51 | EIO, /* ERROR_WRITE_FAULT 29 */ |
|---|
| 52 | EIO, /* ERROR_READ_FAULT 30 */ |
|---|
| 53 | EIO, /* ERROR_GEN_FAILURE 31 */ |
|---|
| 54 | EACCES, /* ERROR_SHARING_VIOLATION 32 */ |
|---|
| 55 | EACCES, /* ERROR_LOCK_VIOLATION 33 */ |
|---|
| 56 | ENXIO, /* ERROR_WRONG_DISK 34 */ |
|---|
| 57 | ENFILE, /* ERROR_FCB_UNAVAILABLE 35 */ |
|---|
| 58 | ENFILE, /* ERROR_SHARING_BUFFER_EXCEEDED 36 */ |
|---|
| 59 | EINVAL, /* 37 */ |
|---|
| 60 | EINVAL, /* 38 */ |
|---|
| 61 | ENOSPC, /* ERROR_HANDLE_DISK_FULL 39 */ |
|---|
| 62 | EINVAL, /* 40 */ |
|---|
| 63 | EINVAL, /* 41 */ |
|---|
| 64 | EINVAL, /* 42 */ |
|---|
| 65 | EINVAL, /* 43 */ |
|---|
| 66 | EINVAL, /* 44 */ |
|---|
| 67 | EINVAL, /* 45 */ |
|---|
| 68 | EINVAL, /* 46 */ |
|---|
| 69 | EINVAL, /* 47 */ |
|---|
| 70 | EINVAL, /* 48 */ |
|---|
| 71 | EINVAL, /* 49 */ |
|---|
| 72 | ENODEV, /* ERROR_NOT_SUPPORTED 50 */ |
|---|
| 73 | EBUSY, /* ERROR_REM_NOT_LIST 51 */ |
|---|
| 74 | EEXIST, /* ERROR_DUP_NAME 52 */ |
|---|
| 75 | ENOENT, /* ERROR_BAD_NETPATH 53 */ |
|---|
| 76 | EBUSY, /* ERROR_NETWORK_BUSY 54 */ |
|---|
| 77 | ENODEV, /* ERROR_DEV_NOT_EXIST 55 */ |
|---|
| 78 | EAGAIN, /* ERROR_TOO_MANY_CMDS 56 */ |
|---|
| 79 | EIO, /* ERROR_ADAP_HDW_ERR 57 */ |
|---|
| 80 | EIO, /* ERROR_BAD_NET_RESP 58 */ |
|---|
| 81 | EIO, /* ERROR_UNEXP_NET_ERR 59 */ |
|---|
| 82 | EINVAL, /* ERROR_BAD_REM_ADAP 60 */ |
|---|
| 83 | EFBIG, /* ERROR_PRINTQ_FULL 61 */ |
|---|
| 84 | ENOSPC, /* ERROR_NO_SPOOL_SPACE 62 */ |
|---|
| 85 | ENOENT, /* ERROR_PRINT_CANCELLED 63 */ |
|---|
| 86 | ENOENT, /* ERROR_NETNAME_DELETED 64 */ |
|---|
| 87 | EACCES, /* ERROR_NETWORK_ACCESS_DENIED 65 */ |
|---|
| 88 | ENODEV, /* ERROR_BAD_DEV_TYPE 66 */ |
|---|
| 89 | ENOENT, /* ERROR_BAD_NET_NAME 67 */ |
|---|
| 90 | ENFILE, /* ERROR_TOO_MANY_NAMES 68 */ |
|---|
| 91 | EIO, /* ERROR_TOO_MANY_SESS 69 */ |
|---|
| 92 | EAGAIN, /* ERROR_SHARING_PAUSED 70 */ |
|---|
| 93 | EINVAL, /* ERROR_REQ_NOT_ACCEP 71 */ |
|---|
| 94 | EAGAIN, /* ERROR_REDIR_PAUSED 72 */ |
|---|
| 95 | EINVAL, /* 73 */ |
|---|
| 96 | EINVAL, /* 74 */ |
|---|
| 97 | EINVAL, /* 75 */ |
|---|
| 98 | EINVAL, /* 76 */ |
|---|
| 99 | EINVAL, /* 77 */ |
|---|
| 100 | EINVAL, /* 78 */ |
|---|
| 101 | EINVAL, /* 79 */ |
|---|
| 102 | EEXIST, /* ERROR_FILE_EXISTS 80 */ |
|---|
| 103 | EINVAL, /* 81 */ |
|---|
| 104 | ENOSPC, /* ERROR_CANNOT_MAKE 82 */ |
|---|
| 105 | EIO, /* ERROR_FAIL_I24 83 */ |
|---|
| 106 | ENFILE, /* ERROR_OUT_OF_STRUCTURES 84 */ |
|---|
| 107 | EEXIST, /* ERROR_ALREADY_ASSIGNED 85 */ |
|---|
| 108 | EPERM, /* ERROR_INVALID_PASSWORD 86 */ |
|---|
| 109 | EINVAL, /* ERROR_INVALID_PARAMETER 87 */ |
|---|
| 110 | EIO, /* ERROR_NET_WRITE_FAULT 88 */ |
|---|
| 111 | EAGAIN, /* ERROR_NO_PROC_SLOTS 89 */ |
|---|
| 112 | EINVAL, /* 90 */ |
|---|
| 113 | EINVAL, /* 91 */ |
|---|
| 114 | EINVAL, /* 92 */ |
|---|
| 115 | EINVAL, /* 93 */ |
|---|
| 116 | EINVAL, /* 94 */ |
|---|
| 117 | EINVAL, /* 95 */ |
|---|
| 118 | EINVAL, /* 96 */ |
|---|
| 119 | EINVAL, /* 97 */ |
|---|
| 120 | EINVAL, /* 98 */ |
|---|
| 121 | EINVAL, /* 99 */ |
|---|
| 122 | EINVAL, /* 100 */ |
|---|
| 123 | EINVAL, /* 101 */ |
|---|
| 124 | EINVAL, /* 102 */ |
|---|
| 125 | EINVAL, /* 103 */ |
|---|
| 126 | EINVAL, /* 104 */ |
|---|
| 127 | EINVAL, /* 105 */ |
|---|
| 128 | EINVAL, /* 106 */ |
|---|
| 129 | EXDEV, /* ERROR_DISK_CHANGE 107 */ |
|---|
| 130 | EAGAIN, /* ERROR_DRIVE_LOCKED 108 */ |
|---|
| 131 | EPIPE, /* ERROR_BROKEN_PIPE 109 */ |
|---|
| 132 | ENOENT, /* ERROR_OPEN_FAILED 110 */ |
|---|
| 133 | EINVAL, /* ERROR_BUFFER_OVERFLOW 111 */ |
|---|
| 134 | ENOSPC, /* ERROR_DISK_FULL 112 */ |
|---|
| 135 | EMFILE, /* ERROR_NO_MORE_SEARCH_HANDLES 113 */ |
|---|
| 136 | EBADF, /* ERROR_INVALID_TARGET_HANDLE 114 */ |
|---|
| 137 | EFAULT, /* ERROR_PROTECTION_VIOLATION 115 */ |
|---|
| 138 | EINVAL, /* 116 */ |
|---|
| 139 | EINVAL, /* 117 */ |
|---|
| 140 | EINVAL, /* 118 */ |
|---|
| 141 | EINVAL, /* 119 */ |
|---|
| 142 | EINVAL, /* 120 */ |
|---|
| 143 | EINVAL, /* 121 */ |
|---|
| 144 | EINVAL, /* 122 */ |
|---|
| 145 | ENOENT, /* ERROR_INVALID_NAME 123 */ |
|---|
| 146 | EINVAL, /* 124 */ |
|---|
| 147 | EINVAL, /* 125 */ |
|---|
| 148 | EINVAL, /* 126 */ |
|---|
| 149 | EINVAL, /* ERROR_PROC_NOT_FOUND 127 */ |
|---|
| 150 | ECHILD, /* ERROR_WAIT_NO_CHILDREN 128 */ |
|---|
| 151 | ECHILD, /* ERROR_CHILD_NOT_COMPLETE 129 */ |
|---|
| 152 | EBADF, /* ERROR_DIRECT_ACCESS_HANDLE 130 */ |
|---|
| 153 | EINVAL, /* ERROR_NEGATIVE_SEEK 131 */ |
|---|
| 154 | ESPIPE, /* ERROR_SEEK_ON_DEVICE 132 */ |
|---|
| 155 | EINVAL, /* 133 */ |
|---|
| 156 | EINVAL, /* 134 */ |
|---|
| 157 | EINVAL, /* 135 */ |
|---|
| 158 | EINVAL, /* 136 */ |
|---|
| 159 | EINVAL, /* 137 */ |
|---|
| 160 | EINVAL, /* 138 */ |
|---|
| 161 | EINVAL, /* 139 */ |
|---|
| 162 | EINVAL, /* 140 */ |
|---|
| 163 | EINVAL, /* 141 */ |
|---|
| 164 | EAGAIN, /* ERROR_BUSY_DRIVE 142 */ |
|---|
| 165 | EINVAL, /* 143 */ |
|---|
| 166 | EINVAL, /* 144 */ |
|---|
| 167 | EEXIST, /* ERROR_DIR_NOT_EMPTY 145 */ |
|---|
| 168 | EINVAL, /* 146 */ |
|---|
| 169 | EINVAL, /* 147 */ |
|---|
| 170 | EINVAL, /* 148 */ |
|---|
| 171 | EINVAL, /* 149 */ |
|---|
| 172 | EINVAL, /* 150 */ |
|---|
| 173 | EINVAL, /* 151 */ |
|---|
| 174 | EINVAL, /* 152 */ |
|---|
| 175 | EINVAL, /* 153 */ |
|---|
| 176 | EINVAL, /* 154 */ |
|---|
| 177 | EINVAL, /* 155 */ |
|---|
| 178 | EINVAL, /* 156 */ |
|---|
| 179 | EINVAL, /* 157 */ |
|---|
| 180 | EACCES, /* ERROR_NOT_LOCKED 158 */ |
|---|
| 181 | EINVAL, /* 159 */ |
|---|
| 182 | EINVAL, /* 160 */ |
|---|
| 183 | ENOENT, /* ERROR_BAD_PATHNAME 161 */ |
|---|
| 184 | EINVAL, /* 162 */ |
|---|
| 185 | EINVAL, /* 163 */ |
|---|
| 186 | EINVAL, /* 164 */ |
|---|
| 187 | EINVAL, /* 165 */ |
|---|
| 188 | EINVAL, /* 166 */ |
|---|
| 189 | EACCES, /* ERROR_LOCK_FAILED 167 */ |
|---|
| 190 | EINVAL, /* 168 */ |
|---|
| 191 | EINVAL, /* 169 */ |
|---|
| 192 | EINVAL, /* 170 */ |
|---|
| 193 | EINVAL, /* 171 */ |
|---|
| 194 | EINVAL, /* 172 */ |
|---|
| 195 | EINVAL, /* 173 */ |
|---|
| 196 | EINVAL, /* 174 */ |
|---|
| 197 | EINVAL, /* 175 */ |
|---|
| 198 | EINVAL, /* 176 */ |
|---|
| 199 | EINVAL, /* 177 */ |
|---|
| 200 | EINVAL, /* 178 */ |
|---|
| 201 | EINVAL, /* 179 */ |
|---|
| 202 | EINVAL, /* 180 */ |
|---|
| 203 | EINVAL, /* 181 */ |
|---|
| 204 | EINVAL, /* 182 */ |
|---|
| 205 | EEXIST, /* ERROR_ALREADY_EXISTS 183 */ |
|---|
| 206 | ECHILD, /* ERROR_NO_CHILD_PROCESS 184 */ |
|---|
| 207 | EINVAL, /* 185 */ |
|---|
| 208 | EINVAL, /* 186 */ |
|---|
| 209 | EINVAL, /* 187 */ |
|---|
| 210 | EINVAL, /* 188 */ |
|---|
| 211 | EINVAL, /* 189 */ |
|---|
| 212 | EINVAL, /* 190 */ |
|---|
| 213 | EINVAL, /* 191 */ |
|---|
| 214 | EINVAL, /* 192 */ |
|---|
| 215 | EINVAL, /* 193 */ |
|---|
| 216 | EINVAL, /* 194 */ |
|---|
| 217 | EINVAL, /* 195 */ |
|---|
| 218 | EINVAL, /* 196 */ |
|---|
| 219 | EINVAL, /* 197 */ |
|---|
| 220 | EINVAL, /* 198 */ |
|---|
| 221 | EINVAL, /* 199 */ |
|---|
| 222 | EINVAL, /* 200 */ |
|---|
| 223 | EINVAL, /* 201 */ |
|---|
| 224 | EINVAL, /* 202 */ |
|---|
| 225 | EINVAL, /* 203 */ |
|---|
| 226 | EINVAL, /* 204 */ |
|---|
| 227 | EINVAL, /* 205 */ |
|---|
| 228 | ENAMETOOLONG,/* ERROR_FILENAME_EXCED_RANGE 206 */ |
|---|
| 229 | EINVAL, /* 207 */ |
|---|
| 230 | EINVAL, /* 208 */ |
|---|
| 231 | EINVAL, /* 209 */ |
|---|
| 232 | EINVAL, /* 210 */ |
|---|
| 233 | EINVAL, /* 211 */ |
|---|
| 234 | EINVAL, /* 212 */ |
|---|
| 235 | EINVAL, /* 213 */ |
|---|
| 236 | EINVAL, /* 214 */ |
|---|
| 237 | EINVAL, /* 215 */ |
|---|
| 238 | EINVAL, /* 216 */ |
|---|
| 239 | EINVAL, /* 217 */ |
|---|
| 240 | EINVAL, /* 218 */ |
|---|
| 241 | EINVAL, /* 219 */ |
|---|
| 242 | EINVAL, /* 220 */ |
|---|
| 243 | EINVAL, /* 221 */ |
|---|
| 244 | EINVAL, /* 222 */ |
|---|
| 245 | EINVAL, /* 223 */ |
|---|
| 246 | EINVAL, /* 224 */ |
|---|
| 247 | EINVAL, /* 225 */ |
|---|
| 248 | EINVAL, /* 226 */ |
|---|
| 249 | EINVAL, /* 227 */ |
|---|
| 250 | EINVAL, /* 228 */ |
|---|
| 251 | EINVAL, /* 229 */ |
|---|
| 252 | EPIPE, /* ERROR_BAD_PIPE 230 */ |
|---|
| 253 | EAGAIN, /* ERROR_PIPE_BUSY 231 */ |
|---|
| 254 | EPIPE, /* ERROR_NO_DATA 232 */ |
|---|
| 255 | EPIPE, /* ERROR_PIPE_NOT_CONNECTED 233 */ |
|---|
| 256 | EINVAL, /* 234 */ |
|---|
| 257 | EINVAL, /* 235 */ |
|---|
| 258 | EINVAL, /* 236 */ |
|---|
| 259 | EINVAL, /* 237 */ |
|---|
| 260 | EINVAL, /* 238 */ |
|---|
| 261 | EINVAL, /* 239 */ |
|---|
| 262 | EINVAL, /* 240 */ |
|---|
| 263 | EINVAL, /* 241 */ |
|---|
| 264 | EINVAL, /* 242 */ |
|---|
| 265 | EINVAL, /* 243 */ |
|---|
| 266 | EINVAL, /* 244 */ |
|---|
| 267 | EINVAL, /* 245 */ |
|---|
| 268 | EINVAL, /* 246 */ |
|---|
| 269 | EINVAL, /* 247 */ |
|---|
| 270 | EINVAL, /* 248 */ |
|---|
| 271 | EINVAL, /* 249 */ |
|---|
| 272 | EINVAL, /* 250 */ |
|---|
| 273 | EINVAL, /* 251 */ |
|---|
| 274 | EINVAL, /* 252 */ |
|---|
| 275 | EINVAL, /* 253 */ |
|---|
| 276 | EINVAL, /* 254 */ |
|---|
| 277 | EINVAL, /* 255 */ |
|---|
| 278 | EINVAL, /* 256 */ |
|---|
| 279 | EINVAL, /* 257 */ |
|---|
| 280 | EINVAL, /* 258 */ |
|---|
| 281 | EINVAL, /* 259 */ |
|---|
| 282 | EINVAL, /* 260 */ |
|---|
| 283 | EINVAL, /* 261 */ |
|---|
| 284 | EINVAL, /* 262 */ |
|---|
| 285 | EINVAL, /* 263 */ |
|---|
| 286 | EINVAL, /* 264 */ |
|---|
| 287 | EINVAL, /* 265 */ |
|---|
| 288 | EINVAL, /* 266 */ |
|---|
| 289 | ENOTDIR, /* ERROR_DIRECTORY 267 */ |
|---|
| 290 | }; |
|---|
| 291 | |
|---|
| 292 | static const unsigned int tableLen = sizeof(errorTable); |
|---|
| 293 | |
|---|
| 294 | /* |
|---|
| 295 | * The following table contains the mapping from WinSock errors to |
|---|
| 296 | * errno errors. |
|---|
| 297 | */ |
|---|
| 298 | |
|---|
| 299 | static int wsaErrorTable[] = { |
|---|
| 300 | EWOULDBLOCK, /* WSAEWOULDBLOCK */ |
|---|
| 301 | EINPROGRESS, /* WSAEINPROGRESS */ |
|---|
| 302 | EALREADY, /* WSAEALREADY */ |
|---|
| 303 | ENOTSOCK, /* WSAENOTSOCK */ |
|---|
| 304 | EDESTADDRREQ, /* WSAEDESTADDRREQ */ |
|---|
| 305 | EMSGSIZE, /* WSAEMSGSIZE */ |
|---|
| 306 | EPROTOTYPE, /* WSAEPROTOTYPE */ |
|---|
| 307 | ENOPROTOOPT, /* WSAENOPROTOOPT */ |
|---|
| 308 | EPROTONOSUPPORT, /* WSAEPROTONOSUPPORT */ |
|---|
| 309 | ESOCKTNOSUPPORT, /* WSAESOCKTNOSUPPORT */ |
|---|
| 310 | EOPNOTSUPP, /* WSAEOPNOTSUPP */ |
|---|
| 311 | EPFNOSUPPORT, /* WSAEPFNOSUPPORT */ |
|---|
| 312 | EAFNOSUPPORT, /* WSAEAFNOSUPPORT */ |
|---|
| 313 | EADDRINUSE, /* WSAEADDRINUSE */ |
|---|
| 314 | EADDRNOTAVAIL, /* WSAEADDRNOTAVAIL */ |
|---|
| 315 | ENETDOWN, /* WSAENETDOWN */ |
|---|
| 316 | ENETUNREACH, /* WSAENETUNREACH */ |
|---|
| 317 | ENETRESET, /* WSAENETRESET */ |
|---|
| 318 | ECONNABORTED, /* WSAECONNABORTED */ |
|---|
| 319 | ECONNRESET, /* WSAECONNRESET */ |
|---|
| 320 | ENOBUFS, /* WSAENOBUFS */ |
|---|
| 321 | EISCONN, /* WSAEISCONN */ |
|---|
| 322 | ENOTCONN, /* WSAENOTCONN */ |
|---|
| 323 | ESHUTDOWN, /* WSAESHUTDOWN */ |
|---|
| 324 | ETOOMANYREFS, /* WSAETOOMANYREFS */ |
|---|
| 325 | ETIMEDOUT, /* WSAETIMEDOUT */ |
|---|
| 326 | ECONNREFUSED, /* WSAECONNREFUSED */ |
|---|
| 327 | ELOOP, /* WSAELOOP */ |
|---|
| 328 | ENAMETOOLONG, /* WSAENAMETOOLONG */ |
|---|
| 329 | EHOSTDOWN, /* WSAEHOSTDOWN */ |
|---|
| 330 | EHOSTUNREACH, /* WSAEHOSTUNREACH */ |
|---|
| 331 | ENOTEMPTY, /* WSAENOTEMPTY */ |
|---|
| 332 | EAGAIN, /* WSAEPROCLIM */ |
|---|
| 333 | EUSERS, /* WSAEUSERS */ |
|---|
| 334 | EDQUOT, /* WSAEDQUOT */ |
|---|
| 335 | ESTALE, /* WSAESTALE */ |
|---|
| 336 | EREMOTE, /* WSAEREMOTE */ |
|---|
| 337 | }; |
|---|
| 338 | |
|---|
| 339 | /* |
|---|
| 340 | *---------------------------------------------------------------------- |
|---|
| 341 | * |
|---|
| 342 | * TclWinConvertError -- |
|---|
| 343 | * |
|---|
| 344 | * This routine converts a Win32 error into an errno value. |
|---|
| 345 | * |
|---|
| 346 | * Results: |
|---|
| 347 | * None. |
|---|
| 348 | * |
|---|
| 349 | * Side effects: |
|---|
| 350 | * Sets the errno global variable. |
|---|
| 351 | * |
|---|
| 352 | *---------------------------------------------------------------------- |
|---|
| 353 | */ |
|---|
| 354 | |
|---|
| 355 | void |
|---|
| 356 | TclWinConvertError( |
|---|
| 357 | DWORD errCode) /* Win32 error code. */ |
|---|
| 358 | { |
|---|
| 359 | if (errCode >= tableLen) { |
|---|
| 360 | Tcl_SetErrno(EINVAL); |
|---|
| 361 | } else { |
|---|
| 362 | Tcl_SetErrno(errorTable[errCode]); |
|---|
| 363 | } |
|---|
| 364 | } |
|---|
| 365 | |
|---|
| 366 | /* |
|---|
| 367 | *---------------------------------------------------------------------- |
|---|
| 368 | * |
|---|
| 369 | * TclWinConvertWSAError -- |
|---|
| 370 | * |
|---|
| 371 | * This routine converts a WinSock error into an errno value. |
|---|
| 372 | * |
|---|
| 373 | * Results: |
|---|
| 374 | * None. |
|---|
| 375 | * |
|---|
| 376 | * Side effects: |
|---|
| 377 | * Sets the errno global variable. |
|---|
| 378 | * |
|---|
| 379 | *---------------------------------------------------------------------- |
|---|
| 380 | */ |
|---|
| 381 | |
|---|
| 382 | void |
|---|
| 383 | TclWinConvertWSAError( |
|---|
| 384 | DWORD errCode) /* Win32 error code. */ |
|---|
| 385 | { |
|---|
| 386 | if ((errCode >= WSAEWOULDBLOCK) && (errCode <= WSAEREMOTE)) { |
|---|
| 387 | Tcl_SetErrno(wsaErrorTable[errCode - WSAEWOULDBLOCK]); |
|---|
| 388 | } else { |
|---|
| 389 | Tcl_SetErrno(EINVAL); |
|---|
| 390 | } |
|---|
| 391 | } |
|---|