1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/*
* 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.
*
* RCS: @(#) $Id: tclWinError.c,v 1.7.12.1 2008/12/07 01:23:34 davygrvy Exp $
*/
#include "tclInt.h"
/*
* The following table contains the mapping from Win32 errors to errno errors.
*/
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/*
* 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.
*
* RCS: @(#) $Id: tclWinError.c,v 1.7.12.2 2008/12/10 02:20:25 davygrvy Exp $
*/
#include "tclInt.h"
/*
* The following table contains the mapping from Win32 errors to errno errors.
*/
|
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
/*
* The following tables contains the mapping from WinSock errors to
* errno errors.
*/
static int wsaErrorTable1[] = {
EWOULDBLOCK, /* WSAEWOULDBLOCK */
EINPROGRESS, /* WSAEINPROGRESS */
EALREADY, /* WSAEALREADY */
ENOTSOCK, /* WSAENOTSOCK */
EDESTADDRREQ, /* WSAEDESTADDRREQ */
EMSGSIZE, /* WSAEMSGSIZE */
EPROTOTYPE, /* WSAEPROTOTYPE */
|
>
>
>
>
>
>
>
>
>
>
|
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
|
/*
* The following tables contains the mapping from WinSock errors to
* errno errors.
*/
static int wsaErrorTable1[] = {
EINVAL, /* WSAEINTR */
EINVAL, /* WSAEBADF */
EINVAL, /* WSAEACCES */
EINVAL, /* WSAEFAULT */
EINVAL, /* WSAEINVAL */
EINVAL, /* WSAEMFILE */
};
static int wsaErrorTable2[] = {
EWOULDBLOCK, /* WSAEWOULDBLOCK */
EINPROGRESS, /* WSAEINPROGRESS */
EALREADY, /* WSAEALREADY */
ENOTSOCK, /* WSAENOTSOCK */
EDESTADDRREQ, /* WSAEDESTADDRREQ */
EMSGSIZE, /* WSAEMSGSIZE */
EPROTOTYPE, /* WSAEPROTOTYPE */
|
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
|
/*
* These error codes are very windows specific and have no POSIX
* translation, yet.
*
* TODO: Fixme!
*/
static int wsaErrorTable2[] = {
EINVAL, /* WSASYSNOTREADY WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable. */
EINVAL, /* WSAVERNOTSUPPORTED The Windows Sockets version requested is not supported. */
EINVAL, /* WSANOTINITIALISED Either the application has not called WSAStartup, or WSAStartup failed. */
0,
0,
0,
0,
|
|
|
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
|
/*
* These error codes are very windows specific and have no POSIX
* translation, yet.
*
* TODO: Fixme!
*/
static int wsaErrorTable3[] = {
EINVAL, /* WSASYSNOTREADY WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable. */
EINVAL, /* WSAVERNOTSUPPORTED The Windows Sockets version requested is not supported. */
EINVAL, /* WSANOTINITIALISED Either the application has not called WSAStartup, or WSAStartup failed. */
0,
0,
0,
0,
|
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
|
/*
* These error codes are very windows specific and have no POSIX
* translation, yet.
*
* TODO: Fixme!
*/
static int wsaErrorTable3[] = {
EINVAL, /* WSAHOST_NOT_FOUND, Authoritative Answer: Host not found */
EINVAL, /* WSATRY_AGAIN, Non-Authoritative: Host not found, or SERVERFAIL */
EINVAL, /* WSANO_RECOVERY, Non-recoverable errors, FORMERR, REFUSED, NOTIMP */
EINVAL, /* WSANO_DATA, Valid name, no data record of requested type */
EINVAL, /* WSA_QOS_RECEIVERS, at least one Reserve has arrived */
EINVAL, /* WSA_QOS_SENDERS, at least one Path has arrived */
EINVAL, /* WSA_QOS_NO_SENDERS, there are no senders */
|
|
|
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
|
/*
* These error codes are very windows specific and have no POSIX
* translation, yet.
*
* TODO: Fixme!
*/
static int wsaErrorTable4[] = {
EINVAL, /* WSAHOST_NOT_FOUND, Authoritative Answer: Host not found */
EINVAL, /* WSATRY_AGAIN, Non-Authoritative: Host not found, or SERVERFAIL */
EINVAL, /* WSANO_RECOVERY, Non-recoverable errors, FORMERR, REFUSED, NOTIMP */
EINVAL, /* WSANO_DATA, Valid name, no data record of requested type */
EINVAL, /* WSA_QOS_RECEIVERS, at least one Reserve has arrived */
EINVAL, /* WSA_QOS_SENDERS, at least one Path has arrived */
EINVAL, /* WSA_QOS_NO_SENDERS, there are no senders */
|
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
|
*----------------------------------------------------------------------
*/
void
TclWinConvertWSAError(
DWORD errCode) /* Win32 error code. */
{
if ((errCode >= WSAEWOULDBLOCK) && (errCode <= WSAEREMOTE)) {
Tcl_SetErrno(wsaErrorTable1[errCode - WSAEWOULDBLOCK]);
} else if ((errCode >= WSASYSNOTREADY) && (errCode <= WSAEREFUSED)) {
Tcl_SetErrno(wsaErrorTable2[errCode - WSASYSNOTREADY]);
} else if ((errCode >= WSAHOST_NOT_FOUND) && (errCode <= WSA_QOS_RESERVED_PETYPE)) {
Tcl_SetErrno(wsaErrorTable3[errCode - WSAHOST_NOT_FOUND]);
} else {
Tcl_SetErrno(EINVAL);
}
}
|
>
>
|
|
|
|
|
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
|
*----------------------------------------------------------------------
*/
void
TclWinConvertWSAError(
DWORD errCode) /* Win32 error code. */
{
if ((errCode >= WSAEINTR) && (errCode <= WSAEMFILE)) {
Tcl_SetErrno(wsaErrorTable1[errCode - WSAEINTR]);
} else if ((errCode >= WSAEWOULDBLOCK) && (errCode <= WSAEREMOTE)) {
Tcl_SetErrno(wsaErrorTable2[errCode - WSAEWOULDBLOCK]);
} else if ((errCode >= WSASYSNOTREADY) && (errCode <= WSAEREFUSED)) {
Tcl_SetErrno(wsaErrorTable3[errCode - WSASYSNOTREADY]);
} else if ((errCode >= WSAHOST_NOT_FOUND) && (errCode <= WSA_QOS_RESERVED_PETYPE)) {
Tcl_SetErrno(wsaErrorTable4[errCode - WSAHOST_NOT_FOUND]);
} else {
Tcl_SetErrno(EINVAL);
}
}
|