ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
error_codes.h
Go to the documentation of this file.
1
26
27#pragma once
28
29#include <stdint.h>
30
31// Preserve Windows error values and remove conflicting macros before the enum.
32#ifdef _WIN32
33#include <libplatform/windows_compat.h>
34#endif
35
44typedef enum {
45 /* Standard codes (0-2) - Unix conventions */
49
50 /* Initialization failures (3-19) */
57
58 /* Hardware/Device errors (20-39) */
70
71 /* Network errors (40-59) */
78
79 /* Session and protocol errors (46-55) */
89
91
92 /* Security/Crypto errors (60-79) */
98
99 /* Runtime errors (80-99) */
113
114 /* Signal/Crash handlers (100-127) */
118
119 /* Compression errors (103-104) */
122
123 /* File system errors (105-109) */
126
127 /* Process errors (110-119) */
129
130 /* YouTube/URL streaming errors (111-116) */
136
137 /* Reserved (128-255) - Should not be used */
138 /* 128+N typically means "terminated by signal N" on Unix systems */
139
141
143static inline const char *asciichat_error_name(asciichat_error_t code) {
144 switch (code) {
145 case ASCIICHAT_OK:
146 return "ASCIICHAT_OK";
147 case ERROR_GENERAL:
148 return "ERROR_GENERAL";
149 case ERROR_USAGE:
150 return "ERROR_USAGE";
151 case ERROR_MEMORY:
152 return "ERROR_MEMORY";
153 case ERROR_CONFIG:
154 return "ERROR_CONFIG";
156 return "ERROR_CRYPTO_INIT";
158 return "ERROR_LOGGING_INIT";
160 return "ERROR_PLATFORM_INIT";
161 case ERROR_INIT:
162 return "ERROR_INIT";
163 case ERROR_WEBCAM:
164 return "ERROR_WEBCAM";
166 return "ERROR_WEBCAM_IN_USE";
168 return "ERROR_WEBCAM_PERMISSION";
169 case ERROR_AUDIO:
170 return "ERROR_AUDIO";
172 return "ERROR_AUDIO_IN_USE";
173 case ERROR_TERMINAL:
174 return "ERROR_TERMINAL";
175 case ERROR_MEDIA_INIT:
176 return "ERROR_MEDIA_INIT";
177 case ERROR_MEDIA_OPEN:
178 return "ERROR_MEDIA_OPEN";
180 return "ERROR_MEDIA_DECODE";
181 case ERROR_MEDIA_SEEK:
182 return "ERROR_MEDIA_SEEK";
184 return "ERROR_NOT_SUPPORTED";
185 case ERROR_NETWORK:
186 return "ERROR_NETWORK";
188 return "ERROR_NETWORK_BIND";
190 return "ERROR_NETWORK_CONNECT";
192 return "ERROR_NETWORK_TIMEOUT";
194 return "ERROR_NETWORK_PROTOCOL";
196 return "ERROR_NETWORK_SIZE";
198 return "ERROR_RATE_LIMITED";
200 return "ERROR_SESSION_NOT_FOUND";
202 return "ERROR_SESSION_FULL";
204 return "ERROR_INVALID_PASSWORD";
206 return "ERROR_INVALID_SIGNATURE";
208 return "ERROR_ACDS_STRING_TAKEN";
210 return "ERROR_ACDS_STRING_INVALID";
211 case ERROR_INTERNAL:
212 return "ERROR_INTERNAL";
214 return "ERROR_UNKNOWN_PACKET";
216 return "ERROR_NETWORK_INCOMPLETE";
217 case ERROR_CRYPTO:
218 return "ERROR_CRYPTO";
219 case ERROR_CRYPTO_KEY:
220 return "ERROR_CRYPTO_KEY";
222 return "ERROR_CRYPTO_AUTH";
224 return "ERROR_CRYPTO_HANDSHAKE";
226 return "ERROR_CRYPTO_VERIFICATION";
227 case ERROR_THREAD:
228 return "ERROR_THREAD";
229 case ERROR_BUFFER:
230 return "ERROR_BUFFER";
232 return "ERROR_BUFFER_FULL";
234 return "ERROR_BUFFER_OVERFLOW";
235 case ERROR_DISPLAY:
236 return "ERROR_DISPLAY";
238 return "ERROR_INVALID_STATE";
240 return "ERROR_INVALID_PARAM";
242 return "ERROR_INVALID_FRAME";
244 return "ERROR_RESOURCE_EXHAUSTED";
245 case ERROR_FORMAT:
246 return "ERROR_FORMAT";
247 case ERROR_STRING:
248 return "ERROR_STRING";
250 return "ERROR_PROMPT_TIMEOUT";
251 case ERROR_NOT_FOUND:
252 return "ERROR_NOT_FOUND";
254 return "ERROR_SIGNAL_INTERRUPT";
256 return "ERROR_SIGNAL_CRASH";
258 return "ERROR_ASSERTION_FAILED";
260 return "ERROR_COMPRESSION";
262 return "ERROR_DECOMPRESSION";
264 return "ERROR_FILE_OPERATION";
266 return "ERROR_FILE_NOT_FOUND";
268 return "ERROR_PROCESS_FAILED";
270 return "ERROR_YOUTUBE_INVALID_URL";
272 return "ERROR_YOUTUBE_EXTRACT_FAILED";
274 return "ERROR_YOUTUBE_UNPLAYABLE";
276 return "ERROR_YOUTUBE_NETWORK";
278 return "ERROR_YOUTUBE_NOT_SUPPORTED";
279 default:
280 return "ERROR_UNKNOWN";
281 }
282}
283
290static inline const char *asciichat_error_string(asciichat_error_t code) {
291 switch (code) {
292 case ASCIICHAT_OK:
293 return "Success";
295 return "Prompt timed out";
296 case ERROR_GENERAL:
297 return "General error";
298 case ERROR_USAGE:
299 return "Invalid command line usage";
300 case ERROR_MEMORY:
301 return "Memory allocation failed";
302 case ERROR_CONFIG:
303 return "Configuration error";
305 return "Cryptographic initialization failed";
307 return "Logging initialization failed";
309 return "Platform initialization failed";
310 case ERROR_INIT:
311 return "Initialization failed";
312 case ERROR_WEBCAM:
313 return "Webcam error";
315 return "Webcam in use by another application";
317 return "Webcam permission denied";
318 case ERROR_AUDIO:
319 return "Audio device error";
321 return "Audio device in use";
322 case ERROR_TERMINAL:
323 return "Terminal error";
324 case ERROR_MEDIA_INIT:
325 return "Media source initialization failed";
326 case ERROR_MEDIA_OPEN:
327 return "Failed to open media file or stream";
329 return "Media decoding failed";
330 case ERROR_MEDIA_SEEK:
331 return "Media seek operation failed";
333 return "Operation not supported";
334 case ERROR_NETWORK:
335 return "Network error";
337 return "Cannot bind to network port";
339 return "Cannot connect to server";
341 return "Incomplete network message";
343 return "Network timeout";
345 return "Network protocol error";
347 return "Network packet size error";
349 return "Rate limit exceeded";
351 return "Session not found";
353 return "Session is full";
355 return "Invalid password";
357 return "Invalid signature";
359 return "Session string already in use";
361 return "Invalid session string";
362 case ERROR_INTERNAL:
363 return "Internal server error";
365 return "Unknown packet type";
366 case ERROR_CRYPTO:
367 return "Cryptographic error";
368 case ERROR_CRYPTO_KEY:
369 return "Cryptographic key error";
371 return "Authentication failed";
373 return "Cryptographic handshake failed";
375 return "Signature verification failed";
376 case ERROR_THREAD:
377 return "Thread error";
378 case ERROR_BUFFER:
379 return "Buffer error";
381 return "Buffer full";
383 return "Buffer overflow";
384 case ERROR_DISPLAY:
385 return "Display error";
387 return "Invalid program state";
389 return "Invalid parameter";
391 return "Invalid frame data";
393 return "System resources exhausted";
394 case ERROR_FORMAT:
395 return "String formatting operation failed";
396 case ERROR_STRING:
397 return "String manipulation operation failed";
398 case ERROR_NOT_FOUND:
399 return "Resource not found";
401 return "Interrupted by signal";
403 return "Terminated by fatal signal";
405 return "Assertion failed";
407 return "Compression operation failed";
409 return "Decompression operation failed";
411 return "File or directory operation failed";
413 return "File or directory not found";
415 return "Process execution or termination failed";
417 return "Invalid YouTube URL format";
419 return "YouTube URL extraction failed";
421 return "Video cannot be played";
423 return "YouTube network error";
425 return "YouTube support not compiled";
426 default:
427 return "Unknown error";
428 }
429}
430
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
@ ERROR_LOGGING_INIT
Definition error_codes.h:54
@ ERROR_INVALID_STATE
@ ERROR_CRYPTO_HANDSHAKE
Definition error_codes.h:96
@ ERROR_MEDIA_SEEK
Definition error_codes.h:68
@ ERROR_NETWORK_CONNECT
Definition error_codes.h:74
@ ERROR_CRYPTO_KEY
Definition error_codes.h:94
@ ERROR_NETWORK_INCOMPLETE
Definition error_codes.h:90
@ ERROR_SIGNAL_INTERRUPT
@ ERROR_UNKNOWN_PACKET
Definition error_codes.h:88
@ ERROR_INVALID_PASSWORD
Definition error_codes.h:83
@ ERROR_COMPRESSION
@ ERROR_ACDS_STRING_INVALID
Definition error_codes.h:86
@ ERROR_ACDS_STRING_TAKEN
Definition error_codes.h:85
@ ERROR_NETWORK_BIND
Definition error_codes.h:73
@ ERROR_FILE_NOT_FOUND
@ ERROR_NETWORK
Definition error_codes.h:72
@ ERROR_PLATFORM_INIT
Definition error_codes.h:55
@ ERROR_YOUTUBE_NOT_SUPPORTED
@ ERROR_WEBCAM_IN_USE
Definition error_codes.h:60
@ ERROR_CRYPTO_VERIFICATION
Definition error_codes.h:97
@ ERROR_RESOURCE_EXHAUSTED
@ ERROR_PROCESS_FAILED
@ ERROR_NOT_FOUND
@ ERROR_BUFFER_FULL
@ ERROR_PROMPT_TIMEOUT
@ ERROR_AUDIO
Definition error_codes.h:62
@ ERROR_YOUTUBE_NETWORK
@ ERROR_NETWORK_PROTOCOL
Definition error_codes.h:76
@ ERROR_DECOMPRESSION
@ ERROR_MEMORY
Definition error_codes.h:51
@ ASCIICHAT_OK
Definition error_codes.h:46
@ ERROR_GENERAL
Definition error_codes.h:47
@ ERROR_STRING
@ ERROR_MEDIA_DECODE
Definition error_codes.h:67
@ ERROR_INVALID_SIGNATURE
Definition error_codes.h:84
@ ERROR_NETWORK_SIZE
Definition error_codes.h:77
@ ERROR_CRYPTO_AUTH
Definition error_codes.h:95
@ ERROR_INIT
Definition error_codes.h:56
@ ERROR_WEBCAM_PERMISSION
Definition error_codes.h:61
@ ERROR_RATE_LIMITED
Definition error_codes.h:80
@ ERROR_YOUTUBE_EXTRACT_FAILED
@ ERROR_SESSION_FULL
Definition error_codes.h:82
@ ERROR_DISPLAY
@ ERROR_MEDIA_INIT
Definition error_codes.h:65
@ ERROR_CRYPTO_INIT
Definition error_codes.h:53
@ ERROR_INVALID_FRAME
@ ERROR_CONFIG
Definition error_codes.h:52
@ ERROR_FILE_OPERATION
@ ERROR_CRYPTO
Definition error_codes.h:93
@ ERROR_SIGNAL_CRASH
@ ERROR_USAGE
Definition error_codes.h:48
@ ERROR_INVALID_PARAM
@ ERROR_BUFFER_OVERFLOW
@ ERROR_INTERNAL
Definition error_codes.h:87
@ ERROR_MEDIA_OPEN
Definition error_codes.h:66
@ ERROR_AUDIO_IN_USE
Definition error_codes.h:63
@ ERROR_TERMINAL
Definition error_codes.h:64
@ ERROR_ASSERTION_FAILED
@ ERROR_SESSION_NOT_FOUND
Definition error_codes.h:81
@ ERROR_NETWORK_TIMEOUT
Definition error_codes.h:75
@ ERROR_WEBCAM
Definition error_codes.h:59
@ ERROR_BUFFER
@ ERROR_YOUTUBE_INVALID_URL
@ ERROR_THREAD
@ ERROR_NOT_SUPPORTED
Definition error_codes.h:69
@ ERROR_YOUTUBE_UNPLAYABLE
@ ERROR_FORMAT