X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Flogger.c;h=5b43a3ac9767b0f3db448557eab60c1a3bcc448d;hb=3bf187fe037df34459f04bf4e625f38afb80fcf8;hp=00d88b4b38d7cdc68493e15017be88a73233a64a;hpb=b0088adf036a53139f67ebf96f1bbb55abf199f4;p=retroray diff --git a/src/logger.c b/src/logger.c index 00d88b4..5b43a3a 100644 --- a/src/logger.c +++ b/src/logger.c @@ -22,6 +22,10 @@ along with this program. If not, see . #if defined(__MSDOS__) || defined(MSDOS) static int setup_serial(int sdev); + +void ser_putchar(int c); +void ser_puts(const char *s); +void ser_printf(const char *fmt, ...); #else #define USE_STD #endif @@ -149,36 +153,19 @@ int add_log_callback(void (*cbfunc)(const char*, void*), void *cls) #endif #endif -static void logmsg(int type, const char *fmt, va_list ap) +static int logmsg(int type, const char *fmt, va_list ap) { - static char *buf; - static int bufsz; - int i, ret, newsz; - char *tmp; - - while((ret = vsnprintf(buf, bufsz, fmt, ap)) > bufsz || ret < 0) { - if(ret > bufsz) { - newsz = ret + 1; - } else { - newsz = bufsz ? bufsz * 2 : 256; - } - if(!(tmp = realloc(buf, newsz))) { - if(buf) { - buf[bufsz - 1] = 0; - } - break; - } - buf = tmp; - bufsz = newsz; - } + static char buf[2048]; + int i, len; - if(!buf) return; + len = vsnprintf(buf, sizeof buf, fmt, ap); for(i=0; i + #define UART1_BASE 0x3f8 #define UART2_BASE 0x2f8