void Abort(void);void Closedir(int);int Creat(char*);int Dup(int, int);int Dup1(int);int Eintr(void);int Executable(char*);void Execute(word*, word*);void Exit(char*);int ForkExecute(char*, char**, int, int, int);int Globsize(char*);int Isatty(int);void Memcpy(void*, void*, long);void Noerror(void);int Opendir(char*);long Read(int, void*, long);int Readdir(int, void*, int);long Seek(int, long, long);void Trapinit(void);void Unlink(char*);void Updenv(void);void Vinit(void);int Waitfor(int, int);long Write(int, void*, long);void addwaitpid(int);int advance(void);int back(int);void cleanhere(char*);void codefree(code*);int compile(tree*);char * list2str(word*);int count(word*);void deglob(char*);void delwaitpid(int);void dotrap(void);void freenodes(void);void freewords(word*);void globlist(void);int havewaitpid(int);int idchr(int);void inttoascii(char*, long);void kinit(void);int mapfd(int);int match(char*, char*, int);int matchfn(char*, char*);char** mkargv(word*);void clearwaitpids(void);void panic(char*, int);void pathinit(void);void poplist(void);void popword(void);void pprompt(void);void pushlist(void);void pushredir(int, int, int);void pushword(char*);void readhere(void);word* searchpath(char*);void setstatus(char*);void setvar(char*, word*);void skipnl(void);void start(code*, int, var*);int truestatus(void);void usage(char*);int wordchr(int);void yyerror(char*);int yylex(void);int yyparse(void);void startargv(code*, int, var*, list*);tree* mkgang(io *, tree *);
void Abort(void);
void Closedir(int);
int Creat(char*);
int Dup(int, int);
int Dup1(int);
int Eintr(void);
int Executable(char*);
void Execute(word*, word*);
void Exit(char*);
int ForkExecute(char*, char**, int, int, int);
int Globsize(char*);
int Isatty(int);
void Memcpy(void*, void*, long);
void Noerror(void);
int Opendir(char*);
long Read(int, void*, long);
int Readdir(int, void*, int);
long Seek(int, long, long);
void Trapinit(void);
void Unlink(char*);
void Updenv(void);
void Vinit(void);
int Waitfor(int, int);
long Write(int, void*, long);
void addwaitpid(int);
int advance(void);
int back(int);
void cleanhere(char*);
void codefree(code*);
int compile(tree*);
char * list2str(word*);
int count(word*);
void deglob(char*);
void delwaitpid(int);
void dotrap(void);
void freenodes(void);
void freewords(word*);
void globlist(void);
int havewaitpid(int);
int idchr(int);
void inttoascii(char*, long);
void kinit(void);
int mapfd(int);
int match(char*, char*, int);
int matchfn(char*, char*);
char** mkargv(word*);
void clearwaitpids(void);
void panic(char*, int);
void pathinit(void);
void poplist(void);
void popword(void);
void pprompt(void);
void pushlist(void);
void pushredir(int, int, int);
void pushword(char*);
void readhere(void);
word* searchpath(char*);
void setstatus(char*);
void setvar(char*, word*);
void skipnl(void);
void start(code*, int, var*);
int truestatus(void);
void usage(char*);
int wordchr(int);
void yyerror(char*);
int yylex(void);
int yyparse(void);
void startargv(code*, int, var*, list*);
tree* mkgang(io *, tree *);