2 #define waitfor mkwaitfor
4 void addrule(char*, Word*, char*, Word*, int, int, char*);
5 void addrules(Word*, Word*, char*, int, int, char*);
6 void addw(Word*, char*);
7 void assert(char*, int);
8 int assline(Biobuf *, Bufblock *);
9 long atimeof(int,char*);
11 void bufcpy(Bufblock *, char *, int);
12 Envy *buildenv(Job*, int);
13 void catchnotes(void);
19 void dumpa(char*, Arc*);
20 void dumpj(char*, Job*, int);
21 void dumpn(char*, Node*);
22 void dumpr(char*, Rule*);
24 void dumpw(char*, Word*);
26 int execsh(char*, char*, Bufblock*, Envy*, Shell*, Word*);
28 void expunge(int, char*);
29 void freebuf(Bufblock*);
32 void growbuf(Bufblock *);
35 void insert(Bufblock *, int);
38 void killchildren(char*);
41 int match(char*, char*, char*, Shell*);
42 char *membername(char*, int, char*);
46 Arc *newarc(Node*, Rule*, char*, Resub*);
47 Bufblock *newbuf(void);
48 Job *newjob(Rule*, Node*, char*, char**, Word*, Word*, Word*, Word*);
50 int nextrune(Biobuf*, int);
54 int outofdate(Node*, Arc*, int);
55 void parse(char*, int, int);
56 int pipecmd(char*, Envy*, int*, Shell*, Word*);
60 void rcopy(char**, Resub*, int);
62 void *Realloc(void*, int);
63 void rinsert(Bufblock *, Rune);
66 char *setshell(Word*);
67 void setvar(char*, void*);
68 int shargv(Word*, int, char***);
70 void shprint(char*, Envy*, Bufblock*, Shell*);
72 void subst(char*, char*, char*);
73 void symdel(char*, int);
75 Symtab *symlook(char*, int, void*);
77 void symtraverse(int, void(*)(Symtab*));
79 long timeof(char*, int);
81 void update(int, Node*);
85 int waitup(int, int*);
87 int work(Node*, Node*, Arc*);
88 char *wtos(Word*, int);