diff options
Diffstat (limited to 'release/picobsd/tinyware/msh/sh.h')
-rw-r--r-- | release/picobsd/tinyware/msh/sh.h | 388 |
1 files changed, 0 insertions, 388 deletions
diff --git a/release/picobsd/tinyware/msh/sh.h b/release/picobsd/tinyware/msh/sh.h deleted file mode 100644 index 223761e..0000000 --- a/release/picobsd/tinyware/msh/sh.h +++ /dev/null @@ -1,388 +0,0 @@ -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> - -/* Need a way to have void used for ANSI, nothing for K&R. */ -#ifndef _ANSI -#undef _VOID -#define _VOID -#endif - -/* -------- sh.h -------- */ -/* - * shell - */ - -#define LINELIM 2100 -#define NPUSH 8 /* limit to input nesting */ - -#define NOFILE 20 /* Number of open files */ -#define NUFILE 10 /* Number of user-accessible files */ -#define FDBASE 10 /* First file usable by Shell */ - -/* - * values returned by wait - */ -#define WAITSIG(s) ((s)&0177) -#define WAITVAL(s) (((s)>>8)&0377) -#define WAITCORE(s) (((s)&0200)!=0) - -/* - * library and system defintions - */ -#ifdef __STDC__ -typedef void xint; /* base type of jmp_buf, for not broken compilers */ -#else -typedef char * xint; /* base type of jmp_buf, for broken compilers */ -#endif - -/* - * shell components - */ -/* #include "area.h" */ -/* #include "word.h" */ -/* #include "io.h" */ -/* #include "var.h" */ - -#define QUOTE 0200 - -#define NOBLOCK ((struct op *)NULL) -#define NOWORD ((char *)NULL) -#define NOWORDS ((char **)NULL) -#define NOPIPE ((int *)NULL) - -/* - * Description of a command or an operation on commands. - * Might eventually use a union. - */ -struct op { - int type; /* operation type, see below */ - char **words; /* arguments to a command */ - struct ioword **ioact; /* IO actions (eg, < > >>) */ - struct op *left; - struct op *right; - char *str; /* identifier for case and for */ -}; - -#define TCOM 1 /* command */ -#define TPAREN 2 /* (c-list) */ -#define TPIPE 3 /* a | b */ -#define TLIST 4 /* a [&;] b */ -#define TOR 5 /* || */ -#define TAND 6 /* && */ -#define TFOR 7 -#define TDO 8 -#define TCASE 9 -#define TIF 10 -#define TWHILE 11 -#define TUNTIL 12 -#define TELIF 13 -#define TPAT 14 /* pattern in case */ -#define TBRACE 15 /* {c-list} */ -#define TASYNC 16 /* c & */ - -/* - * actions determining the environment of a process - */ -#define BIT(i) (1<<(i)) -#define FEXEC BIT(0) /* execute without forking */ - -/* - * flags to control evaluation of words - */ -#define DOSUB 1 /* interpret $, `, and quotes */ -#define DOBLANK 2 /* perform blank interpretation */ -#define DOGLOB 4 /* interpret [?* */ -#define DOKEY 8 /* move words with `=' to 2nd arg. list */ -#define DOTRIM 16 /* trim resulting string */ - -#define DOALL (DOSUB|DOBLANK|DOGLOB|DOKEY|DOTRIM) - -Extern char **dolv; -Extern int dolc; -Extern int exstat; -Extern char gflg; -Extern int talking; /* interactive (talking-type wireless) */ -Extern int execflg; -Extern int multiline; /* \n changed to ; */ -Extern struct op *outtree; /* result from parser */ - -Extern xint *failpt; -Extern xint *errpt; - -struct brkcon { - jmp_buf brkpt; - struct brkcon *nextlev; -} ; -Extern struct brkcon *brklist; -Extern int isbreak; - -/* - * redirection - */ -struct ioword { - short io_unit; /* unit affected */ - short io_flag; /* action (below) */ - char *io_name; /* file name */ -}; -#define IOREAD 1 /* < */ -#define IOHERE 2 /* << (here file) */ -#define IOWRITE 4 /* > */ -#define IOCAT 8 /* >> */ -#define IOXHERE 16 /* ${}, ` in << */ -#define IODUP 32 /* >&digit */ -#define IOCLOSE 64 /* >&- */ - -#define IODEFAULT (-1) /* token for default IO unit */ - -Extern struct wdblock *wdlist; -Extern struct wdblock *iolist; - -/* - * parsing & execution environment - */ -extern struct env { - char *linep; - struct io *iobase; - struct io *iop; - xint *errpt; - int iofd; - struct env *oenv; -} e; - -/* - * flags: - * -e: quit on error - * -k: look for name=value everywhere on command line - * -n: no execution - * -t: exit after reading and executing one command - * -v: echo as read - * -x: trace - * -u: unset variables net diagnostic - */ -extern char *flag; - -extern char *null; /* null value for variable */ -extern int intr; /* interrupt pending */ - -Extern char *trap[_NSIG+1]; -Extern char ourtrap[_NSIG+1]; -Extern int trapset; /* trap pending */ - -extern int heedint; /* heed interrupt signals */ - -Extern int yynerrs; /* yacc */ - -Extern char line[LINELIM]; -extern char *elinep; - -/* - * other functions - */ -#ifdef __STDC__ -int (*inbuilt(char *s ))(void); -#else -int (*inbuilt())(); -#endif - -#ifdef __FreeBSD__ -#define _PROTOTYPE(x,y) x ## y -#endif - -_PROTOTYPE(char *rexecve , (char *c , char **v , char **envp )); -_PROTOTYPE(char *space , (int n )); -_PROTOTYPE(char *strsave , (char *s , int a )); -_PROTOTYPE(char *evalstr , (char *cp , int f )); -_PROTOTYPE(char *putn , (int n )); -_PROTOTYPE(char *itoa , (unsigned u , int n )); -_PROTOTYPE(char *unquote , (char *as )); -_PROTOTYPE(struct var *lookup , (char *n )); -_PROTOTYPE(int rlookup , (char *n )); -_PROTOTYPE(struct wdblock *glob , (char *cp , struct wdblock *wb )); -_PROTOTYPE(int subgetc , (int ec , int quoted )); -_PROTOTYPE(char **makenv , (void)); -_PROTOTYPE(char **eval , (char **ap , int f )); -_PROTOTYPE(int setstatus , (int s )); -_PROTOTYPE(int waitfor , (int lastpid , int canintr )); - -_PROTOTYPE(void onintr , (int s )); /* SIGINT handler */ - -_PROTOTYPE(int newenv , (int f )); -_PROTOTYPE(void quitenv , (void)); -_PROTOTYPE(void err , (char *s )); -_PROTOTYPE(int anys , (char *s1 , char *s2 )); -_PROTOTYPE(int any , (int c , char *s )); -_PROTOTYPE(void next , (int f )); -_PROTOTYPE(void setdash , (void)); -_PROTOTYPE(void onecommand , (void)); -_PROTOTYPE(void runtrap , (int i )); -_PROTOTYPE(void xfree , (char *s )); -_PROTOTYPE(int letter , (int c )); -_PROTOTYPE(int digit , (int c )); -_PROTOTYPE(int letnum , (int c )); -_PROTOTYPE(int gmatch , (char *s , char *p )); - -/* - * error handling - */ -_PROTOTYPE(void leave , (void)); /* abort shell (or fail in subshell) */ -_PROTOTYPE(void fail , (void)); /* fail but return to process next command */ -_PROTOTYPE(void warn , (char *s )); -_PROTOTYPE(void sig , (int i )); /* default signal handler */ - -/* -------- var.h -------- */ - -struct var { - char *value; - char *name; - struct var *next; - char status; -}; -#define COPYV 1 /* flag to setval, suggesting copy */ -#define RONLY 01 /* variable is read-only */ -#define EXPORT 02 /* variable is to be exported */ -#define GETCELL 04 /* name & value space was got with getcell */ - -Extern struct var *vlist; /* dictionary */ - -Extern struct var *homedir; /* home directory */ -Extern struct var *prompt; /* main prompt */ -Extern struct var *cprompt; /* continuation prompt */ -Extern struct var *path; /* search path for commands */ -Extern struct var *shell; /* shell to interpret command files */ -Extern struct var *ifs; /* field separators */ - -_PROTOTYPE(int yyparse , (void)); -_PROTOTYPE(struct var *lookup , (char *n )); -_PROTOTYPE(void setval , (struct var *vp , char *val )); -_PROTOTYPE(void nameval , (struct var *vp , char *val , char *name )); -_PROTOTYPE(void export , (struct var *vp )); -_PROTOTYPE(void ronly , (struct var *vp )); -_PROTOTYPE(int isassign , (char *s )); -_PROTOTYPE(int checkname , (char *cp )); -_PROTOTYPE(int assign , (char *s , int cf )); -_PROTOTYPE(void putvlist , (int f , int out )); -_PROTOTYPE(int eqname , (char *n1 , char *n2 )); - -_PROTOTYPE(int execute , (struct op *t , int *pin , int *pout , int act )); - -/* -------- io.h -------- */ -/* io buffer */ -struct iobuf { - unsigned id; /* buffer id */ - char buf[512]; /* buffer */ - char *bufp; /* pointer into buffer */ - char *ebufp; /* pointer to end of buffer */ -}; - -/* possible arguments to an IO function */ -struct ioarg { - char *aword; - char **awordlist; - int afile; /* file descriptor */ - unsigned afid; /* buffer id */ - long afpos; /* file position */ - struct iobuf *afbuf; /* buffer for this file */ -}; -Extern struct ioarg ioargstack[NPUSH]; -#define AFID_NOBUF (~0) -#define AFID_ID 0 - -/* an input generator's state */ -struct io { - int (*iofn)(_VOID); - struct ioarg *argp; - int peekc; - char prev; /* previous character read by readc() */ - char nlcount; /* for `'s */ - char xchar; /* for `'s */ - char task; /* reason for pushed IO */ -}; -Extern struct io iostack[NPUSH]; -#define XOTHER 0 /* none of the below */ -#define XDOLL 1 /* expanding ${} */ -#define XGRAVE 2 /* expanding `'s */ -#define XIO 3 /* file IO */ - -/* in substitution */ -#define INSUB() (e.iop->task == XGRAVE || e.iop->task == XDOLL) - -/* - * input generators for IO structure - */ -_PROTOTYPE(int nlchar , (struct ioarg *ap )); -_PROTOTYPE(int strchar , (struct ioarg *ap )); -_PROTOTYPE(int qstrchar , (struct ioarg *ap )); -_PROTOTYPE(int filechar , (struct ioarg *ap )); -_PROTOTYPE(int herechar , (struct ioarg *ap )); -_PROTOTYPE(int linechar , (struct ioarg *ap )); -_PROTOTYPE(int gravechar , (struct ioarg *ap , struct io *iop )); -_PROTOTYPE(int qgravechar , (struct ioarg *ap , struct io *iop )); -_PROTOTYPE(int dolchar , (struct ioarg *ap )); -_PROTOTYPE(int wdchar , (struct ioarg *ap )); -_PROTOTYPE(void scraphere , (void)); -_PROTOTYPE(void freehere , (int area )); -_PROTOTYPE(void gethere , (void)); -_PROTOTYPE(void markhere , (char *s , struct ioword *iop )); -_PROTOTYPE(int herein , (char *hname , int xdoll )); -_PROTOTYPE(int run , (struct ioarg *argp , int (*f)(_VOID))); - -/* - * IO functions - */ -_PROTOTYPE(int eofc , (void)); -_PROTOTYPE(int getc , (int ec )); -_PROTOTYPE(int readc , (void)); -_PROTOTYPE(void unget , (int c )); -_PROTOTYPE(void ioecho , (int c )); -_PROTOTYPE(void prs , (char *s )); -_PROTOTYPE(void putc , (int c )); -_PROTOTYPE(void prn , (unsigned u )); -_PROTOTYPE(void closef , (int i )); -_PROTOTYPE(void closeall , (void)); - -/* - * IO control - */ -_PROTOTYPE(void pushio , (struct ioarg *argp , int (*fn)(_VOID))); -_PROTOTYPE(int remap , (int fd )); -_PROTOTYPE(int openpipe , (int *pv )); -_PROTOTYPE(void closepipe , (int *pv )); -_PROTOTYPE(struct io *setbase , (struct io *ip )); - -extern struct ioarg temparg; /* temporary for PUSHIO */ -#define PUSHIO(what,arg,gen) ((temparg.what = (arg)),pushio(&temparg,(gen))) -#define RUN(what,arg,gen) ((temparg.what = (arg)), run(&temparg,(gen))) - -/* -------- word.h -------- */ -#ifndef WORD_H -#define WORD_H 1 -struct wdblock { - short w_bsize; - short w_nword; - /* bounds are arbitrary */ - char *w_words[1]; -}; - -_PROTOTYPE(struct wdblock *addword , (char *wd , struct wdblock *wb )); -_PROTOTYPE(struct wdblock *newword , (int nw )); -_PROTOTYPE(char **getwords , (struct wdblock *wb )); -#endif - -/* -------- area.h -------- */ - -/* - * storage allocation - */ -_PROTOTYPE(char *getcell , (unsigned nbytes )); -_PROTOTYPE(void garbage , (void)); -_PROTOTYPE(void setarea , (char *cp , int a )); -_PROTOTYPE(int getarea , (char *cp )); -_PROTOTYPE(void freearea , (int a )); -_PROTOTYPE(void freecell , (char *cp )); - -Extern int areanum; /* current allocation area */ - -#define NEW(type) (type *)getcell(sizeof(type)) -#define DELETE(obj) freecell((char *)obj) |