Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/PC/errmap.h
12 views
1
int
2
winerror_to_errno(int winerror)
3
{
4
// Unwrap FACILITY_WIN32 HRESULT errors.
5
if ((winerror & 0xFFFF0000) == 0x80070000) {
6
winerror &= 0x0000FFFF;
7
}
8
9
// Winsock error codes (10000-11999) are errno values.
10
if (winerror >= 10000 && winerror < 12000) {
11
switch (winerror) {
12
case WSAEINTR:
13
case WSAEBADF:
14
case WSAEACCES:
15
case WSAEFAULT:
16
case WSAEINVAL:
17
case WSAEMFILE:
18
// Winsock definitions of errno values. See WinSock2.h
19
return winerror - 10000;
20
default:
21
return winerror;
22
}
23
}
24
25
switch (winerror) {
26
case ERROR_FILE_NOT_FOUND: // 2
27
case ERROR_PATH_NOT_FOUND: // 3
28
case ERROR_INVALID_DRIVE: // 15
29
case ERROR_NO_MORE_FILES: // 18
30
case ERROR_BAD_NETPATH: // 53
31
case ERROR_BAD_NET_NAME: // 67
32
case ERROR_BAD_PATHNAME: // 161
33
case ERROR_FILENAME_EXCED_RANGE: // 206
34
return ENOENT;
35
36
case ERROR_BAD_ENVIRONMENT: // 10
37
return E2BIG;
38
39
case ERROR_BAD_FORMAT: // 11
40
case ERROR_INVALID_STARTING_CODESEG: // 188
41
case ERROR_INVALID_STACKSEG: // 189
42
case ERROR_INVALID_MODULETYPE: // 190
43
case ERROR_INVALID_EXE_SIGNATURE: // 191
44
case ERROR_EXE_MARKED_INVALID: // 192
45
case ERROR_BAD_EXE_FORMAT: // 193
46
case ERROR_ITERATED_DATA_EXCEEDS_64k: // 194
47
case ERROR_INVALID_MINALLOCSIZE: // 195
48
case ERROR_DYNLINK_FROM_INVALID_RING: // 196
49
case ERROR_IOPL_NOT_ENABLED: // 197
50
case ERROR_INVALID_SEGDPL: // 198
51
case ERROR_AUTODATASEG_EXCEEDS_64k: // 199
52
case ERROR_RING2SEG_MUST_BE_MOVABLE: // 200
53
case ERROR_RELOC_CHAIN_XEEDS_SEGLIM: // 201
54
case ERROR_INFLOOP_IN_RELOC_CHAIN: // 202
55
return ENOEXEC;
56
57
case ERROR_INVALID_HANDLE: // 6
58
case ERROR_INVALID_TARGET_HANDLE: // 114
59
case ERROR_DIRECT_ACCESS_HANDLE: // 130
60
return EBADF;
61
62
case ERROR_WAIT_NO_CHILDREN: // 128
63
case ERROR_CHILD_NOT_COMPLETE: // 129
64
return ECHILD;
65
66
case ERROR_NO_PROC_SLOTS: // 89
67
case ERROR_MAX_THRDS_REACHED: // 164
68
case ERROR_NESTING_NOT_ALLOWED: // 215
69
return EAGAIN;
70
71
case ERROR_ARENA_TRASHED: // 7
72
case ERROR_NOT_ENOUGH_MEMORY: // 8
73
case ERROR_INVALID_BLOCK: // 9
74
case ERROR_NOT_ENOUGH_QUOTA: // 1816
75
return ENOMEM;
76
77
case ERROR_ACCESS_DENIED: // 5
78
case ERROR_CURRENT_DIRECTORY: // 16
79
case ERROR_WRITE_PROTECT: // 19
80
case ERROR_BAD_UNIT: // 20
81
case ERROR_NOT_READY: // 21
82
case ERROR_BAD_COMMAND: // 22
83
case ERROR_CRC: // 23
84
case ERROR_BAD_LENGTH: // 24
85
case ERROR_SEEK: // 25
86
case ERROR_NOT_DOS_DISK: // 26
87
case ERROR_SECTOR_NOT_FOUND: // 27
88
case ERROR_OUT_OF_PAPER: // 28
89
case ERROR_WRITE_FAULT: // 29
90
case ERROR_READ_FAULT: // 30
91
case ERROR_GEN_FAILURE: // 31
92
case ERROR_SHARING_VIOLATION: // 32
93
case ERROR_LOCK_VIOLATION: // 33
94
case ERROR_WRONG_DISK: // 34
95
case ERROR_SHARING_BUFFER_EXCEEDED: // 36
96
case ERROR_NETWORK_ACCESS_DENIED: // 65
97
case ERROR_CANNOT_MAKE: // 82
98
case ERROR_FAIL_I24: // 83
99
case ERROR_DRIVE_LOCKED: // 108
100
case ERROR_SEEK_ON_DEVICE: // 132
101
case ERROR_NOT_LOCKED: // 158
102
case ERROR_LOCK_FAILED: // 167
103
case 35: // 35 (undefined)
104
return EACCES;
105
106
case ERROR_FILE_EXISTS: // 80
107
case ERROR_ALREADY_EXISTS: // 183
108
return EEXIST;
109
110
case ERROR_NOT_SAME_DEVICE: // 17
111
return EXDEV;
112
113
case ERROR_DIRECTORY: // 267 (bpo-12802)
114
return ENOTDIR;
115
116
case ERROR_TOO_MANY_OPEN_FILES: // 4
117
return EMFILE;
118
119
case ERROR_DISK_FULL: // 112
120
return ENOSPC;
121
122
case ERROR_BROKEN_PIPE: // 109
123
case ERROR_NO_DATA: // 232 (bpo-13063)
124
return EPIPE;
125
126
case ERROR_DIR_NOT_EMPTY: // 145
127
return ENOTEMPTY;
128
129
case ERROR_NO_UNICODE_TRANSLATION: // 1113
130
return EILSEQ;
131
132
case ERROR_INVALID_FUNCTION: // 1
133
case ERROR_INVALID_ACCESS: // 12
134
case ERROR_INVALID_DATA: // 13
135
case ERROR_INVALID_PARAMETER: // 87
136
case ERROR_NEGATIVE_SEEK: // 131
137
default:
138
return EINVAL;
139
}
140
}
141
142