Changeset 3611:e33c2cfeb17e in roaraudio
- Timestamp:
- 03/01/10 03:08:04 (14 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/debug.h
r3607 r3611 43 43 #define ROAR_WARNING_ALWAYS 2 44 44 45 #define ROAR_DEBUG_TYPE_ERROR 1 46 #define ROAR_DEBUG_TYPE_WARNING 2 47 #define ROAR_DEBUG_TYPE_INFO 3 48 #define ROAR_DEBUG_TYPE_DEBUG 4 49 50 #define ROAR_DEBUG_MODE_SYSIO 0 51 #define ROAR_DEBUG_MODE_VIO 1 52 #define ROAR_DEBUG_MODE_SYSLOG 2 53 45 54 #if 1 46 55 #define roar_debug_warn_sysio(f,n,i) roar_debug_warn_sysio_real((f),(n),(i)) … … 55 64 56 65 void roar_debug_set_stderr_fh(int fh); 66 void roar_debug_set_stderr_mode(int mode); 57 67 58 68 struct roar_vio_calls * roar_debug_get_stderr(void); … … 60 70 void roar_debug_msg_simple(const char *format, ...); 61 71 72 void roar_debug_msg(int type, unsigned long int line, char * file, char * prefix, char * format, ...); 73 62 74 #endif 63 75 -
include/libroar/libroar.h
r3567 r3611 53 53 #ifdef ROAR_HAVE_H_SIGNAL 54 54 #include <signal.h> 55 #endif 56 57 #ifdef ROAR_HAVE_SYSLOG 58 #include <syslog.h> 55 59 #endif 56 60 -
libroar/debug.c
r3607 r3611 36 36 #include "libroar.h" 37 37 38 static int roar_debug_stderr_fh = ROAR_STDERR; 38 static int roar_debug_stderr_mode = ROAR_DEBUG_MODE_SYSIO; 39 static int roar_debug_stderr_fh = ROAR_STDERR; 39 40 40 41 void roar_debug_warn_sysio_real(char * func, char * newfunc, char * info) { … … 54 55 } 55 56 57 void roar_debug_set_stderr_mode(int mode) { 58 roar_debug_stderr_mode = mode; 59 } 60 56 61 struct roar_vio_calls * roar_debug_get_stderr(void) { 57 62 static struct roar_vio_calls STDERR; 58 63 59 if ( roar_debug_stderr_fh == -1 ) 60 return NULL; 64 switch (roar_debug_stderr_mode) { 65 case ROAR_DEBUG_MODE_SYSIO: 66 if ( roar_debug_stderr_fh == -1 ) 67 return NULL; 61 68 62 roar_vio_open_fh(&STDERR, roar_debug_stderr_fh);69 roar_vio_open_fh(&STDERR, roar_debug_stderr_fh); 63 70 64 return &STDERR; 71 return &STDERR; 72 break; 73 default: 74 return NULL; 75 break; 76 } 65 77 } 66 78 … … 70 82 int ret; 71 83 char buf[8192]; 84 size_t len; 72 85 73 if ( (vio = roar_debug_get_stderr()) == NULL ) 74 return; 86 vio = roar_debug_get_stderr(); 75 87 76 88 va_start(ap, format); … … 78 90 va_end(ap); 79 91 80 roar_vio_write(vio, buf, ret); 92 if ( vio != NULL ) { 93 roar_vio_write(vio, buf, ret); 94 } else { 95 switch (roar_debug_stderr_mode) { 96 #ifdef ROAR_HAVE_SYSLOG 97 case ROAR_DEBUG_MODE_SYSLOG: 98 // strip \n if needed for syslog: 99 len = strlen(buf); 100 if ( buf[len-1] == '\n' ) 101 buf[len-1] = 0; 102 103 syslog(LOG_ERR, "%s", buf); // bad to use some defaults 104 break; 105 #endif 106 default: 107 return; 108 break; 109 } 110 } 81 111 } 82 112 113 void roar_debug_msg(int type, unsigned long int line, char * file, char * prefix, char * format, ...) { 114 struct roar_vio_calls * vio; 115 va_list ap; 116 char buf[8192]; 117 char * bufp = buf; 118 char * typename; 119 int ret; 120 int priority; 121 size_t len; 122 123 switch (type) { 124 case ROAR_DEBUG_TYPE_ERROR: typename = "Error"; break; 125 case ROAR_DEBUG_TYPE_WARNING: typename = "Warning"; break; 126 case ROAR_DEBUG_TYPE_INFO: typename = "Info"; break; 127 case ROAR_DEBUG_TYPE_DEBUG: typename = "Debug"; break; 128 default: typename = "Unknown Type"; break; 129 } 130 131 ret = snprintf(buf, sizeof(buf), "(%s: %s:%lu): %s: ", prefix, file, line, typename); 132 133 if ( ret > 0 && ret < sizeof(buf) ) { 134 bufp += ret; 135 } else { 136 ret = 0; 137 } 138 139 len = ret; 140 141 va_start(ap, format); 142 ret = vsnprintf(bufp, sizeof(buf)-ret, format, ap); 143 va_end(ap); 144 145 len += ret; 146 147 switch (roar_debug_stderr_mode) { 148 case ROAR_DEBUG_MODE_SYSIO: 149 case ROAR_DEBUG_MODE_VIO: 150 if ( (vio = roar_debug_get_stderr()) == NULL ) 151 return; 152 roar_vio_write(vio, buf, len); 153 roar_vio_write(vio, "\n", 1); 154 break; 155 #ifdef ROAR_HAVE_SYSLOG 156 case ROAR_DEBUG_MODE_SYSLOG: 157 switch (type) { 158 case ROAR_DEBUG_TYPE_ERROR: priority = LOG_ERR; break; 159 case ROAR_DEBUG_TYPE_WARNING: priority = LOG_WARNING; break; 160 case ROAR_DEBUG_TYPE_INFO: priority = LOG_INFO; break; 161 case ROAR_DEBUG_TYPE_DEBUG: priority = LOG_DEBUG; break; 162 default: priority = LOG_ERR; break; 163 } 164 syslog(priority, "%s", buf); 165 break; 166 #endif 167 } 168 } 83 169 //ll
Note: See TracChangeset
for help on using the changeset viewer.