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

📄 rc.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
/* * Plan9 is defined for plan 9 * V9 is defined for 9th edition * Sun is defined for sun-os * Please don't litter the code with ifdefs.  The three below (and one in * getflags) should be enough. */#define	Plan9#ifdef	Plan9#include <u.h>#include <libc.h>#define	NSIG	32#define	SIGINT	2#define	SIGQUIT	3#endif#ifdef	V9#include <signal.h>#include <libc.h>#endif#ifdef Sun#include <signal.h>#endif#define	YYMAXDEPTH	500#ifndef PAREN#include "x.tab.h"#endiftypedef struct tree tree;typedef struct word word;typedef struct io io;typedef union code code;typedef struct var var;typedef struct list list;typedef struct redir redir;typedef struct thread thread;typedef struct builtin builtin;#pragma incomplete word#pragma incomplete iostruct tree{	int type;	int rtype, fd0, fd1;		/* details of REDIR PIPE DUP tokens */	char *str;	int quoted;	int iskw;	tree *child[3];	tree *next;};tree *newtree(void);tree *token(char*, int), *klook(char*), *tree1(int, tree*);tree *tree2(int, tree*, tree*), *tree3(int, tree*, tree*, tree*);tree *mung1(tree*, tree*), *mung2(tree*, tree*, tree*);tree *mung3(tree*, tree*, tree*, tree*), *epimung(tree*, tree*);tree *simplemung(tree*), *heredoc(tree*);void freetree(tree*);tree *cmdtree;/* * The first word of any code vector is a reference count. * Always create a new reference to a code vector by calling codecopy(.). * Always call codefree(.) when deleting a reference. */union code{	void (*f)(void);	int i;	char *s;};char *promptstr;int doprompt;#define	NTOK	8192char tok[NTOK];#define	APPEND	1#define	WRITE	2#define	READ	3#define	HERE	4#define	DUPFD	5#define	CLOSE	6#define RDWR	7struct var{	char *name;		/* ascii name */	word *val;	/* value */	int changed;	code *fn;		/* pointer to function's code vector */	int fnchanged;	int pc;			/* pc of start of function */	var *next;	/* next on hash or local list */};var *vlook(char*), *gvlook(char*), *newvar(char*, var*);#define	NVAR	521var *gvar[NVAR];				/* hash for globals */#define	new(type)	((type *)emalloc(sizeof(type)))char *emalloc(long);void *Malloc(ulong);void efree(char*);#define	NOFILE	128		/* should come from <param.h> */struct here{	tree *tag;	char *name;	struct here *next;};int mypid;/* * Glob character escape in strings: *	In a string, GLOB must be followed by *?[ or GLOB. *	GLOB* matches any string *	GLOB? matches any single character *	GLOB[...] matches anything in the brackets *	GLOBGLOB matches GLOB */#define	GLOB	((char)0x01)/* * onebyte(c), twobyte(c), threebyte(c) * Is c the first character of a one- two- or three-byte utf sequence? */#define	onebyte(c)	((c&0x80)==0x00)#define	twobyte(c)	((c&0xe0)==0xc0)#define	threebyte(c)	((c&0xf0)==0xe0)char **argp;char **args;int nerror;		/* number of errors encountered during compilation */int doprompt;		/* is it time for a prompt? *//* * Which fds are the reading/writing end of a pipe? * Unfortunately, this can vary from system to system. * 9th edition Unix doesn't care, the following defines * work on plan 9. */#define	PRD	0#define	PWR	1char Rcmain[], Fdprefix[];#define	register/* * How many dot commands have we executed? * Used to ensure that -v flag doesn't print rcmain. */int ndot;char *getstatus(void);int lastc;int lastword;

⌨️ 快捷键说明

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