tr2post and aux/download; download is a shell script in $PLAN9/bin.
diff --git a/src/cmd/postscript/common/common.c b/src/cmd/postscript/common/common.c
index a58167a..afcdb76 100644
--- a/src/cmd/postscript/common/common.c
+++ b/src/cmd/postscript/common/common.c
@@ -209,7 +209,7 @@
 int
 cat(char *filename) {
 	Biobuf *bfile;
-	Biobufhdr *Bfile;
+	Biobuf *Bfile;
 	int n;
 	static char buf[Bsize];
 
diff --git a/src/cmd/postscript/common/common.h b/src/cmd/postscript/common/common.h
index 2432fe1..7b26766 100644
--- a/src/cmd/postscript/common/common.h
+++ b/src/cmd/postscript/common/common.h
@@ -40,6 +40,8 @@
 void startpage(void);
 void endpage(void);
 int cat(char *);
-int Bgetfield(Biobufhdr *, int, void *, int);
+int Bgetfield(Biobuf*, int, void *, int);
 void *galloc(void *, int, char *);
 void pagelist(char *);
+
+int safe_tmpnam(char*);
diff --git a/src/cmd/postscript/common/ext.h b/src/cmd/postscript/common/ext.h
index c0f7c7a..86b98da 100644
--- a/src/cmd/postscript/common/ext.h
+++ b/src/cmd/postscript/common/ext.h
@@ -27,10 +27,9 @@
 extern char	*optarg;		/* for getopt() */
 extern int	optind;
 
-extern void	interrupt();
-extern void	error();
-extern int	cat();
-extern void	concat();
+extern void	interrupt(int);
+extern int	cat(char*);
+extern void	concat(double*);
 
 /* 
  * extern char	*tempnam(char*,char*);
diff --git a/src/cmd/postscript/common/misc.c b/src/cmd/postscript/common/misc.c
index 198a935..e965a6e 100644
--- a/src/cmd/postscript/common/misc.c
+++ b/src/cmd/postscript/common/misc.c
@@ -18,6 +18,10 @@
 int	nolist = 0;			/* number of specified ranges */
 int	olist[50];			/* processing range pairs */
 
+int str_convert(char **str, int err);
+void error(int kind, char *mesg, unsigned int a1, unsigned int a2, unsigned int a3);
+int cat(char *file);
+
 /*****************************************************************************/
 extern	int	str_convert();
 
@@ -44,7 +48,7 @@
 	    stop = str_convert(&str, 9999);
 
 	if ( start > stop )
-	    error(FATAL, "illegal range %d-%d", start, stop);
+	    error(FATAL, "illegal range %d-%d", start, stop, 0);
 
 	olist[nolist++] = start;
 	olist[nolist++] = stop;
diff --git a/src/cmd/postscript/common/mkfile b/src/cmd/postscript/common/mkfile
index 09d4303..121b739 100644
--- a/src/cmd/postscript/common/mkfile
+++ b/src/cmd/postscript/common/mkfile
@@ -2,7 +2,7 @@
 
 <../config
 
-LIB=com.a
+LIB=libcom.a
 OFILES=bbox.$O\
 	glob.$O\
 	misc.$O\
diff --git a/src/cmd/postscript/common/request.c b/src/cmd/postscript/common/request.c
index 7884b23..ba956d5 100644
--- a/src/cmd/postscript/common/request.c
+++ b/src/cmd/postscript/common/request.c
@@ -24,6 +24,9 @@
 int	nextreq = 0;			/* goes in request[nextreq] */
 char	*requestfile = REQUESTFILE;	/* default lookup file */
 
+void dumprequest(char *want, char *file, FILE *fp_out);
+extern void error(int errtype, char *fmt, ...);
+
 /*****************************************************************************/
 
 void
diff --git a/src/cmd/postscript/common/tempnam.c b/src/cmd/postscript/common/tempnam.c
index a759876..b6b5fd1 100644
--- a/src/cmd/postscript/common/tempnam.c
+++ b/src/cmd/postscript/common/tempnam.c
@@ -31,7 +31,7 @@
 	return fname;
 }
 
