/* #define	VAXVMS	1 */		/* uncomment for VAX/VMS */
#define	MSDOS	1			/* uncomment for MSDOS */

#ifdef VAXVMS
#define ESCCHAR	`\\`		/* ok to use backslash on VMS */
#endif

#ifdef MSDOS
#define	ESCCHAR	'`'		/* since pathname char is backslash (yech) */
#endif

#define	MACCHAR '#'		/* macro-definition char */
#define	COMCHAR	'!'		/* comment char */
#define	DEFMAC	"="		/* macro-definition token */
#define	DEPEND	":"		/* dependency-definition token */

#define	DEBUG	if(0)
#define	STRSIZ	512
#define	MAXMODS	50

/* file attributes */
#define	REBUILT	0x01		/* file has been reconstructed */
#define	ROOTP	0x02		/* file was named on left side of DEPEND */


struct date_str {
	unsigned ds_low, ds_high;
};
typedef struct date_str *DATE;


struct node {
	struct filenode *nfile;	/* this node's file */
	struct node *nnext;	/* the next node */
};
typedef struct node NODE;


struct filenode {
	char *fname;		/* the filename */
	char *fmake;		/* remake string for file */
	DATE fdate;		/* 32 bit last-modification date */
	NODE *fnode;		/* files this file depends on */
	char fflag;		/* magic flag bits */
	struct filenode *fnext;	/* the next file */
};
typedef struct filenode FILENODE;


struct macro {
	char *mname;		/* the macro's name */
	char *mvalue;		/* the macro's definition */
	struct macro *mnext;	/* the next macro */
};
typedef struct macro MACRO;


extern MACRO *mroot;
extern FILENODE *froot;
extern DATE bigbang;		/* Far, far in the past */
extern DATE endoftime;		/* Far, far in the future */
char *gmacro();
FILENODE *filenode(), *gfile();
char *token();
