1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
-
+
+
+
+
+
+
+
+
+
-
+
|
/*
* tclWinError.c --
*
* This file contains code for converting from Win32 errors to
* errno errors.
*
* Copyright (c) 1995-1996 by Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#include "tclWinInt.h"
#include "tclPort.h"
#ifndef WSAEWOULDBLOCK
# define WSAEWOULDBLOCK 10035L
#endif
#ifndef __WIN32__
# define DWORD unsigned int
#endif
/*
* The following table contains the mapping from Win32 errors to
* errno errors.
*/
static char errorTable[] = {
static CONST unsigned char errorTable[] = {
0,
EINVAL, /* ERROR_INVALID_FUNCTION 1 */
ENOENT, /* ERROR_FILE_NOT_FOUND 2 */
ENOENT, /* ERROR_PATH_NOT_FOUND 3 */
EMFILE, /* ERROR_TOO_MANY_OPEN_FILES 4 */
EACCES, /* ERROR_ACCESS_DENIED 5 */
EBADF, /* ERROR_INVALID_HANDLE 6 */
|
| ︙ | | |
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
|
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
|
-
+
-
-
-
+
|
EINVAL, /* 260 */
EINVAL, /* 261 */
EINVAL, /* 262 */
EINVAL, /* 263 */
EINVAL, /* 264 */
EINVAL, /* 265 */
EINVAL, /* 266 */
ENOTDIR, /* ERROR_DIRECTORY 267 */
ENOTDIR /* ERROR_DIRECTORY 267 */
};
static const unsigned int tableLen = sizeof(errorTable);
/*
* The following table contains the mapping from WinSock errors to
* errno errors.
*/
static int wsaErrorTable[] = {
static CONST unsigned char wsaErrorTable[] = {
EWOULDBLOCK, /* WSAEWOULDBLOCK */
EINPROGRESS, /* WSAEINPROGRESS */
EALREADY, /* WSAEALREADY */
ENOTSOCK, /* WSAENOTSOCK */
EDESTADDRREQ, /* WSAEDESTADDRREQ */
EMSGSIZE, /* WSAEMSGSIZE */
EPROTOTYPE, /* WSAEPROTOTYPE */
|
| ︙ | | |
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
|
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
|
-
+
|
EHOSTDOWN, /* WSAEHOSTDOWN */
EHOSTUNREACH, /* WSAEHOSTUNREACH */
ENOTEMPTY, /* WSAENOTEMPTY */
EAGAIN, /* WSAEPROCLIM */
EUSERS, /* WSAEUSERS */
EDQUOT, /* WSAEDQUOT */
ESTALE, /* WSAESTALE */
EREMOTE, /* WSAEREMOTE */
EREMOTE /* WSAEREMOTE */
};
/*
*----------------------------------------------------------------------
*
* TclWinConvertError --
*
|
| ︙ | | |
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
|
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
|
-
+
|
*----------------------------------------------------------------------
*/
void
TclWinConvertError(errCode)
DWORD errCode; /* Win32 error code. */
{
if (errCode >= tableLen) {
if (errCode >= sizeof(errorTable)) {
Tcl_SetErrno(EINVAL);
} else {
Tcl_SetErrno(errorTable[errCode]);
}
}
/*
|
| ︙ | | |
378
379
380
381
382
383
384
385
386
387
388
389
390
|
384
385
386
387
388
389
390
391
392
393
394
395
396
397
|
-
-
+
+
+
|
*----------------------------------------------------------------------
*/
void
TclWinConvertWSAError(errCode)
DWORD errCode; /* Win32 error code. */
{
if ((errCode >= WSAEWOULDBLOCK) && (errCode <= WSAEREMOTE)) {
Tcl_SetErrno(wsaErrorTable[errCode - WSAEWOULDBLOCK]);
errCode -= WSAEWOULDBLOCK;
if ((errCode <= (DWORD) sizeof(wsaErrorTable))) {
Tcl_SetErrno(wsaErrorTable[errCode]);
} else {
Tcl_SetErrno(EINVAL);
}
}
|