[17] | 1 | /* -*- mode: C; tab-width:8; c-basic-offset:8 -*- |
---|
| 2 | * vi:set ts=8: |
---|
| 3 | * |
---|
| 4 | * al_debug.c |
---|
| 5 | * |
---|
| 6 | * openal custom debug messages. |
---|
| 7 | */ |
---|
| 8 | #define _GNU_SOURCE |
---|
| 9 | |
---|
| 10 | #include "al_siteconfig.h" |
---|
| 11 | |
---|
| 12 | #include <stdio.h> |
---|
| 13 | #include <stdarg.h> |
---|
| 14 | |
---|
| 15 | #include "al_debug.h" |
---|
| 16 | |
---|
| 17 | #ifdef NEED_DEBUG |
---|
| 18 | /* |
---|
| 19 | * ald2str( aldEnum type ) |
---|
| 20 | * |
---|
| 21 | * Returns a const char * string giving a readable representation of the debug |
---|
| 22 | * type, or NULL if type is not a valid debug message type. This string does |
---|
| 23 | * not need to be free'd. |
---|
| 24 | */ |
---|
| 25 | static const char *ald2str( aldEnum l ) { |
---|
| 26 | switch( l ) { |
---|
| 27 | case ALD_INVALID: return "INVALID"; |
---|
| 28 | case ALD_CONVERT: return "CONVERT"; |
---|
| 29 | case ALD_CONFIG: return "CONFIG"; |
---|
| 30 | case ALD_SOURCE: return "SOURCE"; |
---|
| 31 | case ALD_LOOP: return "LOOP"; |
---|
| 32 | case ALD_STUB: return "STUB"; |
---|
| 33 | case ALD_CONTEXT: return "CONTEXT"; |
---|
| 34 | case ALD_MATH: return "MATH"; |
---|
| 35 | case ALD_MIXER: return "MIXER"; |
---|
| 36 | case ALD_ERROR: return "ERROR"; |
---|
| 37 | case ALD_EXT: return "EXT"; |
---|
| 38 | case ALD_LOCK: return "LOCK"; |
---|
| 39 | case ALD_MAXIMUS: return "MAXIMUS"; |
---|
| 40 | case ALD_STREAMING: return "STREAM"; |
---|
| 41 | case ALD_MEM: return "MEM"; |
---|
| 42 | case ALD_QUEUE: return "QUEUE"; |
---|
| 43 | case ALD_FILTER: return "FILTER"; |
---|
| 44 | default: break; |
---|
| 45 | } |
---|
| 46 | |
---|
| 47 | return NULL; |
---|
| 48 | } |
---|
| 49 | #endif |
---|
| 50 | |
---|
| 51 | /* |
---|
| 52 | * _alDebug( aldEnum level, const char *fn, int ln, const char *format, ... ) |
---|
| 53 | * |
---|
| 54 | * If debugging messages for the type level are enabled, print the debugging |
---|
| 55 | * message specified by format, ... ( printf format ). Otherwise, return. |
---|
| 56 | * |
---|
| 57 | */ |
---|
| 58 | int _alDebug( aldEnum level, const char *fn, int ln, const char *format, ... ) |
---|
| 59 | { |
---|
| 60 | #ifndef NEED_DEBUG |
---|
| 61 | (void)level; (void)fn; (void)ln; (void)format; |
---|
| 62 | return 0; |
---|
| 63 | #else |
---|
| 64 | static char formatbuf[256]; |
---|
| 65 | int count; |
---|
| 66 | va_list ap; |
---|
| 67 | #ifndef DEBUG_MAXIMUS /* DEBUG_MAXIMUS enables all debugging */ |
---|
| 68 | |
---|
| 69 | #ifndef DEBUG_LOOP |
---|
| 70 | if(level == ALD_LOOP) return 0; |
---|
| 71 | #endif |
---|
| 72 | #ifndef DEBUG_STUB |
---|
| 73 | if(level == ALD_STUB) return 0; |
---|
| 74 | #endif |
---|
| 75 | #ifndef DEBUG_CONVERT |
---|
| 76 | if(level == ALD_CONVERT) return 0; |
---|
| 77 | #endif |
---|
| 78 | #ifndef DEBUG_CONFIG |
---|
| 79 | if(level == ALD_CONFIG) return 0; |
---|
| 80 | #endif |
---|
| 81 | #ifndef DEBUG_MATH |
---|
| 82 | if(level == ALD_MATH) return 0; |
---|
| 83 | #endif |
---|
| 84 | #ifndef DEBUG_EXT |
---|
| 85 | if(level == ALD_EXT) return 0; |
---|
| 86 | #endif |
---|
| 87 | #ifndef DEBUG_CONTEXT |
---|
| 88 | if(level == ALD_CONTEXT) return 0; |
---|
| 89 | #endif |
---|
| 90 | #ifndef DEBUG_SOURCE |
---|
| 91 | if(level == ALD_SOURCE) return 0; |
---|
| 92 | #endif |
---|
| 93 | #ifndef DEBUG_LOCK |
---|
| 94 | if(level == ALD_LOCK) return 0; |
---|
| 95 | #endif |
---|
| 96 | #ifndef DEBUG_MAXIMUS |
---|
| 97 | if(level == ALD_MAXIMUS) return 0; |
---|
| 98 | #endif |
---|
| 99 | #ifndef DEBUG_STREAMING |
---|
| 100 | if(level == ALD_STREAMING) return 0; |
---|
| 101 | #endif |
---|
| 102 | #ifndef DEBUG_MEM |
---|
| 103 | if(level == ALD_MEM) return 0; |
---|
| 104 | #endif |
---|
| 105 | #ifndef DEBUG_BUFFER |
---|
| 106 | if(level == ALD_BUFFER) return 0; |
---|
| 107 | #endif |
---|
| 108 | #ifndef DEBUG_LISTENER |
---|
| 109 | if(level == ALD_LISTENER) return 0; |
---|
| 110 | #endif |
---|
| 111 | #ifndef DEBUG_QUEUE |
---|
| 112 | if(level == ALD_QUEUE) return 0; |
---|
| 113 | #endif |
---|
| 114 | #ifndef DEBUG_FILTER |
---|
| 115 | if(level == ALD_FILTER) return 0; |
---|
| 116 | #endif |
---|
| 117 | #ifndef DEBUG_MIXER |
---|
| 118 | if(level == ALD_MIXER) return 0; |
---|
| 119 | #endif |
---|
| 120 | |
---|
| 121 | #endif /* DEBUG_MAXIMUS */ |
---|
| 122 | |
---|
| 123 | count = snprintf(formatbuf, sizeof(formatbuf), "%s\t[%s:%d] ", ald2str(level), fn, ln); |
---|
| 124 | if(count < 0) |
---|
| 125 | { |
---|
| 126 | return count; |
---|
| 127 | } |
---|
| 128 | |
---|
| 129 | va_start(ap, format); |
---|
| 130 | vsnprintf(formatbuf, sizeof formatbuf, format, ap); |
---|
| 131 | va_end(ap); |
---|
| 132 | |
---|
| 133 | return fprintf(stderr, "%s\t[%s:%d] %s\n", |
---|
| 134 | ald2str(level), fn, ln, formatbuf ); |
---|
| 135 | #endif /* NEED_DEBUG */ |
---|
| 136 | } |
---|