⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defs.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
/* defs 4.2 85/10/28 */#define _POSIX_SOURCE#define _RESEARCH_SOURCE#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <unistd.h>#include <signal.h>#include <time.h>#include <dirent.h>#include <limits.h>#include <stdio.h>#include <ctype.h>#ifndef SHELLCOM#define SHELLCOM "/bin/sh"#endiftypedef char flag;	/* represent a few bit flag */#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	20000#define OUTMAX	20000#define QBUFMAX	20000#define MAXDIR	10#define MAXPROC	100#define MAXINCLUDE	17#define PROCLIMIT	3#define ALLDEPS	1#define SOMEDEPS	2#define META	01#define TERMINAL	02extern char funny[128];#define ALLOC(x) (struct x *) ckalloc(sizeof(struct x))#define CHNULL	(char *) NULLextern 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;	time_t 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;	time_t 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[ ];extern void	intrupt(int);extern void	enbint(void (*)(int));extern int	doname(nameblkp, int, time_t *, int);extern int	docom(struct shblock *, int, int);extern int	dosys(char *, int, int, char *);extern int	waitstack(int);extern void	touch(int, char*);extern time_t	exists(char *);extern time_t	prestime(void);extern depblkp	srchdir(char*, int, depblkp);extern time_t	lookarch(char *);extern void	dirsrch(char *);extern void	baddirs(void);extern nameblkp	srchname(char *);extern nameblkp	makename(char *);extern int	hasparen(char *);extern void	newhash(int);extern nameblkp	chkname(char *);extern char	*copys(char *);extern char	*concat(char *, char *, char *);extern int	suffix(char *, char *, char *);extern int	*ckalloc(int);extern char	*subst(char *, char *);extern void	setvar(char *, char *, int);extern void	set3var(char *, char *);extern int	eqsign(char *);extern struct varblock *varptr(char *);extern int	dynmacro(char *);extern void	fatal1(char *, char *);extern void	fatal(char *);extern chainp	appendq(chainp, char *);extern char	*mkqlist(chainp, char *);extern wildp	iswild(char *);extern char	*wildmatch(wildp, char *, int);extern char	*wildsub(char *, char *);extern int	parse(char *);extern int	yylex(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -