#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
#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<num_outputs; i++) {
switch(outputs[i].type) {
case LOG_FILE:
case LOG_STREAM:
fputs(buf, outputs[i].out.fp);
+ fflush(outputs[i].out.fp);
break;
#if defined(MSDOS) || defined(__MSDOS__)
break;
}
}
+
+ return len;
}
-void errormsg(const char *fmt, ...)
+int errormsg(const char *fmt, ...)
{
+ int len;
va_list ap;
va_start(ap, fmt);
- logmsg(LOG_ERR, fmt, ap);
+ len = logmsg(LOG_ERR, fmt, ap);
va_end(ap);
+ return len;
}
-void warnmsg(const char *fmt, ...)
+int warnmsg(const char *fmt, ...)
{
+ int len;
va_list ap;
va_start(ap, fmt);
- logmsg(LOG_WARN, fmt, ap);
+ len = logmsg(LOG_WARN, fmt, ap);
va_end(ap);
+ return len;
}
-void infomsg(const char *fmt, ...)
+int infomsg(const char *fmt, ...)
{
+ int len;
va_list ap;
va_start(ap, fmt);
- logmsg(LOG_INFO, fmt, ap);
+ len = logmsg(LOG_INFO, fmt, ap);
va_end(ap);
+ return len;
}
-void dbgmsg(const char *fmt, ...)
+int dbgmsg(const char *fmt, ...)
{
+ int len;
va_list ap;
va_start(ap, fmt);
- logmsg(LOG_DBG, fmt, ap);
+ len = logmsg(LOG_DBG, fmt, ap);
va_end(ap);
+ return len;
}
-void verrormsg(const char *fmt, va_list ap)
+int verrormsg(const char *fmt, va_list ap)
{
- logmsg(LOG_ERR, fmt, ap);
+ return logmsg(LOG_ERR, fmt, ap);
}
-void vwarnmsg(const char *fmt, va_list ap)
+int vwarnmsg(const char *fmt, va_list ap)
{
- logmsg(LOG_ERR, fmt, ap);
+ return logmsg(LOG_ERR, fmt, ap);
}
-void vinfomsg(const char *fmt, va_list ap)
+int vinfomsg(const char *fmt, va_list ap)
{
- logmsg(LOG_ERR, fmt, ap);
+ return logmsg(LOG_ERR, fmt, ap);
}
-void vdbgmsg(const char *fmt, va_list ap)
+int vdbgmsg(const char *fmt, va_list ap)
{
- logmsg(LOG_ERR, fmt, ap);
+ return logmsg(LOG_ERR, fmt, ap);
}
#if defined(MSDOS) || defined(__MSDOS__)
+#include <conio.h>
+
#define UART1_BASE 0x3f8
#define UART2_BASE 0x2f8