void addmake(Node*); void addrule(char*, Word*, char*, Word*, int, int, int, char*); void addrules(Word*, Word*, char*, int, int, int, char*); void addw(Word*, char*); void adelete(char*, char*, char*); void assert(char*, int); int assline(Biobuf *, Bufblock *); long atimeof(int, char*, char*); void atouch(char*, char*, char*); void bufcpy(Bufblock *, char *, int); void bulkmtime(char*); void dirtime(char*, char*); char *charin(char *, char *); void clrmade(Node*); void delete(char*); void delword(Word*); char *dnext(void); int dopen(char*); int dorecipe(Node*); void dovars(Job*, int); void dumpa(char*, Arc*); void dumpj(char*, Job*, int); void dumpn(char*, Node*); void dumpr(char*, Rule*); void dumpv(char*); void dumpw(char*, Word*); Word *encodenulls(char*, int); void envinsert(char*, Word*); void execinit(void); int Execl(char*, char*, ...); void Exit(void); Word *expand(char*); void expandvars(char *, Bufblock *); void export(char*, Word *); void exportenv(Envy*, int); void expunge(int, char*); void fdelete(char*, char*, char*); long filetime(char*); void freebuf(Bufblock *); void front(char*); void frule(Word*); long ftimeof(int, char*, char*); void ftouch(char*, char*, char*); void gen(char*); int getfields(char*, char**, int); int getmfields(char*, char**, int); void glob(char*, void(*)(char*)); int gmatch(char*, char*); Node *graph(char*); void growbuf(Bufblock *); void initenv(void); long mtime(char*); long timeof(char*, int); void insert(Bufblock *, int); int internalvar(char*, Word*); void ipop(void); void ipush(void); void killchildren(char*); void lex(Biobuf *, char*); void main(int, char**); char *Malloc(int); void makefile(void); void maketarget(char*); int match(char*, char*, char*); void mk(char*); int mninlist(char*, Word*, char*); Arc *newarc(Node*, Rule*, char*, Resub*); Bufblock *newbuf(void); Job *newjob(Rule*, Node*, char*, Resub*, Word*, Word*, Word*, Word*); Word *newword(char*); int nextslot(void); int notifyf(void*, char*); void nproc(void); void nrep(void); int os_dup2(int, int); int outofdate(Node*, Arc*, int); void parse(char*, int, int, int); void prusage(void); void rcexec(char*, char*, Bufblock*); void rdump(char*, Resub*); char *Realloc(char*, int); void rinsert(Bufblock *, Rune); void rsub(char*, Rule*, Arc*, char*, char*); char *rulecnt(void); void run(Job*); char *setfields(char*); void setvar(char*, char*); char *shname(char*); void shprint(char*, Envy*, Bufblock*); void sigcatch(void); Word *stow(char*); char *strndup(char*, unsigned); void subsub(Word*, char*, Bufblock*); void subst(char*, char*, char*); void symdel(char*, int); void syminit(void); Symtab *symlook(char*, int, char*); void symstat(void); void symtraverse(int, void(*)(Symtab*)); void timeinit(char*); void touch(char*); void update(int, Node*); void usage(void); void vardump(void); void varmatch(char*, Bufblock*); int waitfor(char*); int waitup(int, int*); int work(Node*, Node*, Arc*); void writeout(int, char*, char*); void wtobuf(Word*, Bufblock*); char *wtos(Word*); /* Unfortunately, Unix and Plan 9 have incompatible dup() functions. * Mk should call os_dup2() to get the proper implementation. * If someone forgets, this dup macro causes a compilation failure. * * The os-... files should undef dup to access the system version. */ #define dup(x, y) dup_should_be___os_dup2.(x, y)