static void dbg_output(int level,const char* prefix, const char* format, va_list ap, const char* alarmComp = 0, const char* alarmInfo = 0) { bool out = (s_output || s_intout) && (prefix || format); bool alarm = alarmComp && format && s_alarms; if (!(out || alarm)) return; char buf[OUT_BUFFER_SIZE]; unsigned int n = Debugger::formatTime(buf,s_fmtstamp); unsigned int l = s_indent*2; if (l >= sizeof(buf)-n) l = sizeof(buf)-n-1; ::memset(buf+n,' ',l); n += l; buf[n] = 0; l = sizeof(buf)-n-2; if (prefix) ::strncpy(buf+n,prefix,l); n = ::strlen(buf); l = sizeof(buf)-n-2; char* msg = buf+n; if (format) { ::vsnprintf(msg,l,format,ap); buf[OUT_BUFFER_SIZE - 2] = 0; } if (out) common_output(level,buf); if (alarm) { out_mux.lock(); if (s_alarms) s_alarms(msg,level,alarmComp,alarmInfo); out_mux.unlock(); } }
void Output(const char* format, ...) { char buf[OUT_BUFFER_SIZE]; if (!((s_output || s_intout) && format && *format)) return; if (reentered()) return; va_list va; va_start(va,format); ::vsnprintf(buf,sizeof(buf)-2,format,va); va_end(va); common_output(-1,buf); }
void Output(const char* format, ...) { char buf[OUT_BUFFER_SIZE]; void (*relay)(int,const char*,const char*,const char*) = s_relay; if (!((s_output || s_intout || relay) && format && *format)) return; if (reentered()) return; va_list va; va_start(va,format); ::vsnprintf(buf,sizeof(buf)-2,format,va); va_end(va); if (relay) relay(-1,buf,0,0); else common_output(-1,buf); }
static void dbg_output(int level,const char* prefix, const char* format, va_list ap) { if (!(s_output || s_intout)) return; char buf[OUT_BUFFER_SIZE]; unsigned int n = Debugger::formatTime(buf,s_fmtstamp); unsigned int l = s_indent*2; if (l >= sizeof(buf)-n) l = sizeof(buf)-n-1; ::memset(buf+n,' ',l); n += l; buf[n] = 0; l = sizeof(buf)-n-2; if (prefix) ::strncpy(buf+n,prefix,l); n = ::strlen(buf); l = sizeof(buf)-n-2; if (format) { ::vsnprintf(buf+n,l,format,ap); buf[OUT_BUFFER_SIZE - 2] = 0; } common_output(level,buf); }