1
0
Files
2022-09-29 17:59:04 +03:00

211 lines
5.6 KiB
C

/*
* |-----------------------------------------------------------|
* | Copyright (c) 1991, 1990 MIPS Computer Systems, Inc. |
* | All Rights Reserved |
* |-----------------------------------------------------------|
* | Restricted Rights Legend |
* | Use, duplication, or disclosure by the Government is |
* | subject to restrictions as set forth in |
* | subparagraph (c)(1)(ii) of the Rights in Technical |
* | Data and Computer Software Clause of DFARS 252.227-7013. |
* | MIPS Computer Systems, Inc. |
* | 950 DeGuigne Avenue |
* | Sunnyvale, California 94088-3650, USA |
* |-----------------------------------------------------------|
*/
/* $Header: /proj/irix6.5.7m/isms/eoe/cmd/lp_svr4/include/RCS/debug.h,v 1.1 1992/12/14 13:22:07 suresh Exp $ */
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ifndef DEBUG_H
#define DEBUG_H
/*==================================================================*/
/*
**
*/
#ifdef DEBUG
#include <stdio.h>
#define _MAX_NEST_COUNT 256
extern int _nestCount;
extern char *_FnNames [];
extern char *_FnNamep;
extern char *_Unknownp;
extern char *_Nullp;
extern FILE *_Debugp;
#if __STDC__ == 1
#define DEFINE_FNNAME(fnName) \
static char FnName [] = #fnName;
#else
#define DEFINE_FNNAME(fnName) \
static char FnName [] = "fnName";
#endif
#define OPEN_DEBUG_FILE(path) \
{\
if (_Debugp) \
_Debugp = freopen (path, "w+", _Debugp); \
else \
_Debugp = fopen (path, "w+"); \
}
#define _OPEN_DEBUG_FILE \
{ \
char path [32]; \
if (!_Debugp) { \
(void) sprintf (path, "/tmp/%d.debug", getpid ()); \
_Debugp = fopen (path, "w+"); \
} \
}
#define DEBUGs(s1) \
_OPEN_DEBUG_FILE \
(void) fprintf (_Debugp, "%s\n", \
((char *) s1 == NULL ? _Nullp : (char *) s1));\
(void) fflush (stderr);
#define DEBUGss(s1, s2) \
_OPEN_DEBUG_FILE \
(void) fprintf (_Debugp, "%s\t= %s\n", \
((char *) s1 == NULL ? _Nullp : (char *) s1), \
((char *) s2 == NULL ? _Nullp : (char *) s2));\
(void) fflush (_Debugp);
#define DEBUGsd(s1, i1) \
_OPEN_DEBUG_FILE \
(void) fprintf (_Debugp, "%s\t= %d\n", \
((char *) s1 == NULL ? _Nullp : (char *) s1), \
(int) i1); \
(void) fflush (_Debugp);
#define DEBUGssx(s1, s2, i1) \
_OPEN_DEBUG_FILE \
(void) fprintf (_Debugp, "%s/%s\t= 0x%x\n", \
((char *) s1 == NULL ? _Nullp : (char *) s1), \
((char *) s2 == NULL ? _Nullp : (char *) s2), \
(int) i1); \
(void) fflush (_Debugp);
#define DEBUGssd(s1, s2, i1) \
_OPEN_DEBUG_FILE \
(void) fprintf (_Debugp, "%s/%s\t= %d\n", \
((char *) s1 == NULL ? _Nullp : (char *) s1), \
((char *) s2 == NULL ? _Nullp : (char *) s2), \
(int) i1); \
(void) fflush (_Debugp);
#define DEBUGsss(s1, s2, s3) \
_OPEN_DEBUG_FILE \
(void) fprintf (_Debugp, "%s/%s\t= %s\n", \
((char *) s1 == NULL ? _Nullp : (char *) s1), \
((char *) s2 == NULL ? _Nullp : (char *) s2), \
((char *) s3 == NULL ? _Nullp : (char *) s3));\
(void) fflush (_Debugp);
#define DUMP_BYTES(p, length) \
{ \
unsigned int i, c; \
unsigned char *cp; \
_OPEN_DEBUG_FILE \
for (i=0, cp=(unsigned char *)(p); i < length; i++, cp++) { \
c = (unsigned int)*cp; \
(void) fprintf (_Debugp, "[%02d] 0x%02x ", i, c); \
if (c & 0x80) (void) fprintf (_Debugp, " "); \
else { \
c &= 0x7f; \
if (c >= 0 && c <= 0x1f) \
(void) fprintf(_Debugp,"^%c ", c+0x40); \
else if (c == 0x20) (void) fprintf(_Debugp, "SP ");\
else if (c == 0x7f) (void) fprintf(_Debugp, "DE ");\
} \
if (((i+1)%5) == 0) \
(void) fprintf (_Debugp, "\n"); \
} \
(void) fprintf (_Debugp, "\n"); \
(void) fflush (_Debugp); \
}
#define TRACEP(label) \
_OPEN_DEBUG_FILE \
(void) fprintf (_Debugp, "%s/%s\n", FnName, \
((char *) label == NULL ? "position" : (char *) label));\
(void) fflush (_Debugp);
#if (defined(__STDC__) || (__SVR4__STDC))
#define TRACE(variable) \
DEBUGssx(FnName, #variable, variable)
#define TRACEd(variable) \
DEBUGssd(FnName, #variable, variable)
#define TRACEs(variable) \
DEBUGsss(FnName, #variable, variable)
#define TRACEb(variable, length) \
DEBUGssx(FnName, #variable, variable); \
DUMP_BYTES(variable, length)
#else
#define TRACE(variable) \
DEBUGssx(FnName, "variable", variable)
#define TRACEd(variable) \
DEBUGssd(FnName, "variable", variable)
#define TRACEs(variable) \
DEBUGsss(FnName, "variable", variable)
#define TRACEb(variable, length) \
DEBUGssx(FnName, "variable", variable); \
DUMP_BYTES(variable, length)
#endif
/*
#define ENTRYP(fnNamep) \
if (_nestCount == _MAX_NEST_COUNT) \
_FnNamep = fnNamep; \
else \
_FnNames [_nestCount++] = _FnNamep = fnNamep; \
TRACEP("entry-point")
#define EXITP \
TRACEP("exit-point") \
if (_nestCount == _MAX_NEST_COUNT || _nestCount == 0) \
_FnNamep = _Unknownp; \
else \
_FnNamep = _FnNames [--_nestCount];
*/
#define ENTRYP \
TRACEP ("**ENTRY-POINT**")
#define EXITP \
TRACEP ("**EXIT-POINT**")
#else
#define DEFINE_FNNAME(fnName)
#define OPEN_DEBUG_FILE(path)
#define DEBUGs(s1)
#define DEBUGss(s1, s2)
#define DEBUGsd(s1, i1)
#define DEBUGssx(s1, s2, i1)
#define DEBUGssd(s1, s2, i1)
#define DEBUGsss(s1, s2, s3)
#define DUMP_BYTES(p, length)
#define TRACEP(label)
#define TRACE(variable)
#define TRACEd(variable)
#define TRACEs(variable)
#define TRACEb(variable, length)
#define ENTRYP
#define EXITP
#endif
/*==================================================================*/
#endif