add mkfile to each directory for plan9.

common:
add getopt.c to common.
insert #include <sys/types.h> before #include <fcntl.h> for off_t in bbox.c.
comment out strtok(), ftell(), sqrt() atan2() defs in ext.h.
insert #include <sys/types.h> before #include <fcntl.h> for off_t in misc.c.
comment out RUNELIB on #endif line in rune.c
add defined(plan9) in tempnam.c.
change path.h for plan9!

cropmarks:
add cropmarks.rc to cropmarks.

download:
move #include <sys/types.h> before #include <fcntl.h> for off_t in download.c.

dpost:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in dpost.c.
added 
	#ifdef plan9
	#define	isascii(c)	((unsigned char)(c)<=0177)
	#endif
after #include <ctype.h> in dpost.c.

grabit:
add grabit.rc to grabit.

hardcopy:
add hardcopy.rc to hardcopy.

postbgi:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in postbgi.c.
added 
	#ifdef plan9
	#define	isascii(c)	((unsigned char)(c)<=0177)
	#endif
after #include <ctype.h> in postbgi.c.

postdaisy:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in postdaisy.c.
added 
	#ifdef plan9
	#define	isascii(c)	((unsigned char)(c)<=0177)
	#endif
after #include <ctype.h> in postdaisy.c.

postdmd:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in postdmd.c.
added 
	#ifdef plan9
	#define	isascii(c)	((unsigned char)(c)<=0177)
	#endif
after #include <ctype.h> in postdmd.c.

postgif:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in postgif.c.
added 
	#ifdef plan9
	#define	isascii(c)	((unsigned char)(c)<=0177)
	#endif
after #include <ctype.h> in postgif.c.

download:
added #include <string.h> in download.c.

dpost:
added #include <string.h> in draw.c.

picpack:
added #include <string.h> in picpack.c.

postmd:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in postmd.c.
added 
	#ifdef plan9
	#define	isascii(c)	((unsigned char)(c)<=0177)
	#endif
after #include <ctype.h> in postmd.c.
added #include <string.h> in picpack.c.

postprint:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in postprint.c.
added 
	#ifdef plan9
	#define	isascii(c)	((unsigned char)(c)<=0177)
	#endif
after #include <ctype.h> in postprint.c.

postreverse:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in postreverse.c.

posttek:
insert #include <sys/types.h> before #include <fcntl.h> for off_t in posttek.c.

