/*
                       debug.c -- runtime debugging

	  This module provides you with the ability of a runtime debugging
	for any program via a simple debug() function which acts like a
	derivate of printf() with special formatting dependendly of a given
	debuglevel.
          ___  _______
          /__)(_  /_       Genesis     : Sat Oct 12 22:48:22 1991
         / \____)(___      Last Change : Fri Jan 31 17:48:19 1992
        /                  Class       : ANSI C

      Copyright (c) Ralf S. Engelschall, All Rights Reserved.
																		*/

#include <stdio.h>
#include <stdarg.h>
#include "defines.h"

static int wLevelCur = 0;
static FILE *fpHandleCur = 0;


void setdebuglevel(int wLevel)
{
	wLevelCur = wLevel;
	return;
}


void setdebughandle(FILE *fpHandle)
{
	fpHandleCur = fpHandle;
	return;
}

void debug(int wLevel, char *cpFmtstr, ...)
{
#ifndef NODEBUG
	va_list pArg;
	FILE *fpHandle;
	char caTmp[RANGE_8BIT];
	char *cp;
	int i;

	if (wLevelCur >= wLevel) {
		va_start(pArg, cpFmtstr);
		fpHandle = (fpHandleCur) ? fpHandleCur : stdout;
		cp = caTmp;
		cp += sprintf(cp, "[33m[%1d][0m ", wLevel);
		for (i = 0; i < wLevel; i++)
			*cp++ = SP;
		vsprintf(cp, cpFmtstr, pArg);
		fprintf(fpHandle, caTmp);
		fflush(fpHandle);
		va_end(pArg);
	}
#endif
	return;
}

