windows-nt/Source/XPSP1/NT/sdktools/mep/browser/bsc/printf.c
2020-09-26 16:20:57 +08:00

115 lines
1.8 KiB
C

//
// printf.c
//
// simple minded printf replacement
//
// only supports %s and %d but it is *small*
//
#include <string.h>
#include <io.h>
#include <stdlib.h>
#if defined(OS2)
#define INCL_NOCOMMON
#define INCL_DOSPROCESS
#define INCL_DOSSEMAPHORES
#define INCL_DOSFILEMGR
#define INCL_DOSERRORS
#define INCL_DOSMISC
#include <os2.h>
#else
#include <windows.h>
#endif
#include <dos.h>
#include "hungary.h"
#include "bsc.h"
#include "bscsup.h"
static char lpchBuf[1024];
static LPCH lpchPos = NULL;
VOID BSC_API
BSCPrintf(LSZ lszFormat, ...)
// printf replacement
//
{
va_list va;
LPCH lpch;
char ch;
if (!lpchPos) {
lpchPos = lpchBuf;
}
va_start(va, lszFormat);
BSCFormat(lpchPos, lszFormat, va);
// write out a line at a time
//
for (;;) {
lpch = strchr(lpchPos, '\n');
if (!lpch) {
lpchPos += strlen(lpchPos);
return;
}
ch = *++lpch;
*lpch = 0;
BSCOutput(lpchBuf);
*lpch = ch;
strcpy(lpchBuf, lpch);
if (!ch)
lpchPos = lpchBuf;
else
lpchPos = lpchBuf + strlen(lpchBuf);
}
}
#ifdef DEBUG
static char lpchDBuf[256];
static LPCH lpchDPos = NULL;
VOID BSC_API
BSCDebug(LSZ lszFormat, ...)
// printf clone for debug output
//
{
va_list va;
LPCH lpch;
char ch;
if (!lpchDPos) {
lpchDPos = lpchDBuf;
}
va_start(va, lszFormat);
BSCFormat(lpchDPos, lszFormat, va);
// write out a line at a time
//
for (;;) {
lpch = strchr(lpchDPos, '\n');
if (!lpch) {
lpchDPos += strlen(lpchDPos);
return;
}
ch = *++lpch;
*lpch = 0;
BSCDebugOut(lpchDBuf);
*lpch = ch;
strcpy(lpchDBuf, lpch);
if (!ch)
lpchDPos = lpchDBuf;
else
lpchDPos = lpchDBuf + strlen(lpchDBuf);
}
}
#endif