-extern int mkstemp();
+extern	int	mkstemp(char*);
 
 char*
 safe_tempnam(char *tmpdir, char *prefix)
diff --git a/src/cmd/postscript/download/download.c b/src/cmd/postscript/download/download.c
index 5a6bdf3..bc4c419 100644
--- a/src/cmd/postscript/download/download.c
+++ b/src/cmd/postscript/download/download.c
@@ -58,6 +58,8 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
 
 #include "comments.h"			/* PostScript file structuring comments */
 #include "gen.h"			/* general purpose definitions */
@@ -83,8 +85,22 @@
 FILE	*fp_in;				/* next input file */
 FILE	*fp_temp = NULL;		/* for copying stdin */
 
+void init_signals();
+void options();
+void readmap();
+void readresident();
+void arguments();
+void done();
+void download();
+int lookup(char *font);
+void copyfonts(char *list);
+void copyinput();
+extern int cat(char *file);
+extern void error(int errtype, char *fmt, ...);
+
 /*****************************************************************************/
 
+int
 main(agc, agv)
 
     int		agc;
@@ -118,8 +134,8 @@
 
 /*****************************************************************************/
 
-init_signals()
-
+void
+init_signals(void)
 {
 
 /*
@@ -143,8 +159,8 @@
 
 /*****************************************************************************/
 
-options()
-
+void
+options(void)
 {
 
     int		ch;			/* return value from getopt() */
@@ -214,8 +230,8 @@
 
 /*****************************************************************************/
 
-readmap()
-
+void
+readmap(void)
 {
 
     char	*path;
@@ -277,8 +293,8 @@
 
 /*****************************************************************************/
 
-readresident()
-
+void
+readresident(void)
 {
 
     FILE	*fp;
@@ -316,8 +332,8 @@
 
 /*****************************************************************************/
 
-arguments()
-
+void
+arguments(void)
 {
 
 /*
@@ -352,8 +368,8 @@
 
 /*****************************************************************************/
 
-done()
-
+void
+done(void)
 {
 
 /*
@@ -369,8 +385,8 @@
 
 /*****************************************************************************/
 
-download()
-
+void
+download(void)
 {
 
     int		infontlist = FALSE;
@@ -418,6 +434,7 @@
 
 /*****************************************************************************/
 
+void
 copyfonts(list)
 
     char	*list;
@@ -460,8 +477,8 @@
 
 /*****************************************************************************/
 
-copyinput()
-
+void
+copyinput(void)
 {
 
 /*
@@ -488,6 +505,7 @@
 
 /*****************************************************************************/
 
+int
 lookup(font)
 
     char	*font;
diff --git a/src/cmd/postscript/download/mkfile b/src/cmd/postscript/download/mkfile
index d2321e6..7084537 100644
--- a/src/cmd/postscript/download/mkfile
+++ b/src/cmd/postscript/download/mkfile
@@ -1,7 +1,7 @@
 <$PLAN9/src/mkhdr
 
 <../config
-TARG=psdownload
+TARG=auxdownload
 
 OFILES=download.$O
 
@@ -13,7 +13,7 @@
 	$COMMONDIR/path.h\
 	$COMMONDIR/ext.h\
 
-LIB=$COMMONDIR/com.a
+LIB=$COMMONDIR/libcom.a
 BIN=$POSTBIN
 
 <$PLAN9/src/mkone
diff --git a/src/cmd/postscript/tr2post/Bgetfield.c b/src/cmd/postscript/tr2post/Bgetfield.c
index 974fce6..fc0dfc1 100644
--- a/src/cmd/postscript/tr2post/Bgetfield.c
+++ b/src/cmd/postscript/tr2post/Bgetfield.c
@@ -4,6 +4,9 @@
 #include "../common/common.h"
 #include "tr2post.h"
 
+#undef isspace
+#define isspace risspace
+
 int
 isspace(Rune r)
 {
@@ -11,9 +14,8 @@
 }
 
 int
-Bskipws(Biobufhdr *bp) {
+Bskipws(Biobuf *bp) {
 	int r;
-	char c[UTFmax];
 	int sindex = 0;
 
 	/* skip over initial white space */
@@ -54,7 +56,7 @@
  */
 
 int
-Bgetfield(Biobufhdr *bp, int type, void *thing, int size) {
+Bgetfield(Biobuf *bp, int type, void *thing, int size) {
 	int r;
 	Rune R;
 	char c[UTFmax];
@@ -65,6 +67,8 @@
 	int dig;
 	unsigned int u = 0;
 
+	r = 0;
+
 	/* skip over initial white space */
 	if (Bskipws(bp) < 0)
 		return(-1);
diff --git a/src/cmd/postscript/tr2post/chartab.c b/src/cmd/postscript/tr2post/chartab.c
index 89bf0ff..8b831d3 100644
--- a/src/cmd/postscript/tr2post/chartab.c
+++ b/src/cmd/postscript/tr2post/chartab.c
@@ -120,17 +120,17 @@
 	return(-1);
 }
 
-char postroffdirname[] = LIBDIR "/postscript/troff";		/* "/sys/lib/postscript/troff/"; */
-char troffmetricdirname[] = LIBDIR "/troff/font";	/* "/sys/lib/troff/font/devutf/"; */
+char postroffdirname[] = "#9/postscript/troff";		/* "/sys/lib/postscript/troff/"; */
+char troffmetricdirname[] = "#9/troff/font";	/* "/sys/lib/troff/font/devutf/"; */
 
 int
 readpsfontdesc(char *fontname, int trindex) {
 	static char *filename = 0;
 	Biobuf *bfd;
-	Biobufhdr *Bfd;
-	int warn = 0, errorflg = 0, line =1, rv;
+	Biobuf *Bfd;
+	int errorflg = 0, line =1, rv;
 	int start, end, offset;
-	int startfont, endfont, startchar, endchar, i, pfid;
+	int startfont, endfont, startchar, endchar, pfid;
 	char psfontnam[128];
 	struct troffont *tp;
 /*	struct charent *cp[]; */
@@ -139,7 +139,7 @@
 	filename=galloc(filename, strlen(postroffdirname)+1+strlen(fontname)+1, "readpsfontdesc: cannot allocate memory\n");
 	sprint(filename, "%s/%s", postroffdirname, fontname);
 
-	bfd = Bopen(filename, OREAD);
+	bfd = Bopen(unsharp(filename), OREAD);
 	if (bfd == 0) {
 		error(WARNING, "cannot open file %s\n", filename);
 		return(0);
@@ -212,9 +212,8 @@
 readtroffmetric(char *fontname, int trindex) {
 	static char *filename = 0;
 	Biobuf *bfd;
-	Biobufhdr *Bfd;
-	int warn = 0, errorflg = 0, line =1, rv;
-	struct troffont *tp;
+	Biobuf *Bfd;
+	int errorflg = 0, line =1, rv;
 	struct charent **cp;
 	char stoken[128], *str;
 	int ntoken;
@@ -226,7 +225,7 @@
 	filename=galloc(filename, strlen(troffmetricdirname)+4+strlen(devname)+1+strlen(fontname)+1, "readtroffmetric():filename");
 	sprint(filename, "%s/dev%s/%s", troffmetricdirname, devname, fontname);
 
-	bfd = Bopen(filename, OREAD);
+	bfd = Bopen(unsharp(filename), OREAD);
 	if (bfd == 0) {
 		error(WARNING, "cannot open file %s\n", filename);
 		return(0);
diff --git a/src/cmd/postscript/tr2post/conv.c b/src/cmd/postscript/tr2post/conv.c
index ebc1f43..25575cc 100644
--- a/src/cmd/postscript/tr2post/conv.c
+++ b/src/cmd/postscript/tr2post/conv.c
@@ -5,8 +5,8 @@
 #include "tr2post.h"
 
 void
-conv(Biobufhdr *Bp) {
-	long c, n;
+conv(Biobuf *Bp) {
+	long n;
 	int r;
 	char special[10];
 	int save;
diff --git a/src/cmd/postscript/tr2post/devcntl.c b/src/cmd/postscript/tr2post/devcntl.c
index 2566229..f0a9800 100644
--- a/src/cmd/postscript/tr2post/devcntl.c
+++ b/src/cmd/postscript/tr2post/devcntl.c
@@ -51,10 +51,10 @@
 */
 
 void
-devcntl(Biobufhdr *inp) {
+devcntl(Biobuf *inp) {
 
 	char cmd[50], buf[256], str[MAXTOKENSIZE], *line;
-	int c, n, linelen;
+	int c, n;
 
 /*
  *
diff --git a/src/cmd/postscript/tr2post/draw.c b/src/cmd/postscript/tr2post/draw.c
index 0cb368a..ace749e 100644
--- a/src/cmd/postscript/tr2post/draw.c
+++ b/src/cmd/postscript/tr2post/draw.c
@@ -13,7 +13,7 @@
 }
 
 void
-drawspline(Biobufhdr *Bp, int flag) {	/* flag!=1 connect end points */
+drawspline(Biobuf *Bp, int flag) {	/* flag!=1 connect end points */
 	int x[100], y[100];
 	int i, N;
 /*
@@ -96,7 +96,7 @@
 }
 
 void
-draw(Biobufhdr *Bp) {
+draw(Biobuf *Bp) {
 
 	int r, x1, y1, x2, y2, i;
 	int d1, d2;
@@ -234,7 +234,7 @@
 static void
 parsebuf(char *buf)
 {
-	char	*p;			/* usually the next token */
+	char	*p = (char*)0;			/* usually the next token */
 	char *q;
 	int		gsavelevel = 0;		/* non-zero if we've done a gsave */
 
diff --git a/src/cmd/postscript/tr2post/mkfile b/src/cmd/postscript/tr2post/mkfile
index e1e5aec..4a5f47d 100644
--- a/src/cmd/postscript/tr2post/mkfile
+++ b/src/cmd/postscript/tr2post/mkfile
@@ -28,6 +28,8 @@
 
 BIN=$POSTBIN
 
+LIB=../common/libcom.a
+
 <$PLAN9/src/mkone
 
 CFLAGS=$CFLAGS -c -D'PROGRAMVERSION="0.1"' -D'DOROUND=1' -I$COMMONDIR
diff --git a/src/cmd/postscript/tr2post/pictures.c b/src/cmd/postscript/tr2post/pictures.c
index 8d758cb..1246bcf 100644
--- a/src/cmd/postscript/tr2post/pictures.c
+++ b/src/cmd/postscript/tr2post/pictures.c
@@ -50,8 +50,8 @@
 /* #include "ext.h" */
 
 Biobuf	*bfp_pic = NULL;
-Biobufhdr	*Bfp_pic;
-Biobufhdr	*picopen(char *);
+Biobuf	*Bfp_pic;
+Biobuf	*picopen(char *);
 
 #define MAXGETFIELDS	16
 char *fields[MAXGETFIELDS];
@@ -63,7 +63,7 @@
 /*****************************************************************************/
 
 void
-picture(Biobufhdr *inp, char *buf) {
+picture(Biobuf *inp, char *buf) {
 	int	poffset;		/* page offset */
 	int	indent;		/* indent */
 	int	length;		/* line length  */
@@ -80,7 +80,7 @@
 	double	adjx = 0.5;	/* left-right adjustment */
 	double	adjy = 0.5;	/* top-bottom adjustment */
 	double	rot = 0;	/* rotation in clockwise degrees */
-	Biobufhdr	*fp_in;	/* for *name */
+	Biobuf	*fp_in;	/* for *name */
 	int	i;			/* loop index */
 
 /*
@@ -195,13 +195,13 @@
  * open file *path and return the resulting file pointer to the caller.
  *
  */
-Biobufhdr *
+Biobuf *
 picopen(char *path) {
 /*	char	name[100];	/* pathnames */
 /*	long	pos;			/* current position */
 /*	long	total;			/* and sizes - from *fp_pic */
 	Biobuf *bfp;
-	Biobufhdr	*Bfp;		/* and pointer for the new temp file */
+	Biobuf	*Bfp;		/* and pointer for the new temp file */
 
 
 	if ((bfp = Bopen(path, OREAD)) == 0)
@@ -285,7 +285,7 @@
 /*	*fp_out;	and output file pointers */
 /*	total;		number of bytes to be copied */
 void
-piccopy(Biobufhdr *Bfp_in, Biobufhdr *Bfp_out, long total) {
+piccopy(Biobuf *Bfp_in, Biobuf *Bfp_out, long total) {
 	long i;
 
 	for (i = 0; i < total; i++)
diff --git a/src/cmd/postscript/tr2post/ps_include.c b/src/cmd/postscript/tr2post/ps_include.c
index 27d020a..8ab840f 100644
--- a/src/cmd/postscript/tr2post/ps_include.c
+++ b/src/cmd/postscript/tr2post/ps_include.c
@@ -11,9 +11,8 @@
 typedef struct {long start, end;} Section;
 static char *buf;
 
-static
-copy(Biobufhdr *fin, Biobufhdr *fout, Section *s) {
-	int cond;
+static void
+copy(Biobuf *fin, Biobuf *fout, Section *s) {
 	if (s->end <= s->start)
 		return;
 	Bseek(fin, s->start, 0);
@@ -57,7 +56,7 @@
 /*	rot;			/* rotation - in clockwise degrees */
 
 void
-ps_include(Biobufhdr *fin, Biobufhdr *fout, int page_no, int whiteout,
+ps_include(Biobuf *fin, Biobuf *fout, int page_no, int whiteout,
 	int outline, int scaleboth, double cx, double cy, double sx, double sy,
 	double ax, double ay, double rot) {
 	char		**strp;
@@ -66,7 +65,7 @@
 	int		nglobal = 0;		/* number of global defs so far */
 	int		maxglobal = 0;		/* and the number we've got room for */
 	Section	prolog, page, trailer;	/* prologue, page, and trailer offsets */
-	Section	*global;		/* offsets for all global definitions */
+	Section	*global = 0;		/* offsets for all global definitions */
 	double	llx, lly;		/* lower left and */
 	double	urx, ury;		/* upper right corners - default coords */
 	double	w = whiteout != 0;	/* mostly for the var() macro */
diff --git a/src/cmd/postscript/tr2post/readDESC.c b/src/cmd/postscript/tr2post/readDESC.c
index 4dbc193..600fc17 100644
--- a/src/cmd/postscript/tr2post/readDESC.c
+++ b/src/cmd/postscript/tr2post/readDESC.c
@@ -44,7 +44,7 @@
 	char *descnameformat = "%s/dev%s/DESC";
 	char *descfilename = 0;
 	Biobuf *bfd;
-	Biobufhdr *Bfd;
+	Biobuf *Bfd;
 	int i, state = -1;
 	int fontindex = 0;
 
@@ -52,7 +52,7 @@
 	descfilename = galloc(descfilename, strlen(descnameformat)+strlen(FONTDIR)
 		+strlen(devname), "readdesc");
 	sprint(descfilename, descnameformat, FONTDIR, devname);
-	if ((bfd = Bopen(descfilename, OREAD)) == 0) {
+	if ((bfd = Bopen(unsharp(descfilename), OREAD)) == 0) {
 		error(WARNING, "cannot open file %s\n", descfilename);
 		return(0);
 	}
@@ -136,4 +136,5 @@
 		}
 	}
 	Bterm(Bfd);
+	return 0;
 }
diff --git a/src/cmd/postscript/tr2post/tr2post.c b/src/cmd/postscript/tr2post/tr2post.c
index acfe604..5a22ac7 100644
--- a/src/cmd/postscript/tr2post/tr2post.c
+++ b/src/cmd/postscript/tr2post/tr2post.c
@@ -23,6 +23,10 @@
 Biobuf *Bstdin, *Bstdout, *Bstderr;
 int debug = 0;
 
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 255
+#endif
+
 char tmpfilename[MAXPATHLEN+1];
 char copybuf[BUFSIZ];
 
@@ -41,20 +45,20 @@
 	Bprint(Bstdout, "%s %s\n", PAGES, ATEND);
 	Bprint(Bstdout, "%s", ENDCOMMENTS);
 
-	if (cat(DPOST)) {
+	if (cat(unsharp(DPOST))) {
 		Bprint(Bstderr, "can't read %s\n", DPOST);
 		exits("dpost prologue");
 	}
 
 	if (drawflag) {
-		if (cat(DRAW)) {
+		if (cat(unsharp(DRAW))) {
 			Bprint(Bstderr, "can't read %s\n", DRAW);
 			exits("draw prologue");
 		}
 	}
 
 	if (DOROUND)
-		cat(ROUNDPAGE);
+		cat(unsharp(ROUNDPAGE));
 
 	Bprint(Bstdout, "%s", ENDPROLOG);
 	Bprint(Bstdout, "%s", BEGINSETUP);
@@ -70,19 +74,19 @@
 	if (pointsize != 10) Bprint(Bstdout, "/pointsize %d def\n", pointsize);
 	if (xoffset != .25) Bprint(Bstdout, "/xoffset %g def\n", xoffset);
 	if (yoffset != .25) Bprint(Bstdout, "/yoffset %g def\n", yoffset);
-	cat(ENCODINGDIR"/Latin1.enc");
+	cat(unsharp(ENCODINGDIR"/Latin1.enc"));
 	if (passthrough != 0) Bprint(Bstdout, "%s\n", passthrough);
 
 	Bprint(Bstdout, "setup\n");
 	if (formsperpage > 1) {
-		cat(FORMFILE);
+		cat(unsharp(FORMFILE));
 		Bprint(Bstdout, "%d setupforms \n", formsperpage);
 	}
 /* output Build character info from charlib if necessary. */
 
 	for (i=0; i<build_char_cnt; i++) {
 		sprint(charlibname, "%s/%s", CHARLIB, build_char_list[i]->name);
-		if (cat(charlibname))
+		if (cat(unsharp(charlibname)))
 		Bprint(Bstderr, "cannot open %s\n", charlibname);
 	}
 
@@ -94,10 +98,11 @@
 	remove(tmpfilename);
 }
 
+int
 main(int argc, char *argv[]) {
 	Biobuf btmp;
 	Biobuf *binp;
-	Biobufhdr *Binp;
+	Biobuf *Binp;
 	int i, tot, ifd, fd;
 	char *t;
 
@@ -217,4 +222,5 @@
 	finish();
 		
 	exits("");
+	return 0;
 }
diff --git a/src/cmd/postscript/tr2post/tr2post.h b/src/cmd/postscript/tr2post/tr2post.h
index 68299cc..3f557b9 100644
--- a/src/cmd/postscript/tr2post/tr2post.h
+++ b/src/cmd/postscript/tr2post/tr2post.h
@@ -1,6 +1,6 @@
 #define MAXSPECHARS 	512
 #define MAXTOKENSIZE	128
-#define CHARLIB	FONTDIR "/devutf/charlib"
+#define CHARLIB	"#9/troff/font/devutf/charlib"
 
 /* devname clashes with libc on *BSD */
 #define devname		troff_devname
diff --git a/src/cmd/postscript/tr2post/utils.c b/src/cmd/postscript/tr2post/utils.c
index e9979ff..9b51d03 100644
--- a/src/cmd/postscript/tr2post/utils.c
+++ b/src/cmd/postscript/tr2post/utils.c
@@ -88,12 +88,13 @@
 glyphout(Rune rune, char *stoken, BOOLEAN specialflag) {
 	struct charent **cp;
 	struct troffont *tfp;
-	struct psfent *psfp;
+	struct psfent *psfp = (struct psfent*)0;
 	int i, t;
 	int fontid;	/* this is the troff font table index, not the mounted font table index */
-	int mi, fi, wid;
+	int mi, wid;
 	Rune r;
 
+	mi = 0;
 	settrfont();
 
 	/* check current font for the character, special or not */
@@ -187,8 +188,6 @@
 	if (t == 0x0001) {	/* character is in charlib */
 		endstring();
 		if (pageon()) {
-			struct charent *tcp;
-
 			Bprint(Bstdout, "%d %d m ", hpos, vpos);
 			/* if char is unicode character rather than name, clean up for postscript */
 			wid = chartorune(&r, (*cp)->name);
@@ -250,7 +249,7 @@
 }
 
 void
-graphfunc(Biobufhdr *bp) {
+graphfunc(Biobuf *bp) {
 }
 
 long