17dd7cddfSDavid du Colombier void addrule(char*, Word*, char*, Word*, int, int, char*); 27dd7cddfSDavid du Colombier void addrules(Word*, Word*, char*, int, int, char*); 33e12c5d1SDavid du Colombier void addw(Word*, char*); 43e12c5d1SDavid du Colombier int assline(Biobuf *, Bufblock *); 5*7f49a7ffSDavid du Colombier ulong atimeof(int,char*); 67dd7cddfSDavid du Colombier void atouch(char*); 73e12c5d1SDavid du Colombier void bufcpy(Bufblock *, char *, int); 87dd7cddfSDavid du Colombier Envy *buildenv(Job*, int); 97dd7cddfSDavid du Colombier void catchnotes(void); 103e12c5d1SDavid du Colombier char *charin(char *, char *); 117dd7cddfSDavid du Colombier int chgtime(char*); 123e12c5d1SDavid du Colombier void clrmade(Node*); 137dd7cddfSDavid du Colombier char *copyq(char*, Rune, Bufblock*); 143e12c5d1SDavid du Colombier void delete(char*); 153e12c5d1SDavid du Colombier void delword(Word*); 163e12c5d1SDavid du Colombier int dorecipe(Node*); 173e12c5d1SDavid du Colombier void dumpa(char*, Arc*); 183e12c5d1SDavid du Colombier void dumpj(char*, Job*, int); 193e12c5d1SDavid du Colombier void dumpn(char*, Node*); 203e12c5d1SDavid du Colombier void dumpr(char*, Rule*); 213e12c5d1SDavid du Colombier void dumpv(char*); 223e12c5d1SDavid du Colombier void dumpw(char*, Word*); 237dd7cddfSDavid du Colombier int escapetoken(Biobuf*, Bufblock*, int, int); 243e12c5d1SDavid du Colombier void execinit(void); 257dd7cddfSDavid du Colombier int execsh(char*, char*, Bufblock*, Envy*); 263e12c5d1SDavid du Colombier void Exit(void); 277dd7cddfSDavid du Colombier char *expandquote(char*, Rune, Bufblock*); 28219b2ee8SDavid du Colombier void expunge(int, char*); 293e12c5d1SDavid du Colombier void freebuf(Bufblock*); 303e12c5d1SDavid du Colombier void front(char*); 313e12c5d1SDavid du Colombier Node *graph(char*); 323e12c5d1SDavid du Colombier void growbuf(Bufblock *); 333e12c5d1SDavid du Colombier void initenv(void); 343e12c5d1SDavid du Colombier void insert(Bufblock *, int); 353e12c5d1SDavid du Colombier void ipop(void); 363e12c5d1SDavid du Colombier void ipush(void); 373e12c5d1SDavid du Colombier void killchildren(char*); 387dd7cddfSDavid du Colombier void *Malloc(int); 397dd7cddfSDavid du Colombier char *maketmp(void); 403e12c5d1SDavid du Colombier int match(char*, char*, char*); 413e12c5d1SDavid du Colombier void mk(char*); 42dc5a79c1SDavid du Colombier ulong mkmtime(char*, int); 43*7f49a7ffSDavid du Colombier ulong mtime(char*); 443e12c5d1SDavid du Colombier Arc *newarc(Node*, Rule*, char*, Resub*); 453e12c5d1SDavid du Colombier Bufblock *newbuf(void); 467dd7cddfSDavid du Colombier Job *newjob(Rule*, Node*, char*, char**, Word*, Word*, Word*, Word*); 473e12c5d1SDavid du Colombier Word *newword(char*); 487dd7cddfSDavid du Colombier int nextrune(Biobuf*, int); 493e12c5d1SDavid du Colombier int nextslot(void); 503e12c5d1SDavid du Colombier void nproc(void); 513e12c5d1SDavid du Colombier void nrep(void); 523e12c5d1SDavid du Colombier int outofdate(Node*, Arc*, int); 537dd7cddfSDavid du Colombier void parse(char*, int, int); 547dd7cddfSDavid du Colombier int pipecmd(char*, Envy*, int*); 55219b2ee8SDavid du Colombier void prusage(void); 567dd7cddfSDavid du Colombier void rcopy(char**, Resub*, int); 577dd7cddfSDavid du Colombier void readenv(void); 587dd7cddfSDavid du Colombier void *Realloc(void*, int); 593e12c5d1SDavid du Colombier void rinsert(Bufblock *, Rune); 603e12c5d1SDavid du Colombier char *rulecnt(void); 613e12c5d1SDavid du Colombier void run(Job*); 627dd7cddfSDavid du Colombier void setvar(char*, void*); 633e12c5d1SDavid du Colombier char *shname(char*); 643e12c5d1SDavid du Colombier void shprint(char*, Envy*, Bufblock*); 653e12c5d1SDavid du Colombier Word *stow(char*); 669a747e4fSDavid du Colombier void subst(char*, char*, char*, int); 673e12c5d1SDavid du Colombier void symdel(char*, int); 683e12c5d1SDavid du Colombier void syminit(void); 697dd7cddfSDavid du Colombier Symtab *symlook(char*, int, void*); 703e12c5d1SDavid du Colombier void symstat(void); 713e12c5d1SDavid du Colombier void symtraverse(int, void(*)(Symtab*)); 723e12c5d1SDavid du Colombier void timeinit(char*); 73*7f49a7ffSDavid du Colombier ulong timeof(char*, int); 743e12c5d1SDavid du Colombier void touch(char*); 753e12c5d1SDavid du Colombier void update(int, Node*); 763e12c5d1SDavid du Colombier void usage(void); 777dd7cddfSDavid du Colombier Word *varsub(char**); 78219b2ee8SDavid du Colombier int waitfor(char*); 793e12c5d1SDavid du Colombier int waitup(int, int*); 807dd7cddfSDavid du Colombier Word *wdup(Word*); 813e12c5d1SDavid du Colombier int work(Node*, Node*, Arc*); 827dd7cddfSDavid du Colombier char *wtos(Word*, int); 83