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*);
44
unsigned long mkmtime(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);