1/*
2 * Copyright 2007-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _BUILD_ERRORS_H
6#define _BUILD_ERRORS_H
7
8
9#include <errno.h> /* build-specific overrides errno */
10#include <limits.h>
11
12
13/* Error baselines */
14#define B_GENERAL_ERROR_BASE		INT_MIN
15#define B_OS_ERROR_BASE				(B_GENERAL_ERROR_BASE + 0x1000)
16#define B_APP_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x2000)
17#define B_INTERFACE_ERROR_BASE		(B_GENERAL_ERROR_BASE + 0x3000)
18#define B_MEDIA_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x4000)
19										/* - 0x41ff */
20#define B_TRANSLATION_ERROR_BASE	(B_GENERAL_ERROR_BASE + 0x4800)
21										/* - 0x48ff */
22#define B_MIDI_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x5000)
23#define B_STORAGE_ERROR_BASE		(B_GENERAL_ERROR_BASE + 0x6000)
24#define B_POSIX_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x7000)
25#define B_MAIL_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x8000)
26#define B_PRINT_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0x9000)
27#define B_DEVICE_ERROR_BASE			(B_GENERAL_ERROR_BASE + 0xa000)
28
29/* Developer-defined errors start at (B_ERRORS_END+1) */
30#define B_ERRORS_END				(B_GENERAL_ERROR_BASE + 0xffff)
31
32/* General Errors */
33#define B_NO_MEMORY					(B_GENERAL_ERROR_BASE + 0)
34#define B_IO_ERROR					(B_GENERAL_ERROR_BASE + 1)
35#define B_PERMISSION_DENIED			(B_GENERAL_ERROR_BASE + 2)
36#define B_BAD_INDEX					(B_GENERAL_ERROR_BASE + 3)
37#define B_BAD_TYPE					(B_GENERAL_ERROR_BASE + 4)
38#define B_BAD_VALUE					(B_GENERAL_ERROR_BASE + 5)
39#define B_MISMATCHED_VALUES			(B_GENERAL_ERROR_BASE + 6)
40#define B_NAME_NOT_FOUND			(B_GENERAL_ERROR_BASE + 7)
41#define B_NAME_IN_USE				(B_GENERAL_ERROR_BASE + 8)
42#define B_TIMED_OUT					(B_GENERAL_ERROR_BASE + 9)
43#define B_INTERRUPTED				(B_GENERAL_ERROR_BASE + 10)
44#define B_WOULD_BLOCK				(B_GENERAL_ERROR_BASE + 11)
45#define B_CANCELED					(B_GENERAL_ERROR_BASE + 12)
46#define B_NO_INIT					(B_GENERAL_ERROR_BASE + 13)
47#define B_NOT_INITIALIZED			(B_GENERAL_ERROR_BASE + 13)
48#define B_BUSY						(B_GENERAL_ERROR_BASE + 14)
49#define B_NOT_ALLOWED				(B_GENERAL_ERROR_BASE + 15)
50#define B_BAD_DATA					(B_GENERAL_ERROR_BASE + 16)
51#define B_DONT_DO_THAT				(B_GENERAL_ERROR_BASE + 17)
52
53#define B_ERROR						(-1)
54#define B_OK						((int)0)
55#define B_NO_ERROR					((int)0)
56
57/* Kernel Kit Errors */
58#define B_BAD_SEM_ID				(B_OS_ERROR_BASE + 0)
59#define B_NO_MORE_SEMS				(B_OS_ERROR_BASE + 1)
60
61#define B_BAD_THREAD_ID				(B_OS_ERROR_BASE + 0x100)
62#define B_NO_MORE_THREADS			(B_OS_ERROR_BASE + 0x101)
63#define B_BAD_THREAD_STATE			(B_OS_ERROR_BASE + 0x102)
64#define B_BAD_TEAM_ID				(B_OS_ERROR_BASE + 0x103)
65#define B_NO_MORE_TEAMS				(B_OS_ERROR_BASE + 0x104)
66
67#define B_BAD_PORT_ID				(B_OS_ERROR_BASE + 0x200)
68#define B_NO_MORE_PORTS				(B_OS_ERROR_BASE + 0x201)
69
70#define B_BAD_IMAGE_ID				(B_OS_ERROR_BASE + 0x300)
71#define B_BAD_ADDRESS				(B_OS_ERROR_BASE + 0x301)
72#define B_NOT_AN_EXECUTABLE			(B_OS_ERROR_BASE + 0x302)
73#define B_MISSING_LIBRARY			(B_OS_ERROR_BASE + 0x303)
74#define B_MISSING_SYMBOL			(B_OS_ERROR_BASE + 0x304)
75#define B_UNKNOWN_EXECUTABLE		(B_OS_ERROR_BASE + 0x305)
76#define B_LEGACY_EXECUTABLE			(B_OS_ERROR_BASE + 0x306)
77
78#define B_DEBUGGER_ALREADY_INSTALLED	(B_OS_ERROR_BASE + 0x400)
79
80/* Application Kit Errors */
81#define B_BAD_REPLY							(B_APP_ERROR_BASE + 0)
82#define B_DUPLICATE_REPLY					(B_APP_ERROR_BASE + 1)
83#define B_MESSAGE_TO_SELF					(B_APP_ERROR_BASE + 2)
84#define B_BAD_HANDLER						(B_APP_ERROR_BASE + 3)
85#define B_ALREADY_RUNNING					(B_APP_ERROR_BASE + 4)
86#define B_LAUNCH_FAILED						(B_APP_ERROR_BASE + 5)
87#define B_AMBIGUOUS_APP_LAUNCH				(B_APP_ERROR_BASE + 6)
88#define B_UNKNOWN_MIME_TYPE					(B_APP_ERROR_BASE + 7)
89#define B_BAD_SCRIPT_SYNTAX					(B_APP_ERROR_BASE + 8)
90#define B_LAUNCH_FAILED_NO_RESOLVE_LINK		(B_APP_ERROR_BASE + 9)
91#define B_LAUNCH_FAILED_EXECUTABLE			(B_APP_ERROR_BASE + 10)
92#define B_LAUNCH_FAILED_APP_NOT_FOUND		(B_APP_ERROR_BASE + 11)
93#define B_LAUNCH_FAILED_APP_IN_TRASH		(B_APP_ERROR_BASE + 12)
94#define B_LAUNCH_FAILED_NO_PREFERRED_APP	(B_APP_ERROR_BASE + 13)
95#define B_LAUNCH_FAILED_FILES_APP_NOT_FOUND	(B_APP_ERROR_BASE + 14)
96#define B_BAD_MIME_SNIFFER_RULE				(B_APP_ERROR_BASE + 15)
97#define B_NOT_A_MESSAGE						(B_APP_ERROR_BASE + 16)
98#define B_SHUTDOWN_CANCELLED				(B_APP_ERROR_BASE + 17)
99#define B_SHUTTING_DOWN						(B_APP_ERROR_BASE + 18)
100
101/* Storage Kit/File System Errors */
102#define B_FILE_ERROR						(B_STORAGE_ERROR_BASE + 0)
103/* 1 was B_FILE_NOT_FOUND (deprecated) */
104#define B_FILE_EXISTS						(B_STORAGE_ERROR_BASE + 2)
105#define B_ENTRY_NOT_FOUND					(B_STORAGE_ERROR_BASE + 3)
106#define B_NAME_TOO_LONG						(B_STORAGE_ERROR_BASE + 4)
107#define B_NOT_A_DIRECTORY					(B_STORAGE_ERROR_BASE + 5)
108#define B_DIRECTORY_NOT_EMPTY				(B_STORAGE_ERROR_BASE + 6)
109#define B_DEVICE_FULL						(B_STORAGE_ERROR_BASE + 7)
110#define B_READ_ONLY_DEVICE					(B_STORAGE_ERROR_BASE + 8)
111#define B_IS_A_DIRECTORY					(B_STORAGE_ERROR_BASE + 9)
112#define B_NO_MORE_FDS						(B_STORAGE_ERROR_BASE + 10)
113#define B_CROSS_DEVICE_LINK					(B_STORAGE_ERROR_BASE + 11)
114#define B_LINK_LIMIT						(B_STORAGE_ERROR_BASE + 12)
115#define B_BUSTED_PIPE						(B_STORAGE_ERROR_BASE + 13)
116#define B_UNSUPPORTED						(B_STORAGE_ERROR_BASE + 14)
117#define B_PARTITION_TOO_SMALL				(B_STORAGE_ERROR_BASE + 15)
118#define B_PARTIAL_READ						(B_STORAGE_ERROR_BASE + 16)
119#define B_PARTIAL_WRITE						(B_STORAGE_ERROR_BASE + 17)
120
121/* POSIX Errors */
122#define B_TO_POSIX_ERROR(error)		(error)
123#define B_FROM_POSIX_ERROR(error)	(error)
124
125#define B_POSIX_ENOMEM		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 0)
126#define HAIKU_E2BIG			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 1)
127#define HAIKU_ECHILD		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 2)
128#define HAIKU_EDEADLK		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 3)
129#define HAIKU_EFBIG			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 4)
130#define HAIKU_EMLINK		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 5)
131#define HAIKU_ENFILE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 6)
132#define HAIKU_ENODEV		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 7)
133#define HAIKU_ENOLCK		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 8)
134#define HAIKU_ENOSYS		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 9)
135#define HAIKU_ENOTTY		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 10)
136#define HAIKU_ENXIO			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 11)
137#define HAIKU_ESPIPE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 12)
138#define HAIKU_ESRCH			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 13)
139#define HAIKU_EFPOS			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 14)
140#define HAIKU_ESIGPARM		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 15)
141#define HAIKU_EDOM			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 16)
142#define HAIKU_ERANGE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 17)
143#define HAIKU_EPROTOTYPE	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 18)
144#define HAIKU_EPROTONOSUPPORT	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 19)
145#define HAIKU_EPFNOSUPPORT	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 20)
146#define HAIKU_EAFNOSUPPORT	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 21)
147#define HAIKU_EADDRINUSE	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 22)
148#define HAIKU_EADDRNOTAVAIL	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 23)
149#define HAIKU_ENETDOWN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 24)
150#define HAIKU_ENETUNREACH	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 25)
151#define HAIKU_ENETRESET		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 26)
152#define HAIKU_ECONNABORTED	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 27)
153#define HAIKU_ECONNRESET	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 28)
154#define HAIKU_EISCONN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 29)
155#define HAIKU_ENOTCONN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 30)
156#define HAIKU_ESHUTDOWN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 31)
157#define HAIKU_ECONNREFUSED	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 32)
158#define HAIKU_EHOSTUNREACH	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 33)
159#define HAIKU_ENOPROTOOPT	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 34)
160#define HAIKU_ENOBUFS		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 35)
161#define HAIKU_EINPROGRESS	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 36)
162#define HAIKU_EALREADY		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 37)
163#define HAIKU_EILSEQ		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 38)
164#define HAIKU_ENOMSG		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 39)
165#define HAIKU_ESTALE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 40)
166#define HAIKU_EOVERFLOW		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 41)
167#define HAIKU_EMSGSIZE		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 42)
168#define HAIKU_EOPNOTSUPP	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 43)
169#define HAIKU_ENOTSOCK		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 44)
170#define HAIKU_EHOSTDOWN		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 45)
171#define HAIKU_EBADMSG		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 46)
172#define HAIKU_ECANCELED		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 47)
173#define HAIKU_EDESTADDRREQ	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 48)
174#define HAIKU_EDQUOT		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 49)
175#define HAIKU_EIDRM			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 50)
176#define HAIKU_EMULTIHOP		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 51)
177#define HAIKU_ENODATA		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 52)
178#define HAIKU_ENOLINK		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 53)
179#define HAIKU_ENOSR			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 54)
180#define HAIKU_ENOSTR		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 55)
181#define HAIKU_ENOTSUP		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 56)
182#define HAIKU_EPROTO		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 57)
183#define HAIKU_ETIME			B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 58)
184#define HAIKU_ETXTBSY		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 59)
185#define HAIKU_ENOATTR		B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 60)
186#define HAIKU_ENOTRECOVERABLE	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 61)
187#define HAIKU_EOWNERDEAD	B_TO_POSIX_ERROR(B_POSIX_ERROR_BASE + 62)
188
189/* B_NO_MEMORY (0x80000000) can't be negated, so it needs special handling */
190#define HAIKU_ENOMEM		B_NO_MEMORY
191
192/* POSIX errors that can be mapped to BeOS error codes */
193#define HAIKU_EACCES		B_TO_POSIX_ERROR(B_PERMISSION_DENIED)
194#define HAIKU_EINTR			B_TO_POSIX_ERROR(B_INTERRUPTED)
195#define HAIKU_EIO			B_TO_POSIX_ERROR(B_IO_ERROR)
196#define HAIKU_EBUSY			B_TO_POSIX_ERROR(B_BUSY)
197#define HAIKU_EFAULT		B_TO_POSIX_ERROR(B_BAD_ADDRESS)
198#define HAIKU_ETIMEDOUT		B_TO_POSIX_ERROR(B_TIMED_OUT)
199#define HAIKU_EAGAIN 		B_TO_POSIX_ERROR(B_WOULD_BLOCK)	/* SysV compatibility */
200#define HAIKU_EWOULDBLOCK 	B_TO_POSIX_ERROR(B_WOULD_BLOCK)	/* BSD compatibility */
201#define HAIKU_EBADF			B_TO_POSIX_ERROR(B_FILE_ERROR)
202#define HAIKU_EEXIST		B_TO_POSIX_ERROR(B_FILE_EXISTS)
203#define HAIKU_EINVAL		B_TO_POSIX_ERROR(B_BAD_VALUE)
204#define HAIKU_ENAMETOOLONG	B_TO_POSIX_ERROR(B_NAME_TOO_LONG)
205#define HAIKU_ENOENT		B_TO_POSIX_ERROR(B_ENTRY_NOT_FOUND)
206#define HAIKU_EPERM			B_TO_POSIX_ERROR(B_NOT_ALLOWED)
207#define HAIKU_ENOTDIR		B_TO_POSIX_ERROR(B_NOT_A_DIRECTORY)
208#define HAIKU_EISDIR		B_TO_POSIX_ERROR(B_IS_A_DIRECTORY)
209#define HAIKU_ENOTEMPTY		B_TO_POSIX_ERROR(B_DIRECTORY_NOT_EMPTY)
210#define HAIKU_ENOSPC		B_TO_POSIX_ERROR(B_DEVICE_FULL)
211#define HAIKU_EROFS			B_TO_POSIX_ERROR(B_READ_ONLY_DEVICE)
212#define HAIKU_EMFILE		B_TO_POSIX_ERROR(B_NO_MORE_FDS)
213#define HAIKU_EXDEV			B_TO_POSIX_ERROR(B_CROSS_DEVICE_LINK)
214#define HAIKU_ELOOP			B_TO_POSIX_ERROR(B_LINK_LIMIT)
215#define HAIKU_ENOEXEC		B_TO_POSIX_ERROR(B_NOT_AN_EXECUTABLE)
216#define HAIKU_EPIPE			B_TO_POSIX_ERROR(B_BUSTED_PIPE)
217
218/* new error codes that can be mapped to POSIX errors */
219#ifndef BUILDING_HAIKU_ERROR_MAPPER
220#define B_BUFFER_OVERFLOW			B_FROM_POSIX_ERROR(HAIKU_EOVERFLOW)
221#define B_TOO_MANY_ARGS				B_FROM_POSIX_ERROR(HAIKU_E2BIG)
222#define B_FILE_TOO_LARGE			B_FROM_POSIX_ERROR(HAIKU_EFBIG)
223#define B_RESULT_NOT_REPRESENTABLE	B_FROM_POSIX_ERROR(HAIKU_ERANGE)
224#define B_DEVICE_NOT_FOUND			B_FROM_POSIX_ERROR(HAIKU_ENODEV)
225#define B_NOT_SUPPORTED				B_FROM_POSIX_ERROR(HAIKU_EOPNOTSUPP)
226#endif
227
228/* Media Kit Errors */
229#define B_STREAM_NOT_FOUND				(B_MEDIA_ERROR_BASE + 0)
230#define B_SERVER_NOT_FOUND				(B_MEDIA_ERROR_BASE + 1)
231#define B_RESOURCE_NOT_FOUND			(B_MEDIA_ERROR_BASE + 2)
232#define B_RESOURCE_UNAVAILABLE			(B_MEDIA_ERROR_BASE + 3)
233#define B_BAD_SUBSCRIBER				(B_MEDIA_ERROR_BASE + 4)
234#define B_SUBSCRIBER_NOT_ENTERED		(B_MEDIA_ERROR_BASE + 5)
235#define B_BUFFER_NOT_AVAILABLE			(B_MEDIA_ERROR_BASE + 6)
236#define B_LAST_BUFFER_ERROR				(B_MEDIA_ERROR_BASE + 7)
237
238#define B_MEDIA_SYSTEM_FAILURE			(B_MEDIA_ERROR_BASE + 100)
239#define B_MEDIA_BAD_NODE				(B_MEDIA_ERROR_BASE + 101)
240#define B_MEDIA_NODE_BUSY				(B_MEDIA_ERROR_BASE + 102)
241#define B_MEDIA_BAD_FORMAT				(B_MEDIA_ERROR_BASE + 103)
242#define B_MEDIA_BAD_BUFFER				(B_MEDIA_ERROR_BASE + 104)
243#define B_MEDIA_TOO_MANY_NODES			(B_MEDIA_ERROR_BASE + 105)
244#define B_MEDIA_TOO_MANY_BUFFERS		(B_MEDIA_ERROR_BASE + 106)
245#define B_MEDIA_NODE_ALREADY_EXISTS		(B_MEDIA_ERROR_BASE + 107)
246#define B_MEDIA_BUFFER_ALREADY_EXISTS	(B_MEDIA_ERROR_BASE + 108)
247#define B_MEDIA_CANNOT_SEEK				(B_MEDIA_ERROR_BASE + 109)
248#define B_MEDIA_CANNOT_CHANGE_RUN_MODE	(B_MEDIA_ERROR_BASE + 110)
249#define B_MEDIA_APP_ALREADY_REGISTERED	(B_MEDIA_ERROR_BASE + 111)
250#define B_MEDIA_APP_NOT_REGISTERED		(B_MEDIA_ERROR_BASE + 112)
251#define B_MEDIA_CANNOT_RECLAIM_BUFFERS	(B_MEDIA_ERROR_BASE + 113)
252#define B_MEDIA_BUFFERS_NOT_RECLAIMED	(B_MEDIA_ERROR_BASE + 114)
253#define B_MEDIA_TIME_SOURCE_STOPPED		(B_MEDIA_ERROR_BASE + 115)
254#define B_MEDIA_TIME_SOURCE_BUSY		(B_MEDIA_ERROR_BASE + 116)
255#define B_MEDIA_BAD_SOURCE				(B_MEDIA_ERROR_BASE + 117)
256#define B_MEDIA_BAD_DESTINATION			(B_MEDIA_ERROR_BASE + 118)
257#define B_MEDIA_ALREADY_CONNECTED		(B_MEDIA_ERROR_BASE + 119)
258#define B_MEDIA_NOT_CONNECTED			(B_MEDIA_ERROR_BASE + 120)
259#define B_MEDIA_BAD_CLIP_FORMAT			(B_MEDIA_ERROR_BASE + 121)
260#define B_MEDIA_ADDON_FAILED			(B_MEDIA_ERROR_BASE + 122)
261#define B_MEDIA_ADDON_DISABLED			(B_MEDIA_ERROR_BASE + 123)
262#define B_MEDIA_CHANGE_IN_PROGRESS		(B_MEDIA_ERROR_BASE + 124)
263#define B_MEDIA_STALE_CHANGE_COUNT		(B_MEDIA_ERROR_BASE + 125)
264#define B_MEDIA_ADDON_RESTRICTED		(B_MEDIA_ERROR_BASE + 126)
265#define B_MEDIA_NO_HANDLER				(B_MEDIA_ERROR_BASE + 127)
266#define B_MEDIA_DUPLICATE_FORMAT		(B_MEDIA_ERROR_BASE + 128)
267#define B_MEDIA_REALTIME_DISABLED		(B_MEDIA_ERROR_BASE + 129)
268#define B_MEDIA_REALTIME_UNAVAILABLE	(B_MEDIA_ERROR_BASE + 130)
269
270/* Mail Kit Errors */
271#define B_MAIL_NO_DAEMON				(B_MAIL_ERROR_BASE + 0)
272#define B_MAIL_UNKNOWN_USER				(B_MAIL_ERROR_BASE + 1)
273#define B_MAIL_WRONG_PASSWORD			(B_MAIL_ERROR_BASE + 2)
274#define B_MAIL_UNKNOWN_HOST				(B_MAIL_ERROR_BASE + 3)
275#define B_MAIL_ACCESS_ERROR				(B_MAIL_ERROR_BASE + 4)
276#define B_MAIL_UNKNOWN_FIELD			(B_MAIL_ERROR_BASE + 5)
277#define B_MAIL_NO_RECIPIENT				(B_MAIL_ERROR_BASE + 6)
278#define B_MAIL_INVALID_MAIL				(B_MAIL_ERROR_BASE + 7)
279
280/* Printing Errors */
281#define B_NO_PRINT_SERVER				(B_PRINT_ERROR_BASE + 0)
282
283/* Device Kit Errors */
284#define B_DEV_INVALID_IOCTL				(B_DEVICE_ERROR_BASE + 0)
285#define B_DEV_NO_MEMORY					(B_DEVICE_ERROR_BASE + 1)
286#define B_DEV_BAD_DRIVE_NUM				(B_DEVICE_ERROR_BASE + 2)
287#define B_DEV_NO_MEDIA					(B_DEVICE_ERROR_BASE + 3)
288#define B_DEV_UNREADABLE				(B_DEVICE_ERROR_BASE + 4)
289#define B_DEV_FORMAT_ERROR				(B_DEVICE_ERROR_BASE + 5)
290#define B_DEV_TIMEOUT					(B_DEVICE_ERROR_BASE + 6)
291#define B_DEV_RECALIBRATE_ERROR			(B_DEVICE_ERROR_BASE + 7)
292#define B_DEV_SEEK_ERROR				(B_DEVICE_ERROR_BASE + 8)
293#define B_DEV_ID_ERROR					(B_DEVICE_ERROR_BASE + 9)
294#define B_DEV_READ_ERROR				(B_DEVICE_ERROR_BASE + 10)
295#define B_DEV_WRITE_ERROR				(B_DEVICE_ERROR_BASE + 11)
296#define B_DEV_NOT_READY					(B_DEVICE_ERROR_BASE + 12)
297#define B_DEV_MEDIA_CHANGED				(B_DEVICE_ERROR_BASE + 13)
298#define B_DEV_MEDIA_CHANGE_REQUESTED	(B_DEVICE_ERROR_BASE + 14)
299#define B_DEV_RESOURCE_CONFLICT			(B_DEVICE_ERROR_BASE + 15)
300#define B_DEV_CONFIGURATION_ERROR		(B_DEVICE_ERROR_BASE + 16)
301#define B_DEV_DISABLED_BY_USER			(B_DEVICE_ERROR_BASE + 17)
302#define B_DEV_DOOR_OPEN					(B_DEVICE_ERROR_BASE + 18)
303
304#define B_DEV_INVALID_PIPE				(B_DEVICE_ERROR_BASE + 19)
305#define B_DEV_CRC_ERROR					(B_DEVICE_ERROR_BASE + 20)
306#define B_DEV_STALLED					(B_DEVICE_ERROR_BASE + 21)
307#define B_DEV_BAD_PID					(B_DEVICE_ERROR_BASE + 22)
308#define B_DEV_UNEXPECTED_PID			(B_DEVICE_ERROR_BASE + 23)
309#define B_DEV_DATA_OVERRUN				(B_DEVICE_ERROR_BASE + 24)
310#define B_DEV_DATA_UNDERRUN				(B_DEVICE_ERROR_BASE + 25)
311#define B_DEV_FIFO_OVERRUN				(B_DEVICE_ERROR_BASE + 26)
312#define B_DEV_FIFO_UNDERRUN				(B_DEVICE_ERROR_BASE + 27)
313#define B_DEV_PENDING					(B_DEVICE_ERROR_BASE + 28)
314#define B_DEV_MULTIPLE_ERRORS			(B_DEVICE_ERROR_BASE + 29)
315#define B_DEV_TOO_LATE					(B_DEVICE_ERROR_BASE + 30)
316
317/* Translation Kit Errors */
318#define B_TRANSLATION_BASE_ERROR		(B_TRANSLATION_ERROR_BASE + 0)
319#define B_NO_TRANSLATOR					(B_TRANSLATION_ERROR_BASE + 1)
320#define B_ILLEGAL_DATA					(B_TRANSLATION_ERROR_BASE + 2)
321
322
323/* build-specific code */
324#ifndef BUILDING_HAIKU_ERROR_MAPPER
325	#undef E2BIG
326	#undef ECHILD
327	#undef EDEADLK
328	#undef EFBIG
329	#undef EMLINK
330	#undef ENFILE
331	#undef ENODEV
332	#undef ENOLCK
333	#undef ENOSYS
334	#undef ENOTTY
335	#undef ENXIO
336	#undef ESPIPE
337	#undef ESRCH
338	#undef EFPOS
339	#undef ESIGPARM
340	#undef EDOM
341	#undef ERANGE
342	#undef EPROTOTYPE
343	#undef EPROTONOSUPPORT
344	#undef EPFNOSUPPORT
345	#undef EAFNOSUPPORT
346	#undef EADDRINUSE
347	#undef EADDRNOTAVAIL
348	#undef ENETDOWN
349	#undef ENETUNREACH
350	#undef ENETRESET
351	#undef ECONNABORTED
352	#undef ECONNRESET
353	#undef EISCONN
354	#undef ENOTCONN
355	#undef ESHUTDOWN
356	#undef ECONNREFUSED
357	#undef EHOSTUNREACH
358	#undef ENOPROTOOPT
359	#undef ENOBUFS
360	#undef EINPROGRESS
361	#undef EALREADY
362	#undef EILSEQ
363	#undef ENOMSG
364	#undef ESTALE
365	#undef EOVERFLOW
366	#undef EMSGSIZE
367	#undef EOPNOTSUPP
368	#undef ENOTSOCK
369	#undef EHOSTDOWN
370	#undef EBADMSG
371	#undef ECANCELED
372	#undef EDESTADDRREQ
373	#undef EDQUOT
374	#undef EIDRM
375	#undef EMULTIHOP
376	#undef ENODATA
377	#undef ENOLINK
378	#undef ENOSR
379	#undef ENOSTR
380	#undef ENOTSUP
381	#undef EPROTO
382	#undef ETIME
383	#undef ETXTBSY
384	#undef ENOMEM
385	#undef EACCES
386	#undef EINTR
387	#undef EIO
388	#undef EBUSY
389	#undef EFAULT
390	#undef ETIMEDOUT
391	#undef EAGAIN
392	#undef EWOULDBLOCK
393	#undef EBADF
394	#undef EEXIST
395	#undef EINVAL
396	#undef ENAMETOOLONG
397	#undef ENOENT
398	#undef EPERM
399	#undef ENOTDIR
400	#undef EISDIR
401	#undef ENOTEMPTY
402	#undef ENOSPC
403	#undef EROFS
404	#undef EMFILE
405	#undef EXDEV
406	#undef ELOOP
407	#undef ENOEXEC
408	#undef EPIPE
409	#undef ENOATTR
410
411	#define E2BIG HAIKU_E2BIG
412	#define ECHILD HAIKU_ECHILD
413	#define EDEADLK HAIKU_EDEADLK
414	#define EFBIG HAIKU_EFBIG
415	#define EMLINK HAIKU_EMLINK
416	#define ENFILE HAIKU_ENFILE
417	#define ENODEV HAIKU_ENODEV
418	#define ENOLCK HAIKU_ENOLCK
419	#define ENOSYS HAIKU_ENOSYS
420	#define ENOTTY HAIKU_ENOTTY
421	#define ENXIO HAIKU_ENXIO
422	#define ESPIPE HAIKU_ESPIPE
423	#define ESRCH HAIKU_ESRCH
424	#define EFPOS HAIKU_EFPOS
425	#define ESIGPARM HAIKU_ESIGPARM
426	#define EDOM HAIKU_EDOM
427	#define ERANGE HAIKU_ERANGE
428	#define EPROTOTYPE HAIKU_EPROTOTYPE
429	#define EPROTONOSUPPORT HAIKU_EPROTONOSUPPORT
430	#define EPFNOSUPPORT HAIKU_EPFNOSUPPORT
431	#define EAFNOSUPPORT HAIKU_EAFNOSUPPORT
432	#define EADDRINUSE HAIKU_EADDRINUSE
433	#define EADDRNOTAVAIL HAIKU_EADDRNOTAVAIL
434	#define ENETDOWN HAIKU_ENETDOWN
435	#define ENETUNREACH HAIKU_ENETUNREACH
436	#define ENETRESET HAIKU_ENETRESET
437	#define ECONNABORTED HAIKU_ECONNABORTED
438	#define ECONNRESET HAIKU_ECONNRESET
439	#define EISCONN HAIKU_EISCONN
440	#define ENOTCONN HAIKU_ENOTCONN
441	#define ESHUTDOWN HAIKU_ESHUTDOWN
442	#define ECONNREFUSED HAIKU_ECONNREFUSED
443	#define EHOSTUNREACH HAIKU_EHOSTUNREACH
444	#define ENOPROTOOPT HAIKU_ENOPROTOOPT
445	#define ENOBUFS HAIKU_ENOBUFS
446	#define EINPROGRESS HAIKU_EINPROGRESS
447	#define EALREADY HAIKU_EALREADY
448	#define EILSEQ HAIKU_EILSEQ
449	#define ENOMSG HAIKU_ENOMSG
450	#define ESTALE HAIKU_ESTALE
451	#define EOVERFLOW HAIKU_EOVERFLOW
452	#define EMSGSIZE HAIKU_EMSGSIZE
453	#define EOPNOTSUPP HAIKU_EOPNOTSUPP
454	#define ENOTSOCK HAIKU_ENOTSOCK
455	#define EHOSTDOWN HAIKU_EHOSTDOWN
456	#define	EBADMSG HAIKU_EBADMSG
457	#define ECANCELED HAIKU_ECANCELED
458	#define EDESTADDRREQ HAIKU_EDESTADDRREQ
459	#define EDQUOT HAIKU_EDQUOT
460	#define EIDRM HAIKU_EIDRM
461	#define EMULTIHOP HAIKU_EMULTIHOP
462	#define ENODATA HAIKU_ENODATA
463	#define ENOLINK HAIKU_ENOLINK
464	#define ENOSR HAIKU_ENOSR
465	#define ENOSTR HAIKU_ENOSTR
466	#define ENOTSUP HAIKU_ENOTSUP
467	#define EPROTO HAIKU_EPROTO
468	#define ETIME HAIKU_ETIME
469	#define ETXTBSY HAIKU_ETXTBSY
470	#define ENOMEM HAIKU_ENOMEM
471	#define EACCES HAIKU_EACCES
472	#define EINTR HAIKU_EINTR
473	#define EIO HAIKU_EIO
474	#define EBUSY HAIKU_EBUSY
475	#define EFAULT HAIKU_EFAULT
476	#define ETIMEDOUT HAIKU_ETIMEDOUT
477	#define EAGAIN HAIKU_EAGAIN
478	#define EWOULDBLOCK HAIKU_EWOULDBLOCK
479	#define EBADF HAIKU_EBADF
480	#define EEXIST HAIKU_EEXIST
481	#define EINVAL HAIKU_EINVAL
482	#define ENAMETOOLONG HAIKU_ENAMETOOLONG
483	#define ENOENT HAIKU_ENOENT
484	#define EPERM HAIKU_EPERM
485	#define ENOTDIR HAIKU_ENOTDIR
486	#define EISDIR HAIKU_EISDIR
487	#define ENOTEMPTY HAIKU_ENOTEMPTY
488	#define ENOSPC HAIKU_ENOSPC
489	#define EROFS HAIKU_EROFS
490	#define EMFILE HAIKU_EMFILE
491	#define EXDEV HAIKU_EXDEV
492	#define ELOOP HAIKU_ELOOP
493	#define ENOEXEC HAIKU_ENOEXEC
494	#define EPIPE HAIKU_EPIPE
495	#define ENOATTR HAIKU_ENOATTR
496
497	#undef errno
498	#define errno (*_haiku_build_errno())
499#elif defined(HAIKU_HOST_PLATFORM_HAIKU)
500#	include <../os/support/Errors.h>
501#endif	// ! BUILDING_HAIKU_ERROR_MAPPER
502
503#ifdef __cplusplus
504extern "C" {
505#endif
506
507extern int *_haiku_build_errno();
508extern int _haiku_to_host_error(int error);
509
510#ifdef __cplusplus
511}
512#endif
513
514
515#endif	/* _BUILD_ERRORS_H */
516