main defs
  1#include <stdio.h>
  2#include <signal.h>
  3
  4#define pwb
  5
  6#define SHELLCOM "/bin/sh"
  7#define TIMETYPE long int
  8
  9#ifdef gcos
 10#undef TIMETYPE
 11#define TIMETYPE int
 12#endif
 13
 14/* define FSTATIC to be static on systems with C compilers
 15   supporting file-static; otherwise define it to be null
 16*/
 17#define FSTATIC static
 18
 19#define HASHSIZE 255
 20#define NLEFTS 40
 21#define NCHARS 500
 22#define NINTS  250
 23#define YYLMAX 400
 24
 25#define ALLDEPS  1
 26#define SOMEDEPS 2
 27
 28
 29extern int sigivalue;
 30extern int sigqvalue;
 31extern int dbgflag;
 32extern int prtrflag;
 33extern int silflag;
 34extern int noexflag;
 35extern int noruleflag;
 36extern int touchflag;
 37extern int questflag;
 38extern int ndocoms;
 39extern int ignerr;
 40extern int okdel;
 41extern int inarglist;
 42extern char *prompt;
 43
 44
 45
 46struct nameblock
 47	{
 48	struct nameblock *nextp;
 49	char *namep;
 50	struct lineblock *linep;
 51	int done;
 52	int septype;
 53	TIMETYPE modtime;
 54	};
 55
 56extern struct nameblock *mainname ;
 57extern struct nameblock *firstname;
 58
 59struct lineblock
 60	{
 61	struct lineblock *nextp;
 62	struct depblock *depp;
 63	struct shblock *shp;
 64	};
 65extern struct lineblock *sufflist;
 66
 67struct depblock
 68	{
 69	struct depblock *nextp;
 70	struct nameblock *depname;
 71	};
 72
 73struct shblock
 74	{
 75	struct shblock *nextp;
 76	char *shbp;
 77	};
 78
 79struct varblock
 80	{
 81	struct varblock *nextp;
 82	char *varname;
 83	char *varval;
 84	int noreset:1;
 85	int used:1;
 86	};
 87extern struct varblock *firstvar;
 88
 89struct pattern
 90	{
 91	struct pattern *nextp;
 92	char *patval;
 93	};
 94extern struct pattern *firstpat;
 95
 96struct	opendir
 97	{
 98	struct opendir *nextp;
 99	FILE * dirfc;
100	char *dirn;
101	};
102extern struct opendir *firstod;
103
104
105struct chain
106	{
107	struct chain *nextp;
108	char *datap;
109	};
110
111extern void  *intalloc(int);
112extern char  *copys(char *);
113extern char  *concat(char *, char *, char *);
114extern TIMETYPE exists(char *);
115extern TIMETYPE prestime(void);
116extern struct nameblock *srchname(char *);
117extern struct nameblock *makename(char *);
118extern struct varblock  *varptr(char *);
119extern struct depblock  *srchdir(char *, int, struct depblock *);
120extern void   disint(void);
121extern void   intrupt(int);
122extern void   enbint(void (*)(int));
123extern char  *logdir(void);
124extern void   pexinit(void);
125extern void   pexec(char *, char **);