OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [tcl/] [win/] [tclWinError.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.