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
