1/*
2 * Copyright 2007-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _ERRORS_H
6#define _ERRORS_H
7
8
9#include <limits.h>
10
11
12/* Error baselines */
13#define B_GENERAL_ERROR_BASE		INT_MIN
14#define B_OS_ERROR_BASE				(B_GENERAL_ERROR_BASE + 0x1000)
15#define B_APP_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x2000)
16#define B_INTERFACE_ERROR_BASE		(B_GENERAL_ERROR_BASE + 0x3000)
17#define B_MEDIA_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x4000)
18										/* - 0x41ff */
19#define B_TRANSLATION_ERROR_BASE	(B_GENERAL_ERROR_BASE + 0x4800)
20										/* - 0x48ff */
21#define B_MIDI_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x5000)
22#define B_STORAGE_ERROR_BASE		(B_GENERAL_ERROR_BASE + 0x6000)
23#define B_POSIX_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x7000)
24#define B_MAIL_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x8000)
25#define B_PRINT_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x9000)
26#define B_DEVICE_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0xa000)
27
28/* Developer-defined errors start at (B_ERRORS_END+1) */
29#define B_ERRORS_END				(B_GENERAL_ERROR_BASE + 0xffff)
30
31/* General Errors */
32#define B_NO_MEMORY					(B_GENERAL_ERROR_BASE + 0)
33#define B_IO_ERROR					(B_GENERAL_ERROR_BASE + 1)
34#define B_PERMISSION_DENIED			(B_GENERAL_ERROR_BASE + 2)
35#define B_BAD_INDEX					(B_GENERAL_ERROR_BASE + 3)
36#define B_BAD_TYPE					(B_GENERAL_ERROR_BASE + 4)
37#define B_BAD_VALUE					(B_GENERAL_ERROR_BASE + 5)
38#define B_MISMATCHED_VALUES			(B_GENERAL_ERROR_BASE + 6)
39#define B_NAME_NOT_FOUND			(B_GENERAL_ERROR_BASE + 7)
40#define B_NAME_IN_USE				(B_GENERAL_ERROR_BASE + 8)
41#define B_TIMED_OUT					(B_GENERAL_ERROR_BASE + 9)
42#define B_INTERRUPTED				(B_GENERAL_ERROR_BASE + 10)
43#define B_WOULD_BLOCK				(B_GENERAL_ERROR_BASE + 11)
44#define B_CANCELED					(B_GENERAL_ERROR_BASE + 12)
45#define B_NO_INIT					(B_GENERAL_ERROR_BASE + 13)
46#define B_NOT_INITIALIZED			(B_GENERAL_ERROR_BASE + 13)
47#define B_BUSY						(B_GENERAL_ERROR_BASE + 14)
48#define B_NOT_ALLOWED				(B_GENERAL_ERROR_BASE + 15)
49#define B_BAD_DATA					(B_GENERAL_ERROR_BASE + 16)
50#define B_DONT_DO_THAT				(B_GENERAL_ERROR_BASE + 17)
51
52#define B_ERROR						(-1)
53#define B_OK						((int)0)
54#define B_NO_ERROR					((int)0)
55
56/* Kernel Kit Errors */
57#define B_BAD_SEM_ID				(B_OS_ERROR_BASE + 0)
58#define B_NO_MORE_SEMS				(B_OS_ERROR_BASE + 1)
59
60#define B_BAD_THREAD_ID				(B_OS_ERROR_BASE + 0x100)
61#define B_NO_MORE_THREADS			(B_OS_ERROR_BASE + 0x101)
62#define B_BAD_THREAD_STATE			(B_OS_ERROR_BASE + 0x102)
63#define B_BAD_TEAM_ID				(B_OS_ERROR_BASE + 0x103)
64#define B_NO_MORE_TEAMS				(B_OS_ERROR_BASE + 0x104)
65
66#define B_BAD_PORT_ID				(B_OS_ERROR_BASE + 0x200)
67#define B_NO_MORE_PORTS				(B_OS_ERROR_BASE + 0x201)
68
69#define B_BAD_IMAGE_ID				(B_OS_ERROR_BASE + 0x300)
70#define B_BAD_ADDRESS				(B_OS_ERROR_BASE + 0x301)
71#define B_NOT_AN_EXECUTABLE			(B_OS_ERROR_BASE + 0x302)
72#define B_MISSING_LIBRARY			(B_OS_ERROR_BASE + 0x303)
73#define B_MISSING_SYMBOL			(B_OS_ERROR_BASE + 0x304)
74#define B_UNKNOWN_EXECUTABLE		(B_OS_ERROR_BASE + 0x305)
75#define B_LEGACY_EXECUTABLE			(B_OS_ERROR_BASE + 0x306)
76
77#define B_DEBUGGER_ALREADY_INSTALLED	(B_OS_ERROR_BASE + 0x400)
78
79/* Application Kit Errors */
80#define B_BAD_REPLY							(B_APP_ERROR_BASE + 0)
81#define B_DUPLICATE_REPLY					(B_APP_ERROR_BASE + 1)
82#define B_MESSAGE_TO_SELF					(B_APP_ERROR_BASE + 2)
83#define B_BAD_HANDLER						(B_APP_ERROR_BASE + 3)
84#define B_ALREADY_RUNNING					(B_APP_ERROR_BASE + 4)
85#define B_LAUNCH_FAILED						(B_APP_ERROR_BASE + 5)
86#define B_AMBIGUOUS_APP_LAUNCH				(B_APP_ERROR_BASE + 6)
87#define B_UNKNOWN_MIME_TYPE					(B_APP_ERROR_BASE + 7)
88#define B_BAD_SCRIPT_SYNTAX					(B_APP_ERROR_BASE + 8)
89#define B_LAUNCH_FAILED_NO_RESOLVE_LINK		(B_APP_ERROR_BASE + 9)
90#define B_LAUNCH_FAILED_EXECUTABLE			(B_APP_ERROR_BASE + 10)
91#define B_LAUNCH_FAILED_APP_NOT_FOUND		(B_APP_ERROR_BASE + 11)
92#define B_LAUNCH_FAILED_APP_IN_TRASH		(B_APP_ERROR_BASE + 12)
93#define B_LAUNCH_FAILED_NO_PREFERRED_APP	(B_APP_ERROR_BASE + 13)
94#define B_LAUNCH_FAILED_FILES_APP_NOT_FOUND	(B_APP_ERROR_BASE + 14)
95#define B_BAD_MIME_SNIFFER_RULE				(B_APP_ERROR_BASE + 15)
96#define B_NOT_A_MESSAGE						(B_APP_ERROR_BASE + 16)
97#define B_SHUTDOWN_CANCELLED				(B_APP_ERROR_BASE + 17)
98#define B_SHUTTING_DOWN						(B_APP_ERROR_BASE + 18)
99
100/* Storage Kit/File System Errors */
101#define B_FILE_ERROR						(B_STORAGE_ERROR_BASE + 0)
102/* 1 was B_FILE_NOT_FOUND (deprecated) */
103#define B_FILE_EXISTS						(B_STORAGE_ERROR_BASE + 2)
104#define B_ENTRY_NOT_FOUND					(B_STORAGE_ERROR_BASE + 3)
105#define B_NAME_TOO_LONG						(B_STORAGE_ERROR_BASE + 4)
106#define B_NOT_A_DIRECTORY					(B_STORAGE_ERROR_BASE + 5)
107#define B_DIRECTORY_NOT_EMPTY				(B_STORAGE_ERROR_BASE + 6)
108#define B_DEVICE_FULL						(B_STORAGE_ERROR_BASE + 7)
109#define B_READ_ONLY_DEVICE					(B_STORAGE_ERROR_BASE + 8)
110#define B_IS_A_DIRECTORY					(B_STORAGE_ERROR_BASE + 9)
111#define B_NO_MORE_FDS						(B_STORAGE_ERROR_BASE + 10)
112#define B_CROSS_DEVICE_LINK					(B_STORAGE_ERROR_BASE + 11)
113#define B_LINK_LIMIT						(B_STORAGE_ERROR_BASE + 12)
114#define B_BUSTED_PIPE						(B_STORAGE_ERROR_BASE + 13)
115#define B_UNSUPPORTED						(B_STORAGE_ERROR_BASE + 14)
116#define B_PARTITION_TOO_SMALL				(B_STORAGE_ERROR_BASE + 15)
117#define B_PARTIAL_READ						(B_STORAGE_ERROR_BASE + 16)
118#define B_PARTIAL_WRITE						(B_STORAGE_ERROR_BASE + 17)
119
120/* POSIX Errors */
121#ifdef B_USE_POSITIVE_POSIX_ERRORS
122#	define B_TO_POSIX_ERROR(error)		(-(error))
123#	define B_FROM_POSIX_ERROR(error)	(-(error))
124#else
125#	define B_TO_POSIX_ERROR(error)		(error)
126#	define B_FROM_POSIX_ERROR(error)	(error)
127#endif
128
129#define B_POSIX_ENOMEM	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 0)
130#define E2BIG			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 1)
131#define ECHILD			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 2)
132#define EDEADLK			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 3)
133#define EFBIG			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 4)
134#define EMLINK			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 5)
135#define ENFILE			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 6)
136#define ENODEV			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 7)
137#define ENOLCK			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 8)
138#define ENOSYS			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 9)
139#define ENOTTY			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 10)
140#define ENXIO			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 11)
141#define ESPIPE			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 12)
142#define ESRCH			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 13)
143#define EFPOS			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 14)
144#define ESIGPARM		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 15)
145#define EDOM			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 16)
146#define ERANGE			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 17)
147#define EPROTOTYPE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 18)
148#define EPROTONOSUPPORT	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 19)
149#define EPFNOSUPPORT	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 20)
150#define EAFNOSUPPORT	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 21)
151#define EADDRINUSE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 22)
152#define EADDRNOTAVAIL	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 23)
153#define ENETDOWN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 24)
154#define ENETUNREACH		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 25)
155#define ENETRESET		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 26)
156#define ECONNABORTED	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 27)
157#define ECONNRESET		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 28)
158#define EISCONN			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 29)
159#define ENOTCONN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 30)
160#define ESHUTDOWN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 31)
161#define ECONNREFUSED	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 32)
162#define EHOSTUNREACH	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 33)
163#define ENOPROTOOPT		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 34)
164#define ENOBUFS			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 35)
165#define EINPROGRESS		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 36)
166#define EALREADY		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 37)
167#define EILSEQ			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 38)
168#define ENOMSG			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 39)
169#define ESTALE			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 40)
170#define EOVERFLOW		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 41)
171#define EMSGSIZE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 42)
172#define EOPNOTSUPP		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 43)
173#define ENOTSOCK		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 44)
174#define EHOSTDOWN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 45)
175#define EBADMSG			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 46)
176#define ECANCELED		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 47)
177#define EDESTADDRREQ	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 48)
178#define EDQUOT			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 49)
179#define EIDRM			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 50)
180#define EMULTIHOP		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 51)
181#define ENODATA			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 52)
182#define ENOLINK			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 53)
183#define ENOSR			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 54)
184#define ENOSTR			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 55)
185#define ENOTSUP			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 56)
186#define EPROTO			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 57)
187#define ETIME			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 58)
188#define ETXTBSY			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 59)
189#define ENOATTR			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 60)
190#define ENOTRECOVERABLE	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 61)
191#define EOWNERDEAD		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 62)
192
193/* B_NO_MEMORY (0x80000000) can't be negated, so it needs special handling */
194#ifdef B_USE_POSITIVE_POSIX_ERRORS
195#	define ENOMEM		B_POSIX_ENOMEM
196#else
197#	define ENOMEM		B_NO_MEMORY
198#endif
199
200/* POSIX errors that can be mapped to BeOS error codes */
201#define EACCES			B_TO_POSIX_ERROR(B_PERMISSION_DENIED)
202#define EINTR			B_TO_POSIX_ERROR(B_INTERRUPTED)
203#define EIO				B_TO_POSIX_ERROR(B_IO_ERROR)
204#define EBUSY			B_TO_POSIX_ERROR(B_BUSY)
205#define EFAULT			B_TO_POSIX_ERROR(B_BAD_ADDRESS)
206#define ETIMEDOUT		B_TO_POSIX_ERROR(B_TIMED_OUT)
207#define EAGAIN 			B_TO_POSIX_ERROR(B_WOULD_BLOCK)	/* SysV compatibility */
208#define EWOULDBLOCK 	B_TO_POSIX_ERROR(B_WOULD_BLOCK)	/* BSD compatibility */
209#define EBADF			B_TO_POSIX_ERROR(B_FILE_ERROR)
210#define EEXIST			B_TO_POSIX_ERROR(B_FILE_EXISTS)
211#define EINVAL			B_TO_POSIX_ERROR(B_BAD_VALUE)
212#define ENAMETOOLONG	B_TO_POSIX_ERROR(B_NAME_TOO_LONG)
213#define ENOENT			B_TO_POSIX_ERROR(B_ENTRY_NOT_FOUND)
214#define EPERM			B_TO_POSIX_ERROR(B_NOT_ALLOWED)
215#define ENOTDIR			B_TO_POSIX_ERROR(B_NOT_A_DIRECTORY)
216#define EISDIR			B_TO_POSIX_ERROR(B_IS_A_DIRECTORY)
217#define ENOTEMPTY		B_TO_POSIX_ERROR(B_DIRECTORY_NOT_EMPTY)
218#define ENOSPC			B_TO_POSIX_ERROR(B_DEVICE_FULL)
219#define EROFS			B_TO_POSIX_ERROR(B_READ_ONLY_DEVICE)
220#define EMFILE			B_TO_POSIX_ERROR(B_NO_MORE_FDS)
221#define EXDEV			B_TO_POSIX_ERROR(B_CROSS_DEVICE_LINK)
222#define ELOOP			B_TO_POSIX_ERROR(B_LINK_LIMIT)
223#define ENOEXEC			B_TO_POSIX_ERROR(B_NOT_AN_EXECUTABLE)
224#define EPIPE			B_TO_POSIX_ERROR(B_BUSTED_PIPE)
225
226/* new error codes that can be mapped to POSIX errors */
227#define B_BUFFER_OVERFLOW			B_FROM_POSIX_ERROR(EOVERFLOW)
228#define B_TOO_MANY_ARGS				B_FROM_POSIX_ERROR(E2BIG)
229#define B_FILE_TOO_LARGE			B_FROM_POSIX_ERROR(EFBIG)
230#define B_RESULT_NOT_REPRESENTABLE	B_FROM_POSIX_ERROR(ERANGE)
231#define B_DEVICE_NOT_FOUND			B_FROM_POSIX_ERROR(ENODEV)
232#define B_NOT_SUPPORTED				B_FROM_POSIX_ERROR(EOPNOTSUPP)
233
234/* Media Kit Errors */
235#define B_STREAM_NOT_FOUND				(B_MEDIA_ERROR_BASE + 0)
236#define B_SERVER_NOT_FOUND				(B_MEDIA_ERROR_BASE + 1)
237#define B_RESOURCE_NOT_FOUND			(B_MEDIA_ERROR_BASE + 2)
238#define B_RESOURCE_UNAVAILABLE			(B_MEDIA_ERROR_BASE + 3)
239#define B_BAD_SUBSCRIBER				(B_MEDIA_ERROR_BASE + 4)
240#define B_SUBSCRIBER_NOT_ENTERED		(B_MEDIA_ERROR_BASE + 5)
241#define B_BUFFER_NOT_AVAILABLE			(B_MEDIA_ERROR_BASE + 6)
242#define B_LAST_BUFFER_ERROR				(B_MEDIA_ERROR_BASE + 7)
243
244#define B_MEDIA_SYSTEM_FAILURE			(B_MEDIA_ERROR_BASE + 100)
245#define B_MEDIA_BAD_NODE				(B_MEDIA_ERROR_BASE + 101)
246#define B_MEDIA_NODE_BUSY				(B_MEDIA_ERROR_BASE + 102)
247#define B_MEDIA_BAD_FORMAT				(B_MEDIA_ERROR_BASE + 103)
248#define B_MEDIA_BAD_BUFFER				(B_MEDIA_ERROR_BASE + 104)
249#define B_MEDIA_TOO_MANY_NODES			(B_MEDIA_ERROR_BASE + 105)
250#define B_MEDIA_TOO_MANY_BUFFERS		(B_MEDIA_ERROR_BASE + 106)
251#define B_MEDIA_NODE_ALREADY_EXISTS		(B_MEDIA_ERROR_BASE + 107)
252#define B_MEDIA_BUFFER_ALREADY_EXISTS	(B_MEDIA_ERROR_BASE + 108)
253#define B_MEDIA_CANNOT_SEEK				(B_MEDIA_ERROR_BASE + 109)
254#define B_MEDIA_CANNOT_CHANGE_RUN_MODE	(B_MEDIA_ERROR_BASE + 110)
255#define B_MEDIA_APP_ALREADY_REGISTERED	(B_MEDIA_ERROR_BASE + 111)
256#define B_MEDIA_APP_NOT_REGISTERED		(B_MEDIA_ERROR_BASE + 112)
257#define B_MEDIA_CANNOT_RECLAIM_BUFFERS	(B_MEDIA_ERROR_BASE + 113)
258#define B_MEDIA_BUFFERS_NOT_RECLAIMED	(B_MEDIA_ERROR_BASE + 114)
259#define B_MEDIA_TIME_SOURCE_STOPPED		(B_MEDIA_ERROR_BASE + 115)
260#define B_MEDIA_TIME_SOURCE_BUSY		(B_MEDIA_ERROR_BASE + 116)
261#define B_MEDIA_BAD_SOURCE				(B_MEDIA_ERROR_BASE + 117)
262#define B_MEDIA_BAD_DESTINATION			(B_MEDIA_ERROR_BASE + 118)
263#define B_MEDIA_ALREADY_CONNECTED		(B_MEDIA_ERROR_BASE + 119)
264#define B_MEDIA_NOT_CONNECTED			(B_MEDIA_ERROR_BASE + 120)
265#define B_MEDIA_BAD_CLIP_FORMAT			(B_MEDIA_ERROR_BASE + 121)
266#define B_MEDIA_ADDON_FAILED			(B_MEDIA_ERROR_BASE + 122)
267#define B_MEDIA_ADDON_DISABLED			(B_MEDIA_ERROR_BASE + 123)
268#define B_MEDIA_CHANGE_IN_PROGRESS		(B_MEDIA_ERROR_BASE + 124)
269#define B_MEDIA_STALE_CHANGE_COUNT		(B_MEDIA_ERROR_BASE + 125)
270#define B_MEDIA_ADDON_RESTRICTED		(B_MEDIA_ERROR_BASE + 126)
271#define B_MEDIA_NO_HANDLER				(B_MEDIA_ERROR_BASE + 127)
272#define B_MEDIA_DUPLICATE_FORMAT		(B_MEDIA_ERROR_BASE + 128)
273#define B_MEDIA_REALTIME_DISABLED		(B_MEDIA_ERROR_BASE + 129)
274#define B_MEDIA_REALTIME_UNAVAILABLE	(B_MEDIA_ERROR_BASE + 130)
275
276/* Mail Kit Errors */
277#define B_MAIL_NO_DAEMON				(B_MAIL_ERROR_BASE + 0)
278#define B_MAIL_UNKNOWN_USER				(B_MAIL_ERROR_BASE + 1)
279#define B_MAIL_WRONG_PASSWORD			(B_MAIL_ERROR_BASE + 2)
280#define B_MAIL_UNKNOWN_HOST				(B_MAIL_ERROR_BASE + 3)
281#define B_MAIL_ACCESS_ERROR				(B_MAIL_ERROR_BASE + 4)
282#define B_MAIL_UNKNOWN_FIELD			(B_MAIL_ERROR_BASE + 5)
283#define B_MAIL_NO_RECIPIENT				(B_MAIL_ERROR_BASE + 6)
284#define B_MAIL_INVALID_MAIL				(B_MAIL_ERROR_BASE + 7)
285
286/* Printing Errors */
287#define B_NO_PRINT_SERVER				(B_PRINT_ERROR_BASE + 0)
288
289/* Device Kit Errors */
290#define B_DEV_INVALID_IOCTL				(B_DEVICE_ERROR_BASE + 0)
291#define B_DEV_NO_MEMORY					(B_DEVICE_ERROR_BASE + 1)
292#define B_DEV_BAD_DRIVE_NUM				(B_DEVICE_ERROR_BASE + 2)
293#define B_DEV_NO_MEDIA					(B_DEVICE_ERROR_BASE + 3)
294#define B_DEV_UNREADABLE				(B_DEVICE_ERROR_BASE + 4)
295#define B_DEV_FORMAT_ERROR				(B_DEVICE_ERROR_BASE + 5)
296#define B_DEV_TIMEOUT					(B_DEVICE_ERROR_BASE + 6)
297#define B_DEV_RECALIBRATE_ERROR			(B_DEVICE_ERROR_BASE + 7)
298#define B_DEV_SEEK_ERROR				(B_DEVICE_ERROR_BASE + 8)
299#define B_DEV_ID_ERROR					(B_DEVICE_ERROR_BASE + 9)
300#define B_DEV_READ_ERROR				(B_DEVICE_ERROR_BASE + 10)
301#define B_DEV_WRITE_ERROR				(B_DEVICE_ERROR_BASE + 11)
302#define B_DEV_NOT_READY					(B_DEVICE_ERROR_BASE + 12)
303#define B_DEV_MEDIA_CHANGED				(B_DEVICE_ERROR_BASE + 13)
304#define B_DEV_MEDIA_CHANGE_REQUESTED	(B_DEVICE_ERROR_BASE + 14)
305#define B_DEV_RESOURCE_CONFLICT			(B_DEVICE_ERROR_BASE + 15)
306#define B_DEV_CONFIGURATION_ERROR		(B_DEVICE_ERROR_BASE + 16)
307#define B_DEV_DISABLED_BY_USER			(B_DEVICE_ERROR_BASE + 17)
308#define B_DEV_DOOR_OPEN					(B_DEVICE_ERROR_BASE + 18)
309
310#define B_DEV_INVALID_PIPE				(B_DEVICE_ERROR_BASE + 19)
311#define B_DEV_CRC_ERROR					(B_DEVICE_ERROR_BASE + 20)
312#define B_DEV_STALLED					(B_DEVICE_ERROR_BASE + 21)
313#define B_DEV_BAD_PID					(B_DEVICE_ERROR_BASE + 22)
314#define B_DEV_UNEXPECTED_PID			(B_DEVICE_ERROR_BASE + 23)
315#define B_DEV_DATA_OVERRUN				(B_DEVICE_ERROR_BASE + 24)
316#define B_DEV_DATA_UNDERRUN				(B_DEVICE_ERROR_BASE + 25)
317#define B_DEV_FIFO_OVERRUN				(B_DEVICE_ERROR_BASE + 26)
318#define B_DEV_FIFO_UNDERRUN				(B_DEVICE_ERROR_BASE + 27)
319#define B_DEV_PENDING					(B_DEVICE_ERROR_BASE + 28)
320#define B_DEV_MULTIPLE_ERRORS			(B_DEVICE_ERROR_BASE + 29)
321#define B_DEV_TOO_LATE					(B_DEVICE_ERROR_BASE + 30)
322
323/* Translation Kit Errors */
324#define B_TRANSLATION_BASE_ERROR		(B_TRANSLATION_ERROR_BASE + 0)
325#define B_NO_TRANSLATOR					(B_TRANSLATION_ERROR_BASE + 1)
326#define B_ILLEGAL_DATA					(B_TRANSLATION_ERROR_BASE + 2)
327
328
329#define B_TO_POSITIVE_ERROR(error)	_to_positive_error(error)
330#define B_TO_NEGATIVE_ERROR(error)	_to_negative_error(error)
331
332
333#ifdef __cplusplus
334extern "C" {
335#endif
336
337int _to_positive_error(int error);
338int _to_negative_error(int error);
339
340#ifdef __cplusplus
341}
342#endif
343
344#endif	/* _ERRORS_H */
345