home *** CD-ROM | disk | FTP | other *** search
- /* ---------------------------------------------------------------------- */
- /* Copyright (C) 1992 by Natürlich! */
- /* This file is copyrighted! */
- /* Refer to the documentation for details. */
- /* ---------------------------------------------------------------------- */
- #include <stdio.h>
- #include <stddef.h>
- #define lword unsigned long
-
- #define DBG_LONG 0
- #define DBG_INT 1
- #define DBG_CHARP 2
- #define DBG_CHAR 3
-
- #define DEBUGDEBUG 0
- #define MAXRECURS 1000
- #define ESTREAM stdout
- #define dswitch turn_debug_off_while_in_a_debugger
-
- char *__debug_prefix;
-
- static char *cproc[MAXRECURS];
- static int pcproc = 0;
- int dswitch;
- static int fstflag;
-
- #define check() \
- if( pcproc > MAXRECURS || pcproc < 0) \
- nierror("debug: Internal pointer corrupted")
-
- void ENTER( name)
- char *name;
- {
- int i = pcproc;
-
- if( ! fstflag)
- {
- fstflag = 1;
- setvbuf( ESTREAM, NULL, _IONBF, (size_t) 0);
- }
- if( dswitch)
- return;
- check();
- if( ! name)
- nierror("debug: ENTER called w/o name");
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "ENTER with %s. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- name,
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- while( i--)
- {
- putc( ' ', ESTREAM);
- putc( ' ', ESTREAM);
- }
- if( __debug_prefix)
- fprintf( ESTREAM, "<%s> [ENTER: \"%s\"]\n", __debug_prefix, name);
- else
- fprintf( ESTREAM, "[ENTER: \"%s\"]\n", name);
- if( pcproc == MAXRECURS - 1)
- nierror("\tdebug: Recursion depth exceeded");
- else
- cproc[ pcproc++] = name;
- }
-
-
- void SMESS( mess)
- char *mess;
- {
- if( dswitch)
- return;
- check();
- if( ! mess)
- nierror("debug: SMESS called w/o message");
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "SMESS with %s. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- mess,
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- if( ! cproc[ pcproc - 1])
- nierror("debug: MESS Internal stack corrupted");
- if( __debug_prefix)
- fprintf( ESTREAM, "<%s> %s\n", __debug_prefix, mess);
- else
- fprintf( ESTREAM, mess);
- }
-
-
- void MESS( mess)
- char *mess;
- {
- int i = pcproc;
-
- if( dswitch)
- return;
- check();
- if( ! mess)
- nierror("debug: MESS called w/o message");
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "MESS with %s. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- mess,
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- while( i--)
- {
- putc( ' ', ESTREAM);
- putc( ' ', ESTREAM);
- }
- if( ! cproc[ pcproc - 1])
- nierror("debug: MESS Internal stack corrupted");
- if( __debug_prefix)
- fprintf( ESTREAM, "<%s> [<%s>: \"%s\"]\n",
- __debug_prefix, cproc[ pcproc - 1], mess);
- else
- fprintf( ESTREAM, "[<%s>: \"%s\"]\n",
- cproc[ pcproc - 1], mess);
- }
-
-
- void IMESS( form, value, bytes)
- char *form;
- lword value;
- int bytes;
- {
- int i = pcproc;
-
- if( dswitch)
- return;
- check();
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "IMESS with %s. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- form,
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- while( i--)
- {
- putc( ' ', ESTREAM);
- putc( ' ', ESTREAM);
- }
- if( ! cproc[ pcproc - 1])
- nierror("debug: IMESS Internal stack corrupted");
- if( __debug_prefix)
- fprintf( ESTREAM, "<%s> [<%s>: \"",
- __debug_prefix, cproc[ pcproc - 1]);
- else
- fprintf( ESTREAM, "[<%s>: \"", cproc[ pcproc - 1]);
-
- switch( bytes)
- {
- case DBG_CHARP :
- fprintf( ESTREAM, form, (char *) value);
- break;
-
- case DBG_INT :
- fprintf( ESTREAM, form, (int) value);
- break;
-
- case DBG_CHAR :
- fprintf( ESTREAM, form, (char) value);
- break;
-
- default:
- fprintf( ESTREAM, form, value);
- }
- fprintf( ESTREAM, "\"]\n");
- }
-
- #if EXPERIMENTAL
- void VMESS( form, ...)
- char *form;
- {
- va_list p;
- int i = pcproc;
-
- if( dswitch)
- return;
- check();
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "VMESS ... pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- while( i--)
- {
- putc( ' ', ESTREAM);
- putc( ' ', ESTREAM);
- }
- if( ! cproc[ pcproc - 1])
- nierror("debug: VMESS Internal stack corrupted");
- va_start( p, form);
- if( __debug_prefix)
- fprintf( ESTREAM, "<%s> [<%s>: \"",
- __debug_prefix, cproc[ pcproc - 1]);
- else
- fprintf( ESTREAM, "[<%s>: \"", cproc[ pcproc - 1]);
- vfprintf( ESTREAM, form, p);
- va_end( p);
- fprintf( ESTREAM, "]\n");
- }
- #endif
-
- void LEAVE()
- {
- int i;
-
- if( dswitch)
- return;
- if( (i = pcproc) <= 0)
- nierror("LEAVE counter was 0 or negative");
- check();
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "LEAVE. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- while( --i)
- {
- putc( ' ', ESTREAM);
- putc( ' ', ESTREAM);
- }
- if( ! cproc[ pcproc - 1])
- nierror("debug: LEAVE Internal stack corrupted");
- if( __debug_prefix)
- fprintf( ESTREAM, "<%s> [LEAVE: \"%s\"]\n",
- __debug_prefix, cproc[ --pcproc]);
- else
- fprintf( ESTREAM, "[LEAVE: \"%s\"]\n", cproc[ --pcproc]);
- }
-
- void ALEAVE()
- {
- int i;
-
- if( dswitch)
- return;
- if( (i = pcproc) <= 0)
- nierror("LEAVE counter was 0 or negative");
- check();
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "ALEAVE. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- while( --i)
- {
- putc( ' ', ESTREAM);
- putc( ' ', ESTREAM);
- }
- if( ! cproc[ pcproc - 1])
- nierror("debug: ALEAVE Internal stack corrupted");
- if( __debug_prefix)
- fprintf( ESTREAM, "<%s> [DONE with: \"%s\"]\n",
- __debug_prefix, cproc[ --pcproc]);
- else
- fprintf( ESTREAM, "[DONE with: \"%s\"]\n", cproc[ --pcproc]);
- }
-
- void SETBACK( i)
- {
- if( dswitch)
- return;
- check();
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "SETBACK. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- if( i > pcproc || ! i)
- fprintf( ESTREAM, "debug: SETBACKing now would be an ERROR!!\n");
- else
- pcproc = i;
- }
-
- void SAVESTATE( p)
- int *p;
- {
- check();
- # if DEBUGDEBUG
- fprintf( ESTREAM,
- "SAVESTATE. pcproc = %d cproc[ pcproc -1 ]=\"%s\"\n",
- pcproc,
- pcproc || cproc[ pcproc - 1] ? cproc[ pcproc - 1] : "(nil)");
- # endif
- *p = pcproc;
- }
-
-