text: 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	getgid(void);
  int	getmfields(char*, char**, int);
  int	getuid(void);
  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	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*);
  