source: trunk/tools/common/kError.h@ 8706

Last change on this file since 8706 was 8003, checked in by bird, 24 years ago

New kFile* classes; now in sync with os2tools.

File size: 13.1 KB
Line 
1/* $Id: kError.h,v 1.1 2002-02-24 02:47:24 bird Exp $
2 *
3 * Error Wrapper.
4 *
5 * Copyright (c) 2001 knut st. osmundsen (knut.stange.osmundsen@mynd.no)
6 *
7 */
8
9#ifndef _kError_h_
10#define _kError_h_
11
12
13
14class kError
15{
16public:
17 /**
18 * OS/2 Error Codes.
19 */
20 enum enmError
21 {
22 NO = 0,
23 INVALID_FUNCTION = 1,
24 FILE_NOT_FOUND = 2,
25 PATH_NOT_FOUND = 3,
26 TOO_MANY_OPEN_FILES = 4,
27 ACCESS_DENIED = 5,
28 INVALID_HANDLE = 6,
29 ARENA_TRASHED = 7,
30 NOT_ENOUGH_MEMORY = 8,
31 INVALID_BLOCK = 9,
32 BAD_ENVIRONMENT = 10,
33 BAD_FORMAT = 11,
34 INVALID_ACCESS = 12,
35 INVALID_DATA = 13,
36 INVALID_DRIVE = 15,
37 CURRENT_DIRECTORY = 16,
38 NOT_SAME_DEVICE = 17,
39 NO_MORE_FILES = 18,
40 WRITE_PROTECT = 19,
41 BAD_UNIT = 20,
42 NOT_READY = 21,
43 BAD_COMMAND = 22,
44 CRC = 23,
45 BAD_LENGTH = 24,
46 SEEK = 25,
47 NOT_DOS_DISK = 26,
48 SECTOR_NOT_FOUND = 27,
49 OUT_OF_PAPER = 28,
50 WRITE_FAULT = 29,
51 READ_FAULT = 30,
52 GEN_FAILURE = 31,
53 SHARING_VIOLATION = 32,
54 LOCK_VIOLATION = 33,
55 WRONG_DISK = 34,
56 FCB_UNAVAILABLE = 35,
57 SHARING_BUFFER_EXCEEDED = 36,
58 CODE_PAGE_MISMATCHED = 37,
59 HANDLE_EOF = 38,
60 HANDLE_DISK_FULL = 39,
61 NOT_SUPPORTED = 50,
62 REM_NOT_LIST = 51,
63 DUP_NAME = 52,
64 BAD_NETPATH = 53,
65 NETWORK_BUSY = 54,
66 DEV_NOT_EXIST = 55,
67 TOO_MANY_CMDS = 56,
68 ADAP_HDW_ERR = 57,
69 BAD_NET_RESP = 58,
70 UNEXP_NET_ERR = 59,
71 BAD_REM_ADAP = 60,
72 PRINTQ_FULL = 61,
73 NO_SPOOL_SPACE = 62,
74 PRINT_CANCELLED = 63,
75 NETNAME_DELETED = 64,
76 NETWORK_ACCESS_DENIED = 65,
77 BAD_DEV_TYPE = 66,
78 BAD_NET_NAME = 67,
79 TOO_MANY_NAMES = 68,
80 TOO_MANY_SESS = 69,
81 SHARING_PAUSED = 70,
82 REQ_NOT_ACCEP = 71,
83 REDIR_PAUSED = 72,
84 SBCS_ATT_WRITE_PROT = 73,
85 SBCS_GENERAL_FAILURE = 74,
86 XGA_OUT_MEMORY = 75,
87 FILE_EXISTS = 80,
88 DUP_FCB = 81,
89 CANNOT_MAKE = 82,
90 FAIL_I24 = 83,
91 OUT_OF_STRUCTURES = 84,
92 ALREADY_ASSIGNED = 85,
93 INVALID_PASSWORD = 86,
94 INVALID_PARAMETER = 87,
95 NET_WRITE_FAULT = 88,
96 NO_PROC_SLOTS = 89,
97 NOT_FROZEN = 90,
98 TSTOVFL = 91,
99 TSTDUP = 92,
100 NO_ITEMS = 93,
101 INTERRUPT = 95,
102 DEVICE_IN_USE = 99,
103 TOO_MANY_SEMAPHORES = 100,
104 EXCL_SEM_ALREADY_OWNED = 101,
105 SEM_IS_SET = 102,
106 TOO_MANY_SEM_REQUESTS = 103,
107 INVALID_AT_INTERRUPT_TIME= 104,
108 SEM_OWNER_DIED = 105,
109 SEM_USER_LIMIT = 106,
110 DISK_CHANGE = 107,
111 DRIVE_LOCKED = 108,
112 BROKEN_PIPE = 109,
113 OPEN_FAILED = 110,
114 BUFFER_OVERFLOW = 111,
115 DISK_FULL = 112,
116 NO_MORE_SEARCH_HANDLES = 113,
117 INVALID_TARGET_HANDLE = 114,
118 PROTECTION_VIOLATION = 115,
119 VIOKBD_REQUEST = 116,
120 INVALID_CATEGORY = 117,
121 INVALID_VERIFY_SWITCH = 118,
122 BAD_DRIVER_LEVEL = 119,
123 CALL_NOT_IMPLEMENTED = 120,
124 SEM_TIMEOUT = 121,
125 INSUFFICIENT_BUFFER = 122,
126 INVALID_NAME = 123,
127 INVALID_LEVEL = 124,
128 NO_VOLUME_LABEL = 125,
129 MOD_NOT_FOUND = 126,
130 PROC_NOT_FOUND = 127,
131 WAIT_NO_CHILDREN = 128,
132 CHILD_NOT_COMPLETE = 129,
133 DIRECT_ACCESS_HANDLE = 130,
134 NEGATIVE_SEEK = 131,
135 SEEK_ON_DEVICE = 132,
136 IS_JOIN_TARGET = 133,
137 IS_JOINED = 134,
138 IS_SUBSTED = 135,
139 NOT_JOINED = 136,
140 NOT_SUBSTED = 137,
141 JOIN_TO_JOIN = 138,
142 SUBST_TO_SUBST = 139,
143 JOIN_TO_SUBST = 140,
144 SUBST_TO_JOIN = 141,
145 BUSY_DRIVE = 142,
146 SAME_DRIVE = 143,
147 DIR_NOT_ROOT = 144,
148 DIR_NOT_EMPTY = 145,
149 IS_SUBST_PATH = 146,
150 IS_JOIN_PATH = 147,
151 PATH_BUSY = 148,
152 IS_SUBST_TARGET = 149,
153 SYSTEM_TRACE = 150,
154 INVALID_EVENT_COUNT = 151,
155 TOO_MANY_MUXWAITERS = 152,
156 INVALID_LIST_FORMAT = 153,
157 LABEL_TOO_LONG = 154,
158 TOO_MANY_TCBS = 155,
159 SIGNAL_REFUSED = 156,
160 DISCARDED = 157,
161 NOT_LOCKED = 158,
162 BAD_THREADID_ADDR = 159,
163 BAD_ARGUMENTS = 160,
164 BAD_PATHNAME = 161,
165 SIGNAL_PENDING = 162,
166 UNCERTAIN_MEDIA = 163,
167 MAX_THRDS_REACHED = 164,
168 MONITORS_NOT_SUPPORTED = 165,
169 UNC_DRIVER_NOT_INSTALLED= 166,
170 LOCK_FAILED = 167,
171 SWAPIO_FAILED = 168,
172 SWAPIN_FAILED = 169,
173 BUSY = 170,
174 INT_TOO_LONG = 171,
175 CANCEL_VIOLATION = 173,
176 ATOMIC_LOCK_NOT_SUPPORTED= 174,
177 READ_LOCKS_NOT_SUPPORTED= 175,
178 INVALID_SEGMENT_NUMBER = 180,
179 INVALID_CALLGATE = 181,
180 INVALID_ORDINAL = 182,
181 ALREADY_EXISTS = 183,
182 NO_CHILD_PROCESS = 184,
183 CHILD_ALIVE_NOWAIT = 185,
184 INVALID_FLAG_NUMBER = 186,
185 SEM_NOT_FOUND = 187,
186 INVALID_STARTING_CODESEG= 188,
187 INVALID_STACKSEG = 189,
188 INVALID_MODULETYPE = 190,
189 INVALID_EXE_SIGNATURE = 191,
190 EXE_MARKED_INVALID = 192,
191 BAD_EXE_FORMAT = 193,
192 ITERATED_DATA_EXCEEDS_64k= 194,
193 INVALID_MINALLOCSIZE = 195,
194 DYNLINK_FROM_INVALID_RING= 196,
195 IOPL_NOT_ENABLED = 197,
196 INVALID_SEGDPL = 198,
197 AUTODATASEG_EXCEEDS_64k = 199,
198 RING2SEG_MUST_BE_MOVABLE= 200,
199 RELOC_CHAIN_XEEDS_SEGLIM= 201,
200 INFLOOP_IN_RELOC_CHAIN = 202,
201 ENVVAR_NOT_FOUND = 203,
202 NOT_CURRENT_CTRY = 204,
203 NO_SIGNAL_SENT = 205,
204 FILENAME_EXCED_RANGE = 206,
205 RING2_STACK_IN_USE = 207,
206 META_EXPANSION_TOO_LONG = 208,
207 INVALID_SIGNAL_NUMBER = 209,
208 THREAD_1_INACTIVE = 210,
209 INFO_NOT_AVAIL = 211,
210 LOCKED = 212,
211 BAD_DYNALINK = 213,
212 TOO_MANY_MODULES = 214,
213 NESTING_NOT_ALLOWED = 215,
214 CANNOT_SHRINK = 216,
215 ZOMBIE_PROCESS = 217,
216 STACK_IN_HIGH_MEMORY = 218,
217 INVALID_EXITROUTINE_RING= 219,
218 GETBUF_FAILED = 220,
219 FLUSHBUF_FAILED = 221,
220 TRANSFER_TOO_LONG = 222,
221 FORCENOSWAP_FAILED = 223,
222 SMG_NO_TARGET_WINDOW = 224,
223 NO_CHILDREN = 228,
224 INVALID_SCREEN_GROUP = 229,
225 BAD_PIPE = 230,
226 PIPE_BUSY = 231,
227 NO_DATA = 232,
228 PIPE_NOT_CONNECTED = 233,
229 MORE_DATA = 234,
230 VC_DISCONNECTED = 240,
231 CIRCULARITY_REQUESTED = 250,
232 DIRECTORY_IN_CDS = 251,
233 INVALID_FSD_NAME = 252,
234 INVALID_PATH = 253,
235 INVALID_EA_NAME = 254,
236 EA_LIST_INCONSISTENT = 255,
237 EA_LIST_TOO_LONG = 256,
238 NO_META_MATCH = 257,
239 FINDNOTIFY_TIMEOUT = 258,
240 NO_MORE_ITEMS = 259,
241 SEARCH_STRUC_REUSED = 260,
242 CHAR_NOT_FOUND = 261,
243 TOO_MUCH_STACK = 262,
244 INVALID_ATTR = 263,
245 INVALID_STARTING_RING = 264,
246 INVALID_DLL_INIT_RING = 265,
247 CANNOT_COPY = 266,
248 DIRECTORY = 267,
249 OPLOCKED_FILE = 268,
250 OPLOCK_THREAD_EXISTS = 269,
251 VOLUME_CHANGED = 270,
252 FINDNOTIFY_HANDLE_IN_USE= 271,
253 FINDNOTIFY_HANDLE_CLOSED= 272,
254 NOTIFY_OBJECT_REMOVED = 273,
255 ALREADY_SHUTDOWN = 274,
256 EAS_DIDNT_FIT = 275,
257 EA_FILE_CORRUPT = 276,
258 EA_TABLE_FULL = 277,
259 INVALID_EA_HANDLE = 278,
260 NO_CLUSTER = 279,
261 CREATE_EA_FILE = 280,
262 CANNOT_OPEN_EA_FILE = 281,
263 EAS_NOT_SUPPORTED = 282,
264 NEED_EAS_FOUND = 283,
265 DUPLICATE_HANDLE = 284,
266 DUPLICATE_NAME = 285,
267 EMPTY_MUXWAIT = 286,
268 MUTEX_OWNED = 287,
269 NOT_OWNER = 288,
270 PARAM_TOO_SMALL = 289,
271 TOO_MANY_HANDLES = 290,
272 TOO_MANY_OPENS = 291,
273 WRONG_TYPE = 292,
274 UNUSED_CODE = 293,
275 THREAD_NOT_TERMINATED = 294,
276 INIT_ROUTINE_FAILED = 295,
277 MODULE_IN_USE = 296,
278 NOT_ENOUGH_WATCHPOINTS = 297,
279 TOO_MANY_POSTS = 298,
280 ALREADY_POSTED = 299,
281 ALREADY_RESET = 300,
282 SEM_BUSY = 301,
283
284
285 /*
286 * Custom errors.
287 */
288 first_custom_error = 0x10000,
289 /* Generic */
290 INVALID_ADDRESS,
291 INVALID_OFFSET,
292 INVALID_SIGNATURE,
293 INCORRECT_VERSION,
294 INTERNAL_ERROR,
295 UNSUPPORTED_ENDIAN,
296 STRING_TO_LONG,
297 BAD_ALIGNMENT,
298 BAD_STRING_LENGTH,
299 BAD_STRUCTURE,
300
301 /* .DEF-Files */
302 DEF_MULIPLE_MODULE_STATEMENT,
303 DEF_NO_MODULE_STATEMENT,
304 DEF_BAD_LIBRARY_STATEMENT,
305 DEF_BAD_IMPORT,
306 DEF_BAD_EXPORT,
307 DEF_UNKOWN_VERB,
308
309 /* .SDF-Files */
310 SDF_TOO_MANY,
311
312 /* .LX-Files */
313 INVALID_PAGE,
314 BAD_ITERPAGE,
315 BAD_COMPESSED_PAGE
316 };
317
318
319public:
320 /**
321 * Constructor.
322 * @param iErrorNo Error number this object should represent.
323 * If not specified a NO_ERROR object is created.
324 */
325 kError(int iErrorNo = 0) : iErrorNo(iErrorNo) { }
326
327 /**
328 * Constructor.
329 * @param iErrorNo Error number this object should represent.
330 * If not specified a NO_ERROR object is created.
331 */
332 kError(enum enmError enmErrorNo = kError::NO) : iErrorNo(enmErrorNo) { }
333
334 /**
335 * Gets the message text for a given error number.
336 * @returns Message text. Caller must delete it.
337 */
338 static char *getText(int iErrorNo);
339
340 /**
341 * Gets the message text for this error.
342 * @returns Message text. Caller must delete it.
343 */
344 char *getText(void) const
345 {
346 return kError::getText(iErrorNo);
347 }
348
349 /**
350 * Gets the error number for this error.
351 * @returns The error number.
352 */
353 int getErrno(void) const
354 {
355 return iErrorNo;
356 }
357
358
359 KBOOL operator !=(int iErrorNo) const
360 {
361 return this->iErrorNo != iErrorNo;
362 }
363
364 KBOOL operator ==(int iErrorNo) const
365 {
366 return this->iErrorNo == iErrorNo;
367 }
368
369 KBOOL operator >(int iErrorNo) const
370 {
371 return this->iErrorNo > iErrorNo;
372 }
373
374 KBOOL operator >=(int iErrorNo) const
375 {
376 return this->iErrorNo >= iErrorNo;
377 }
378
379 KBOOL operator <(int iErrorNo) const
380 {
381 return this->iErrorNo < iErrorNo;
382 }
383
384 KBOOL operator <=(int iErrorNo) const
385 {
386 return this->iErrorNo <= iErrorNo;
387 }
388
389
390 KBOOL operator !=(enum enmError enmErrorNo) const
391 {
392 return this->iErrorNo != enmErrorNo;
393 }
394
395 KBOOL operator ==(enum enmError enmErrorNo) const
396 {
397 return this->iErrorNo == enmErrorNo;
398 }
399
400 KBOOL operator >(enum enmError enmErrorNo) const
401 {
402 return this->iErrorNo > enmErrorNo;
403 }
404
405 KBOOL operator >=(enum enmError enmErrorNo) const
406 {
407 return this->iErrorNo >= enmErrorNo;
408 }
409
410 KBOOL operator <(enum enmError enmErrorNo) const
411 {
412 return this->iErrorNo < enmErrorNo;
413 }
414
415 KBOOL operator <=(enum enmError enmErrorNo) const
416 {
417 return this->iErrorNo <= enmErrorNo;
418 }
419
420
421
422protected:
423 int iErrorNo;
424};
425
426
427
428
429#endif
430
Note: See TracBrowser for help on using the repository browser.