/* vixie.h - include file to define general vixie-type things
 * v1.0 vix 21jun86 [broken out of as.h]
 */
/*
There are two macros you can define before including this file which can
change the things defined by this file.
    
DEBUG: if defined, will cause enter / exit messages to be printed by the
ENTER / EXIT / EXITV macros. If not defined, causes ENTER to do nothing, and
EXIT / EXITV to generate 'return' without any messages. If defined, should
be set to the name of the including module.
MAIN: Should be defined for a program containing a main() function which is
linked with other modules which include this file. Value is not important,
only existence / nonexistence matters.
*/
#ifndef	_VIXIE_FLAG
#define	_VIXIE_FLAG
						/*--- debugging stuff ---*/
#define	MAXPROC	256
#ifdef DEBUG
#define	ENTER(proc) do { \
			APC_PROCS[I_PROC] = proc; \
			printf("ENTER(%d:%s.%s)\n", \
				I_PROC, DEBUG, APC_PROCS[I_PROC]); \
			I_PROC++; \
		} while (0)
#define	EXIT(value) do { \
			I_PROC--; \
			printf("EXIT(%d:%s.%s)\n", \
				I_PROC, DEBUG, \
				APC_PROCS[I_PROC]); \
			return value; \
		} while (0)
#define	EXITV do { \
			I_PROC--; \
			printf("EXITV(%d:%s.%s)\n", \
				I_PROC, DEBUG, \
				APC_PROCS[I_PROC]); \
			return; \
		} while (0)
#else
#define	ENTER(proc)
#define	EXIT(value)	return value
#define	EXITV		return
#endif
#ifdef MAIN
int I_PROC = 0;
char *APC_PROCS[MAXPROC];
#else
extern int I_PROC;
extern char *APC_PROCS[MAXPROC];
#endif
#ifndef TRUE
#define	TRUE		1
#define	FALSE		0
#endif
#endif				/* _VIXIE_FLAG */