|
|
researchv9-SUN3(old)
/* defs 4.2 85/10/28 */
#include <stdio.h>
#include <sys/param.h>
#include <ctype.h>
#ifdef VERSION8
# include <ndir.h>
#else
# include <sys/dir.h>
#endif
#define SHELLCOM "/bin/sh"
typedef char flag; /* represent a few bit flag */
typedef long int TIMETYPE;
#ifdef unix
/* to install metering, add a statement like */
#define METERFILE "/usr/sif/make/Meter"
/* to turn metering on, set external variable meteron to 1 */
#endif
/* define FSTATIC to be static on systems with C compilers
supporting file-static; otherwise define it to be null
*/
#define FSTATIC static
#define NO 0
#define YES 1
#define equal(a,b) (! strcmp(a,b))
#define HASHSIZE 1021
#define NLEFTS 512
#define NCHARS 500
#define NINTS 250
#define INMAX 5000
#define OUTMAX 5000
#define QBUFMAX 5000
#define MAXDIR 10
#define MAXPROC 100
#define MAXINCLUDE 17
#define PROCLIMIT 3
#define ALLDEPS 1
#define SOMEDEPS 2
#define META 01
#define TERMINAL 02
extern char funny[128];
#define ALLOC(x) (struct x *) ckalloc(sizeof(struct x))
#define CHNULL (char *) NULL
extern int sigivalue;
extern int sigqvalue;
extern int dbgflag;
extern int prtrflag;
extern int silflag;
extern int noexflag;
extern int keepgoing;
extern int noruleflag;
extern int touchflag;
extern int questflag;
extern int oldflag;
extern int ndocoms;
extern int ignerr;
extern int okdel;
extern int forceshell;
extern int inarglist;
extern char **envpp; /* points to slot in environment vector */
extern char *prompt;
extern int nopdir;
typedef struct nameblock *nameblkp;
typedef struct depblock *depblkp;
typedef struct lineblock *lineblkp;
typedef struct chain *chainp;
struct nameblock
{
nameblkp nxtnameblock;
char *namep;
lineblkp linep;
flag done;
flag septype;
flag isarch;
flag isdir;
TIMETYPE modtime;
};
extern nameblkp mainname;
extern nameblkp firstname;
extern nameblkp *hashtab;
extern int nhashed;
extern int hashsize;
extern int hashthresh;
struct lineblock
{
lineblkp nxtlineblock;
struct depblock *depp;
struct shblock *shp;
};
extern lineblkp sufflist;
struct depblock
{
depblkp nxtdepblock;
nameblkp depname;
char nowait;
} ;
struct shblock
{
struct shblock *nxtshblock;
char *shbp;
};
struct varblock
{
struct varblock *nxtvarblock;
char *varname;
char *varval;
char **export;
flag noreset;
flag used;
};
extern struct varblock *firstvar;
struct pattern
{
struct pattern *nxtpattern;
char *patval;
};
extern struct pattern *firstpat;
struct dirhd
{
struct dirhd *nxtdirhd;
TIMETYPE dirtime;
int dirok;
DIR * dirfc;
char *dirn;
};
extern struct dirhd *firstod;
struct chain
{
chainp nextp;
char *datap;
};
struct wild
{
struct wild *next;
lineblkp linep;
char *left;
char *right;
int llen;
int rlen;
int totlen;
};
typedef struct wild *wildp;
extern wildp firstwild;
extern wildp lastwild;
/* date for processes */
extern int proclimit; /* maximum spawned processes allowed alive at one time */
extern int proclive; /* number of spawned processes awaited */
extern int nproc; /* next slot in process stack to use */
extern struct process
{
int pid;
flag nohalt;
flag nowait;
flag done;
} procstack[ ];
char *copys(), *concat(), *subst();
int *ckalloc();
nameblkp srchname(), makename();
TIMETYPE exists();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.