[comp.sources.unix] v20i033: Troff upgrade for PostScript, DiTroff compatibility, Part01/06

rsalz@uunet.uu.net (Rich Salz) (10/18/89)

Submitted-by: Chris Lewis <eci386!clewis@uunet.uu.net>
Posting-number: Volume 20, Issue 33
Archive-name: psroff/part01

Normal UNIX troff only prints its output on WANG C/A/T Phototypesetters.
This package contains a generic interface between standard troff and
other types of printers.  The package has a driver for PostScript printers
(Eg: Apple Laserwriters), a partial implementation of a driver for HP 
Laserjet family printers, and a Ditroff output option.  

In fact, this package can be used to, in effect, upgrade CAT troff
to be ditroff.  There are limitations, but you get what you pay for.

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 6)."
# Contents:  MANIFEST README confid.ps dt.h font font/C font/CB font/CO
#   font/S2 fonts.dt fonts.lj fonts.ps gfnttab.sh lethead.ps lib.dt
#   lib.lj lib.lk lj.h ps.h psroff.1 psroff.sh t2conf.c tmac.t2
#   upload.sh utils.c
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(3082 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X MANIFEST                   1	This shipping list
X Makefile                   3	Makefile
X README                     1	Read this first
X cat.5                      3	Man page describing CAT Troff output
X chartab.m                  3	troff test job to display whole character set
X confid.ps                  1	sample Postscript inclusion
X defs.h                     2	Main configuration include
X dit2catwid.c               3	converts ditroff width tables to CAT
X dt.c                       5	ditroff driver
X dt.h                       1	ditroff driver include file
X font                       1	font directory
X font/B                     2	font width table
X font/BB                    2	font width table
X font/BI                    2	font width table
X font/BO                    2	font width table
X font/BR                    2	font width table
X font/BX                    2	font width table
X font/C                     1	font width table
X font/CB                    1	font width table
X font/CO                    1	font width table
X font/CX                    2	font width table
X font/H                     2	font width table
X font/HB                    2	font width table
X font/HO                    2	font width table
X font/HX                    2	font width table
X font/I                     2	font width table
X font/PA                    2	font width table
X font/PB                    2	font width table
X font/R                     2	font width table
X font/S                     2	font width table
X font/S2                    1	font width table (special for bracket font)
X fonts.dt                   1	ditroff font definitions
X fonts.lj                   1	lj font definitions
X fonts.lk                   3	lk font definitions
X fonts.ps                   1	postscript font definitions
X genftable.ps               4	Postscript width table generator
X gfnttab.sh                 1	create and install CAT width tables
X lethead.ps                 1	sample letter head postscript include
X lib.dt                     1	ditroff predef
X lib.lj                     1	lj predef
X lib.lk                     1	lk predef
X lib.ps                     4	postscript predef
X lj.c                       4	lj driver
X lj.h                       1	lj driver include
X ljtables.c                 6	lj/lk character set definitions
X ltest.m                    3	test script
X ps.c                       5	postscript driver
X ps.h                       1	postscript include
X psroff.1                   1	man page for psroff
X psroff.sh                  1	psroff shell script 
X psxlate.c                  3	page order flipper
X showfont.sh                3	display postscript font with width info
X t2conf.c                   1	troff2 backend manager
X tmac.t2                    1	sample custom macros
X troff2.c                   4	troff2 mainline
X troff2ps.1                 3	manpage for troff2
X upload.sh                  1	dumb width uploader for postscript
X utils.c                    1	misc functions for troff2
END_OF_FILE
if test 3082 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(11311 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
X			README 1.8 89/08/29
X
XNormal UNIX troff only prints its output on WANG C/A/T Phototypesetters.
XThis package contains a generic interface between standard troff and
Xother types of printers.  The package has a driver for PostScript printers
X(Eg: Apple Laserwriters), a partial implementation of a driver for HP 
XLaserjet family printers, and a Ditroff output option.  
X
XIn fact, this package can be used to, in effect, upgrade CAT troff
Xto be ditroff.  There are limitations, but you get what you pay for.
X
XI had announced more than once that this was being shipped to 
Xcomp.sources.unix, but something new kept coming up.  I had sent
Xthe last incarnation to Rich Salz, then I discovered tpscript and
Xdecided to include a little stuff from that to make mine more
Xcomplete - so I asked him to cancel.  A couple of months ago, a new
Xversion was sent off to him, but it hasn't appeared yet.
X
XApplicability:
X	- You must have CAT troff, not ditroff.
X	- Printers:
X		- if you have a laserjet, you should be able to use this
X		  package.  However, if you can get a copy of jetroff,
X		  you can use psroff to convert to ditroff output, and
X		  then use jetroff to print that - until font downloading
X		  is in my HPLJ driver, jetroff will be much better than
X		  my stuff.
X		- if you have a postscript printer use postscript output.
X		  Or, generate ditroff and use tpscript.  Output is more
X		  or less identical.
X		- if you have ditroff backends, then use ditroff.
X
XThis is an ALPHA release.  What this means is that this thing is good
Xenough for use, but there are rough edges.  I would encourage people to
Xfiddle with it (particularly the mapping tables) and PLEASE PLEASE PLEASE
Xsend me your changes so that I can encorporate them into new releases and
Xupdates.  This package, along with some tweaks to troff are currently
Xin production at our site.
X
XCredit where credit's due: genftable.ps, font/* and some of the character
Xdrawing and spacing stuff (bracket font) is from ditroff2ps/tpscript:
X
X    Copyright:	1985, Stephen Frede, UNSW Australia
X	    Use it and copy it as much as you want, but don't pretend you
X	    wrote it, or sell it for profit.
X
XExcellent stuff.
X
X    Remarks:
X	- This was developed with a relatively old (eg: V7) troff, and
X	  may be missing some of the special characters ("\(XX" sequences)
X	  that later versions of troff have.  Entries for these characters 
X	  can be found in the ps.c file, (standardFont and symbolFont arrays)
X	  as "NOCODE"/"unassigned" entries.  Ditto ljtables.c
X	  Please let me know what they are if you figger them out.
X	  Note that the X & Y shifts shown in these tables are:
X		1) in the native resolution of the device (1/72's for troff2ps,
X		   1/720's for troff2lj) (not troff 1/432's).
X		2) Are then *multiplied* by the current point size.
X		   (eg: in troff2ps, .1 becomes .1*1/72*current point size
X		   inches)
X
X	- The PostScript driver is essentially complete.  It uses the
X	  built-in fonts on the AppleLaser.  A few characters not in
X	  these fonts are faked by the invocation of drawing routines
X	  defined in the file "lib.ps" (which is the definitions of things
X	  needed by the driver)  Or the bracket font (also in lib.ps).  
X	  Eg: 1/2, 1/4, 3/4, circle, bell system logo and box are 
X	  constructed by PostScript subroutines and/or the bracket font.  The
X	  Bell System logo isn't really - try this:
X		\s36\(bs\s0
X	  The first person to correctly identify what it is (without reading
X	  lib.ps) gets a pat on the back ;-)
X
X	  The only two characters that don't exactly map properly are
X	  left and right hand.  I use double arrows instead.  (so does 
X	  tpscript by the way - great minds think alike)
X	
X	- Regarding font width tables, there are several ways to go with
X	  Postscript:
X
X	    showfont: modify showfont to have the appropriate command
X		      to print to your printer.  Typing:
X				showfont <fontname>
X		      (eg: showfont Times-Roman) will dump the entire
X		      Postscript Times-Roman font (plus some constructions
X		      that troff2ps uses) in a table.  Each character is
X		      in a box, along with several numbers.  The number
X		      in the center at the bottom of the box is the width
X		      you should put in your troff tables for that character.
X
X	    upload: modify it to have the appropriate command to print
X		      to your printer.  Then, arrange (somehow) to
X		      capture in a file anything that the printer sends 
X		      *back* to the computer.  (Eg: with stock System
X		      V printer: 
X			cat < /dev/<laserprinterdevice> > /tmp/upload&
X
X		      Run upload.  /tmp/upload will then contain metrics
X		      on all of the fonts in your printer.
X	    dit2catwid.c: takes ditroff like font tables and converts them
X		      to CAT codes suitable for (at least) Xenix troff.
X	    genftable: fire it off to your Postscript printer, and it
X		      will send back a shar file containing ditroff
X		      style char tables.  (Neat - thanks Michael!)
X	    font/*:   font tables for ditroff. (also thanks Michael!)
X
X	- There is some code to allow the use of arbitrary commands to
X	  the driver - see the .sR macro in tmac.t2, and troff2's 
X	  interpreter.  This is *extremely* awkward to use (blame troff),
X	  but can be useful after a fashion.  Not documented particularly
X	  well....  Our troff has been modified to emit a fake CAT code
X	  with ".fp", so don't expect ".fp's" to work except by changing
X	  fonts.??  However, you can do the same thing by using
X
X		.sR "FnAB" 
X		
X	  where "F" is the font number (1-3 - don't redefine 4!) and
X	  AB is the font name found in the proper lib.* file.  ltest.m
X	  has an example of the ".fp" version, change to the ".sR" version
X	  to make it work on an unmodified troff.
X
X	  troff2 has 8-font troff support, but:
X		a) it's never been tested.
X		b) I'm no longer convinced that the cat.5 man page is
X		   correct on how the decoding works.
X
X	- The laserjet driver is pretty simple minded - it should position
X	  each character correctly, and perform the font selections.
X	  HOWEVER, it does not do font downloads.  Therefore, if the desired
X	  font doesn't exist, the laserjet will select some other font
X	  according to its heuristics.  In fact, I've not tested this
X	  incarnation of the LJ driver much (because I don't have access to
X	  one), but it should be very close to working this much.  I am 
X	  thinking on a generic font downloading facility which will
X	  take any format font file and download it to any printer style.
X	  The current incarnation should work on all members of the
X	  Laserjet.  Font downloading will not work on "old Laserjets" unless
X	  they've been upgraded to a plus.  Further, the symbolFont table
X	  has not been properly updated.
X
X	Roadmap:
X	    troff2.c:	main function - performs the C/A/T translation
X			to function calls (via t2conf.c)
X	    defs.h:	General definitions.
X	    t2conf.c:	Table of functions for the two drivers.  You can
X			add new drivers to this by appending to the
X			list.  Please use the naming conventions I am
X			using.
X	    utils.c:	Routines used by other programs (eg: testps)
X	    ps.h,ps.c:	PostScript driver
X	    lj.h,lj.c:	Laserjet driver (including K incarnation)
X	    ljtables.c: lj widths and adjustment table
X	    dt.h,dt.c:  Ditroff driver.
X	    fonts.[ps|lj|dt] correspondance between troff name and method
X			of selection on the printer for Postscript, HPLJ,
X			and ditroff.
X
X	All of the above are compiled and linked to create troff2ps.
X	Note: troff2ps examines the last two characters in the name it
X	is called with to determine which printer driver to use.
X	Therefore, invoking troff2ps as "troff2ps" will use the PostScript
X	driver.  If you link troff2ps to "troff2lj", and run troff2lj,
X	it will emit Laserjet codes.  Additionally, if you use the "-dxx"
X	option, troff2ps will use the "xx" driver.  Eg: troff2ps -dlj
X	will print laserjet codes.
X
X	Extra stuff:
X	    Makefile:	makes everything
X	    lib.ps:	PostScript library.  Moved to LIBDIR/pslib by makefile.
X			prepended onto Postscript output by troff2ps.
X	    confid.ps:	Sample include file (actually produces a forms overlay)
X	    lethead.ps:	Ditto
X	    lib.lj:	Laserjet library.  Moved to LIBDIR/ljlib by makefile.
X			Currently empty.  prepended onto Laserjet output by 
X			troff2lj.
X	    ltest.m:	Test document.  Copied to ltest.m by Makefile.
X	    chartab.m:	another test document. (use tbl)
X	    testps.c:	PostScript driver tester.
X			testps <fonts>
X			will display postscript on standard output to show
X			the characters in the <fonts> list, where each
X			character is A thru O.  See ps.c for the font names.
X			At the end, testps will always display a page of
X			ZapfDingbats.
X			testps AB will display two pages of Times-Roman,
X			two pages of Times-Italic along with a page of 
X			ZapfDingbats.
X			"testps -" will display only the ZapfDingbats.
X			"testps" will display oodles of stuff.
X	    psroff.sh:	Driver to wrap around troff to invoke the translators.
X			Final result put in BINDIR/psroff, possibly linked
X			to BINDIR/ljroff etc.
X	    psxlate.c:	(Incomplete) PostScript postfilter.  It will currently
X			reverse page order and is called by psroff (according
X			to "OUTPUT" definition in Makefile).
X			No manual page yet (it's not complete).
X	    tmac.t2.sh:	Some useful extensions on mm - invokes mm package.
X			Copied to tmac.t2 by Makefile.   Intended to 
X			eventually have some driver-specific tuning.
X			You would use it as "psroff -mt2 ...." instead
X			of "nroff -mm ...".
X			You really should customize this.  Note that the
X			".sR" facility will not work without the definition
X			contained herein.
X	    fonts.ps:	List of troff ".fp" font name to Laserwriter font
X			name translations.  Note: stock troff cannot make
X			use of .fp changes because the stupid thing doesn't
X			tell the back end that the font has changed.  Please
X			contact me and I can send you a couple of changes
X			to make to troff (if you have source).
X	    fonts.lj/lk: ditto for Laserjet
X	    psroff.1.sh:	Manual page.  Copied to psroff.1 by Makefile
X	    troff2ps.1.sh:	Manual page.  Copied to psroff.1 by Makefile
X    
XInstructions for building:
X	- edit Makefile and change:
X		LIBDIR 	Where the non-user accessible stuff should go.
X		INDIR	Where the user-accessible stuff should go.
X		PSOUTPUT	Output command to print PostScript stuff.
X		LJOUTPUT	Output command to print Laserjet stuff.
X		DTOUTPUT	Output command to print Ditroff stuff.
X	- edit defs.h and define either BSD or ATT.  If you set ATT, set
X	  SVR3 too if you are running SVR3.
X	- Type
X		make
X	  This will build everything.
X		make install
X	  Will install everything, including the new font width tables.  
X	  You can even issue this from a non-root user, but it will prompt 
X	  you for the password on every thing it needs to do as root.
X	  If you want "ljroff", you will have to manually link INDIR/psroff
X	  to INDIR/ljroff.  Ditto lkroff and dttroff.
X
X
XPLEASE PLEASE PLEASE!  If you have any problems with it, or would like
Xto make some suggestions for changing it, or have implemented a new driver
X(hint hint) please contact me at:
X---------------------------------
XChris Lewis, R.H. Lathwell & Associates: Elegant Communications Inc.
XUUCP: {uunet!attcan, utcsri!utzoo, utai}!lsuc!ecicrl!clewis
XUUCP: {uunet!attcan, utcsri!utzoo, utai}!lsuc!gate!eci386!clewis
XPhone: (416)-595-5425
END_OF_FILE
if test 11311 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
chmod +x 'README'
# end of 'README'
fi
if test -f 'confid.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'confid.ps'\"
else
echo shar: Extracting \"'confid.ps'\" \(628 characters\)
sed "s/^X//" >'confid.ps' <<'END_OF_FILE'
X%	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X%		All Rights Reserved
X%
X%    Permission to copy and further distribute is freely given provided 
X%    this copyright notice remains intact and that this software is not 
X%    sold for profit.
X%
X%	Project:	Generic Troff drivers
X%	Module:		pslib.sh
X%	Author: 	Chris Lewis
X%	Specs:		Confidential overlay inclusion.
X%ident  @(#)pslib.sh: 1.2 Copyright 89/04/21 11:48:20 Chris Lewis"
X
X/Confidential {
X    gsave
X    .99 setgray
X    /Courier-Bold findfont 80 scalefont setfont
X    0 0 moveto
X    54 rotate
X    0 -80 rmoveto
X    1 2 scale
X    (  ECI:Confidential) show
X    grestore
X} def
END_OF_FILE
if test 628 -ne `wc -c <'confid.ps'`; then
    echo shar: \"'confid.ps'\" unpacked with wrong size!
fi
# end of 'confid.ps'
fi
if test -f 'dt.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dt.h'\"
else
echo shar: Extracting \"'dt.h'\" \(1257 characters\)
sed "s/^X//" >'dt.h' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X		All Rights Reserved
X
X    Permission to copy and further distribute is freely given provided 
X    this copyright notice remains intact and that this software is not 
X    sold for profit.
X
X	Project:	Generic Troff drivers
X	Module:		dt.h
X	Author: 	Chris Lewis
X	Specs:		Ditroff driver definitions
X			Hacked from ps.h
X */
X
X#ifndef	SVR3
X#ifndef	lint
Xstatic char dtID[] = "@(#)dt.h: 1.1 Copyright 89/06/14 17:40:54 Chris Lewis";
X#endif
X#else
X#ident  "@(#)dt.h: 1.1 Copyright 89/06/14 17:40:54 Chris Lewis"
X#endif
X
X/*	This is actually done in the back-end */
X#define	DTRESOLUTION	432
X/*	Length scaling factor */
X#define	DTSCALEFACTOR	((double) DTRESOLUTION / TROFFRESOLUTION)
X/*	Troff assumes 7.5" paper width, most macro packages print in
X	6.5" area within that.  Sooo, we'll center the paperwidth on the 
X	physical page - implying .5" inch physical margins.*/
X#define	TROFF2DTX(x) ((x) * DTSCALEFACTOR + DTRESOLUTION / 2)
X/*	11" paper length */
X#define	TROFF2DTY(y) ((y) * DTSCALEFACTOR)
X
Xextern double pagelength;
X
X#define	DTLIB	"lib"
X#define	DTFONTS	"fonts"
X
Xextern int dtProlog(), dtEpilog(), dtChar(), dtPage(), dtFontSel();
X
X#define	DTNAME	"dt"
X
X#ifdef	DT
Xstruct troff2befont dtSymFont[], dtStdFont[];
X#endif
END_OF_FILE
if test 1257 -ne `wc -c <'dt.h'`; then
    echo shar: \"'dt.h'\" unpacked with wrong size!
fi
# end of 'dt.h'
fi
if test ! -d 'font' ; then
    echo shar: Creating directory \"'font'\"
    mkdir 'font'
fi
if test -f 'font/C' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'font/C'\"
else
echo shar: Extracting \"'font/C'\" \(2660 characters\)
sed "s/^X//" >'font/C' <<'END_OF_FILE'
X# Courier
Xname C
Xinternalname Courier
X# fixed width
Xspacewidth 60
Xcharset
X!	60	2	041
X"	60	2	042
X#	60	3	043
X$	60	3	044
X%	60	2	045
X&	60	2	046
X'	60	2	047
X(	60	3	050
X)	60	3	051
X*	60	2	052
X+	60	2	053
X,	60	1	054
X-	60	0	055
Xhy	"
X.	60	0	056
X/	60	3	057
Xsl	"
X0	60	2	060
X1	60	2	061
X2	60	2	062
X3	60	2	063
X4	60	2	064
X5	60	2	065
X6	60	2	066
X7	60	2	067
X8	60	2	070
X9	60	2	071
X:	60	0	072
X;	60	1	073
X<	60	2	074
X=	60	0	075
X>	60	2	076
X?	60	2	077
X@	60	3	0100
XA	60	2	0101
XB	60	2	0102
XC	60	2	0103
XD	60	2	0104
XE	60	2	0105
XF	60	2	0106
XG	60	2	0107
XH	60	2	0110
XI	60	2	0111
XJ	60	2	0112
XK	60	2	0113
XL	60	2	0114
XM	60	2	0115
XN	60	2	0116
XO	60	2	0117
XP	60	2	0120
XQ	60	3	0121
XR	60	2	0122
XS	60	2	0123
XT	60	2	0124
XU	60	2	0125
XV	60	2	0126
XW	60	2	0127
XX	60	2	0130
XY	60	2	0131
XZ	60	2	0132
X[	60	3	0133
X\	60	3	0134
X]	60	3	0135
Xa^	60	2	0136	asciicircum
X_	60	1	0137
Xru	"
X`	60	2	0140
Xa	60	0	0141
Xb	60	2	0142
Xc	60	0	0143
Xd	60	2	0144
Xe	60	0	0145
Xf	60	2	0146
Xg	60	1	0147
Xh	60	2	0150
Xi	60	2	0151
Xj	60	3	0152
Xk	60	2	0153
Xl	60	2	0154
Xm	60	0	0155
Xn	60	0	0156
Xo	60	0	0157
Xp	60	1	0160
Xq	60	1	0161
Xr	60	0	0162
Xs	60	0	0163
Xt	60	2	0164
Xu	60	0	0165
Xv	60	0	0166
Xw	60	0	0167
Xx	60	0	0170
Xy	60	1	0171
Xz	60	0	0172
X{	60	3	0173
X|	60	3	0174
X}	60	3	0175
Xa~	60	0	0176	asciitilde
XI!	60	1	0241	exclamdown
Xct	60	2	0242	cent
Xpo	60	2	0243	sterling
X$J	60	2	0245	yen
Xsc	60	3	0247	section
Xfm	60	2	0251	quotesingle
Xn'	"
Xlq	60	2	0252	quotedblleft
Xd<	60	0	0253	guillemotleft
Xl<	60	0	0254	guilsinglleft
Xr>	60	0	0255	guilsinglright
X\-	60	0	0261	endash
Xdg	60	3	0262	dagger
Xdd	60	3	0263	daggerdbl
Xpp	60	3	0266	paragraph
Xbu	60	0	0267	bullet
Xbq	60	2	0271	quotedblbase
Xrq	60	2	0272	quotedblright
Xd>	60	0	0273	guillemotright
XI?	60	1	0277	questiondown
Xga	60	2	0301	grave
X\`	"
Xaa	60	2	0302	acute
X\'	"
X^	60	2	0303	circumflex
X~	60	2	0304	tilde
Xma	60	2	0305	macron
Xbe	60	2	0306	breve
Xdt	60	2	0307	dotaccent
X..	60	2	0310	dieresis
Xum	"
Xri	60	2	0312	ring
Xcd	60	1	0313	cedilla
X''	60	2	0315	hungarumlaut
Xog	60	1	0316	ogonek
Xhc	60	2	0317	caron
Xem	60	0	0320	emdash
Xa:	60	2	0321	adieresis
Xo:	60	2	0322	odieresis
Xu:	60	2	0323	udieresis
XA:	60	2	0324	Adieresis
XO:	60	2	0325	Odieresis
XU:	60	2	0326	Udieresis
XPL	60	2	0350	Lslash
XO/	60	2	0351	Oslash
Xui	60	0	0365	dotlessi
XPl	60	2	0370	lslash
Xo/	60	2	0371	oslash
Xss	60	2	0373	germandbls
X12	120	2	0100	1/2 faked - code is irrelevent
X13	120	2	0100	1/3 faked - code is irrelevent
X14	120	2	0100	1/4 faked - code is irrelevent
X18	120	2	0100	1/8 faked - code is irrelevent
X23	120	2	0100	2/3 faked - code is irrelevent
X34	120	2	0100	3/4 faked - code is irrelevent
X38	120	2	0100	3/8 faked - code is irrelevent
X58	120	2	0100	5/8 faked - code is irrelevent
X78	120	2	0100	7/8 faked - code is irrelevent
Xsq	100	3	0100	square box
END_OF_FILE
if test 2660 -ne `wc -c <'font/C'`; then
    echo shar: \"'font/C'\" unpacked with wrong size!
fi
# end of 'font/C'
fi
if test -f 'font/CB' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'font/CB'\"
else
echo shar: Extracting \"'font/CB'\" \(2667 characters\)
sed "s/^X//" >'font/CB' <<'END_OF_FILE'
X# Courier-Bold
Xname CB
Xinternalname CourierB
X# fixed width
Xspacewidth 60
Xcharset
X!	60	2	041
X"	60	2	042
X#	60	3	043
X$	60	3	044
X%	60	2	045
X&	60	2	046
X'	60	2	047
X(	60	3	050
X)	60	3	051
X*	60	2	052
X+	60	2	053
X,	60	1	054
X-	60	0	055
Xhy	"
X.	60	0	056
X/	60	3	057
Xsl	"
X0	60	2	060
X1	60	2	061
X2	60	2	062
X3	60	2	063
X4	60	2	064
X5	60	2	065
X6	60	2	066
X7	60	2	067
X8	60	2	070
X9	60	2	071
X:	60	0	072
X;	60	1	073
X<	60	2	074
X=	60	0	075
X>	60	2	076
X?	60	2	077
X@	60	3	0100
XA	60	2	0101
XB	60	2	0102
XC	60	2	0103
XD	60	2	0104
XE	60	2	0105
XF	60	2	0106
XG	60	2	0107
XH	60	2	0110
XI	60	2	0111
XJ	60	2	0112
XK	60	2	0113
XL	60	2	0114
XM	60	2	0115
XN	60	2	0116
XO	60	2	0117
XP	60	2	0120
XQ	60	3	0121
XR	60	2	0122
XS	60	2	0123
XT	60	2	0124
XU	60	2	0125
XV	60	2	0126
XW	60	2	0127
XX	60	2	0130
XY	60	2	0131
XZ	60	2	0132
X[	60	3	0133
X\	60	3	0134
X]	60	3	0135
Xa^	60	2	0136	asciicircum
X_	60	1	0137
Xru	"
X`	60	2	0140
Xa	60	0	0141
Xb	60	2	0142
Xc	60	0	0143
Xd	60	2	0144
Xe	60	0	0145
Xf	60	2	0146
Xg	60	1	0147
Xh	60	2	0150
Xi	60	2	0151
Xj	60	3	0152
Xk	60	2	0153
Xl	60	2	0154
Xm	60	0	0155
Xn	60	0	0156
Xo	60	0	0157
Xp	60	1	0160
Xq	60	1	0161
Xr	60	0	0162
Xs	60	0	0163
Xt	60	2	0164
Xu	60	0	0165
Xv	60	0	0166
Xw	60	0	0167
Xx	60	0	0170
Xy	60	1	0171
Xz	60	0	0172
X{	60	3	0173
X|	60	3	0174
X}	60	3	0175
Xa~	60	0	0176	asciitilde
XI!	60	1	0241	exclamdown
Xct	60	2	0242	cent
Xpo	60	2	0243	sterling
X$J	60	2	0245	yen
Xsc	60	3	0247	section
Xfm	60	2	0251	quotesingle
Xn'	"
Xlq	60	2	0252	quotedblleft
Xd<	60	0	0253	guillemotleft
Xl<	60	0	0254	guilsinglleft
Xr>	60	0	0255	guilsinglright
X\-	60	0	0261	endash
Xdg	60	3	0262	dagger
Xdd	60	3	0263	daggerdbl
Xpp	60	3	0266	paragraph
Xbu	60	0	0267	bullet
Xbq	60	2	0271	quotedblbase
Xrq	60	2	0272	quotedblright
Xd>	60	0	0273	guillemotright
XI?	60	1	0277	questiondown
Xga	60	2	0301	grave
X\`	"
Xaa	60	2	0302	acute
X\'	"
X^	60	2	0303	circumflex
X~	60	2	0304	tilde
Xma	60	2	0305	macron
Xbe	60	2	0306	breve
Xdt	60	2	0307	dotaccent
X..	60	2	0310	dieresis
Xum	"
Xri	60	2	0312	ring
Xcd	60	1	0313	cedilla
X''	60	2	0315	hungarumlaut
Xog	60	1	0316	ogonek
Xhc	60	2	0317	caron
Xem	60	0	0320	emdash
Xa:	60	2	0321	adieresis
Xo:	60	2	0322	odieresis
Xu:	60	2	0323	udieresis
XA:	60	2	0324	Adieresis
XO:	60	2	0325	Odieresis
XU:	60	2	0326	Udieresis
XPL	60	2	0350	Lslash
XO/	60	3	0351	Oslash
Xui	60	0	0365	dotlessi
XPl	60	2	0370	lslash
Xo/	60	3	0371	oslash
Xss	60	2	0373	germandbls
X12	120	2	0100	1/2 faked - code is irrelevent
X13	120	2	0100	1/3 faked - code is irrelevent
X14	120	2	0100	1/4 faked - code is irrelevent
X18	120	2	0100	1/8 faked - code is irrelevent
X23	120	2	0100	2/3 faked - code is irrelevent
X34	120	2	0100	3/4 faked - code is irrelevent
X38	120	2	0100	3/8 faked - code is irrelevent
X58	120	2	0100	5/8 faked - code is irrelevent
X78	120	2	0100	7/8 faked - code is irrelevent
Xsq	100	3	0100	square box
END_OF_FILE
if test 2667 -ne `wc -c <'font/CB'`; then
    echo shar: \"'font/CB'\" unpacked with wrong size!
fi
# end of 'font/CB'
fi
if test -f 'font/CO' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'font/CO'\"
else
echo shar: Extracting \"'font/CO'\" \(2670 characters\)
sed "s/^X//" >'font/CO' <<'END_OF_FILE'
X# Courier-Oblique
Xname CO
Xinternalname CourierO
X# fixed width
Xspacewidth 60
Xcharset
X!	60	2	041
X"	60	2	042
X#	60	3	043
X$	60	3	044
X%	60	2	045
X&	60	2	046
X'	60	2	047
X(	60	3	050
X)	60	3	051
X*	60	2	052
X+	60	2	053
X,	60	1	054
X-	60	0	055
Xhy	"
X.	60	0	056
X/	60	3	057
Xsl	"
X0	60	2	060
X1	60	2	061
X2	60	2	062
X3	60	2	063
X4	60	2	064
X5	60	2	065
X6	60	2	066
X7	60	2	067
X8	60	2	070
X9	60	2	071
X:	60	0	072
X;	60	1	073
X<	60	2	074
X=	60	0	075
X>	60	2	076
X?	60	2	077
X@	60	3	0100
XA	60	2	0101
XB	60	2	0102
XC	60	2	0103
XD	60	2	0104
XE	60	2	0105
XF	60	2	0106
XG	60	2	0107
XH	60	2	0110
XI	60	2	0111
XJ	60	2	0112
XK	60	2	0113
XL	60	2	0114
XM	60	2	0115
XN	60	2	0116
XO	60	2	0117
XP	60	2	0120
XQ	60	3	0121
XR	60	2	0122
XS	60	2	0123
XT	60	2	0124
XU	60	2	0125
XV	60	2	0126
XW	60	2	0127
XX	60	2	0130
XY	60	2	0131
XZ	60	2	0132
X[	60	3	0133
X\	60	3	0134
X]	60	3	0135
Xa^	60	2	0136	asciicircum
X_	60	1	0137
Xru	"
X`	60	2	0140
Xa	60	0	0141
Xb	60	2	0142
Xc	60	0	0143
Xd	60	2	0144
Xe	60	0	0145
Xf	60	2	0146
Xg	60	1	0147
Xh	60	2	0150
Xi	60	2	0151
Xj	60	3	0152
Xk	60	2	0153
Xl	60	2	0154
Xm	60	0	0155
Xn	60	0	0156
Xo	60	0	0157
Xp	60	1	0160
Xq	60	1	0161
Xr	60	0	0162
Xs	60	0	0163
Xt	60	2	0164
Xu	60	0	0165
Xv	60	0	0166
Xw	60	0	0167
Xx	60	0	0170
Xy	60	1	0171
Xz	60	0	0172
X{	60	3	0173
X|	60	3	0174
X}	60	3	0175
Xa~	60	0	0176	asciitilde
XI!	60	1	0241	exclamdown
Xct	60	2	0242	cent
Xpo	60	2	0243	sterling
X$J	60	2	0245	yen
Xsc	60	3	0247	section
Xfm	60	2	0251	quotesingle
Xn'	"
Xlq	60	2	0252	quotedblleft
Xd<	60	0	0253	guillemotleft
Xl<	60	0	0254	guilsinglleft
Xr>	60	0	0255	guilsinglright
X\-	60	0	0261	endash
Xdg	60	3	0262	dagger
Xdd	60	3	0263	daggerdbl
Xpp	60	3	0266	paragraph
Xbu	60	0	0267	bullet
Xbq	60	2	0271	quotedblbase
Xrq	60	2	0272	quotedblright
Xd>	60	0	0273	guillemotright
XI?	60	1	0277	questiondown
Xga	60	2	0301	grave
X\`	"
Xaa	60	2	0302	acute
X\'	"
X^	60	2	0303	circumflex
X~	60	2	0304	tilde
Xma	60	2	0305	macron
Xbe	60	2	0306	breve
Xdt	60	2	0307	dotaccent
X..	60	2	0310	dieresis
Xum	"
Xri	60	2	0312	ring
Xcd	60	1	0313	cedilla
X''	60	2	0315	hungarumlaut
Xog	60	1	0316	ogonek
Xhc	60	2	0317	caron
Xem	60	0	0320	emdash
Xa:	60	2	0321	adieresis
Xo:	60	2	0322	odieresis
Xu:	60	2	0323	udieresis
XA:	60	2	0324	Adieresis
XO:	60	2	0325	Odieresis
XU:	60	2	0326	Udieresis
XPL	60	2	0350	Lslash
XO/	60	2	0351	Oslash
Xui	60	0	0365	dotlessi
XPl	60	2	0370	lslash
Xo/	60	2	0371	oslash
Xss	60	2	0373	germandbls
X12	120	2	0100	1/2 faked - code is irrelevent
X13	120	2	0100	1/3 faked - code is irrelevent
X14	120	2	0100	1/4 faked - code is irrelevent
X18	120	2	0100	1/8 faked - code is irrelevent
X23	120	2	0100	2/3 faked - code is irrelevent
X34	120	2	0100	3/4 faked - code is irrelevent
X38	120	2	0100	3/8 faked - code is irrelevent
X58	120	2	0100	5/8 faked - code is irrelevent
X78	120	2	0100	7/8 faked - code is irrelevent
Xsq	100	3	0100	square box
END_OF_FILE
if test 2670 -ne `wc -c <'font/CO'`; then
    echo shar: \"'font/CO'\" unpacked with wrong size!
fi
# end of 'font/CO'
fi
if test -f 'font/S2' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'font/S2'\"
else
echo shar: Extracting \"'font/S2'\" \(856 characters\)
sed "s/^X//" >'font/S2' <<'END_OF_FILE'
X# "Symbol"
Xname S2
Xinternalname BracketFont
Xspecial
Xcharset
Xbv	50	2	0101	bold vertical
Xlt	50	2	0102	left top of big curly bracket
Xlk	50	2	0103	left centre of big curly bracket
Xlb	50	2	0104	left bottom of big curly bracket
Xrt	50	2	0105	right top of big curly bracket
Xrk	50	2	0106	right centre of big curly bracket
Xrb	50	2	0107	right bottom of big curly bracket
Xlc	50	2	0110	left ceiling (left top of big square bracket)
Xlf	50	2	0111	left floor (left bottom of big square bracket)
Xrc	50	2	0112	right ceiling (right top of big square bracket)
Xrf	50	2	0113	right floor (right bottom of big square bracket)
Xbr	0	2	0114	box vertical rule (matches ul)
Xrn	50	2	0115	root en extender
Xci	100	3	0116	circle
X\|	17	0	0117	1/6em narrow space
X\^	8	0	0120	1/12 em narrow space
Xr1	80	0	0121	reversible reaction ( chemical )
Xr2	80	0	0122	reversible reaction - 2 full arrows
END_OF_FILE
if test 856 -ne `wc -c <'font/S2'`; then
    echo shar: \"'font/S2'\" unpacked with wrong size!
fi
# end of 'font/S2'
fi
if test -f 'fonts.dt' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fonts.dt'\"
else
echo shar: Extracting \"'fonts.dt'\" \(632 characters\)
sed "s/^X//" >'fonts.dt' <<'END_OF_FILE'
X#@(#)fonts.dt 1.1 89/06/14
X#	DO NOT CHANGE THE ORDER OF THE FIRST FOUR LINES - THESE ARE
X#	THE DEFAULT TROFF FONTS IN POSITIONS 1-4.  IN PARTICULAR, IF
X#	SYMBOL ISN'T THE FOURTH ENTRY, BOXES, TABLES, AND OTHER FANCY
X#	CHARACTERS DON'T WORK SHIT.
XR	Times-Roman
XI	Times-Italic
XB	Times-Bold
XS	Symbol
XBI	Times-BoldItalic
XH	Helvetica
XHI	Helvetica-Oblique
XHB	Helvetica-Bold
XHo	Helvetica-BoldOblique
XCW	Courier
XZC	ZapfChancery-MediumItalic
XA	AvantGarde-Book
XAI	AvantGarde-BookOblique
XAB	AvantGarde-Demi
XAi	AvantGarde-DemiItalic
XAP	APL
Xh	Helvetica-Narrow
Xhi	Helvetica-Narrow-Oblique
Xhb	Helvetica-Narrow-Bold
XhI	Helvetica-Narrow-BoldOblique
END_OF_FILE
if test 632 -ne `wc -c <'fonts.dt'`; then
    echo shar: \"'fonts.dt'\" unpacked with wrong size!
fi
# end of 'fonts.dt'
fi
if test -f 'fonts.lj' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fonts.lj'\"
else
echo shar: Extracting \"'fonts.lj'\" \(1341 characters\)
sed "s/^X//" >'fonts.lj' <<'END_OF_FILE'
X#@(#)fonts.lj 1.1 89/05/02
X#	four fields:
X#	troff-name english-name HPLJ-code-to-transmit flags
X#		flags of interest: 02 indicates that it's a built-in font.
X#	\nnn sequences are only recognized in the HPLJ-code field.
X#	Don't put in *any* extraneous spaces.
X#                         +----------------------------- Symbol set
X#                         |      +---------------------- 0=fixed, 1=proportional
X#                         |      | +-------------------- 0=upright, 1=italics
X#                         |      | |  +----------------- stroke weight -7...7
X#                         |      | |  |  +-------------- Typeface
X#                         |      | |  |  |
X#                         |      | |  |  |  +----------- 2 == builtin
X#                         |      | |  |  |  |
X#                         v      v v  v  v  v
XR  Times-Roman      \033(8U\033(s1p0s00b05T 2
XI  Times-Italic     \033(8U\033(s1p1s-3b05T 2
XB  Times-Bold       \033(8U\033(s1p0s03b05T 2
XS  Symbol           \033(8U\033(s0p0s00b03T 2
XBI Times-BoldItalic \033(8U\033(s1p1s03b05T 2
XCW Courier          \033(8U\033(s0p0s00b03T 2
XCI Courier-Italic   \033(8U\033(s0p1s-3b03T 2
XCB Courier-Bold     \033(8U\033(s0p0s03b03T 2
XL  LinePrinter      \033(8U\033(s0p0s00b00T 2
XLI LinePrinter-Ital \033(8U\033(s0p1s-3b00T 2
XLB LinePrinter-Bold \033(8U\033(s0p0s03b00T 2
END_OF_FILE
if test 1341 -ne `wc -c <'fonts.lj'`; then
    echo shar: \"'fonts.lj'\" unpacked with wrong size!
fi
# end of 'fonts.lj'
fi
if test -f 'fonts.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fonts.ps'\"
else
echo shar: Extracting \"'fonts.ps'\" \(669 characters\)
sed "s/^X//" >'fonts.ps' <<'END_OF_FILE'
X#@(#)fonts.ps 1.9 89/08/22
X#	DO NOT CHANGE THE ORDER OF THE FIRST FOUR LINES - THESE ARE
X#	THE DEFAULT TROFF FONTS IN POSITIONS 1-5.  IN PARTICULAR, IF
X#	SYMBOL ISN'T THE FOURTH ENTRY AND BRACKETFONT ISN'T THE FIFTH, 
X#	BOXES, TABLES, AND OTHER FANCY CHARACTERS DON'T WORK SHIT.
X#	Don't try to directly reference font 5.....
X
XR	Times-Roman
XI	Times-Italic
XB	Times-Bold
XS	Symbol
X..	BracketFont
XBB	Bookman-Demi
XBI	Times-BoldItalic
XBO	Bookman-LightItalic
XBR	Bookman-Light
XBX	Bookman-DemiItalic
XC	Courier
XCB	Courier-Bold
XCO	Courier-Oblique
XCX	Courier-BoldOblique
XH	Helvetica
XHB	Helvetica-Bold
XHO	Helvetica-Oblique
XHX	Helvetica-BoldOblique
XPA	Palatino-Roman
XPB	Palatino-Bold
END_OF_FILE
if test 669 -ne `wc -c <'fonts.ps'`; then
    echo shar: \"'fonts.ps'\" unpacked with wrong size!
fi
# end of 'fonts.ps'
fi
if test -f 'gfnttab.sh' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'gfnttab.sh'\"
else
echo shar: Extracting \"'gfnttab.sh'\" \(612 characters\)
sed "s/^X//" >'gfnttab.sh' <<'END_OF_FILE'
X:
X# 1.2 89/08/25
Xtrap "exit 1" 0 1 2 3 15
Xif [ ! -d /usr/lib/oldfonts ]
Xthen
X    if mkdir /usr/lib/oldfonts
X    then
X	:
X    else
X	exit 1
X    fi
X    cp /usr/lib/font/* /usr/lib/oldfonts
Xfi
Xset -e
Xrm -f /tmp/S
Xcp font/S /tmp/S
Xchmod 644 /tmp/S
Xsed -e '1,/charset/d' font/S2 >> /tmp/S
Xfor i in font/[A-Z]*
Xdo
X    case $i in
X	font/S)
X	    echo "Generating font S"
X	    ./dit2catwid -s /tmp/S font/R font/ftS
X	    ;;
X	font/S2)
X	    continue
X	    ;;
X	*)
X	    echo "Generating font `basename $i`"
X	    ./dit2catwid /tmp/S $i font/ft`basename $i`
X	    ;;
X    esac
Xdone
Xset -ex
Xmv font/ft* /usr/lib/font
Xtrap "" 0
Xexit 0
END_OF_FILE
if test 612 -ne `wc -c <'gfnttab.sh'`; then
    echo shar: \"'gfnttab.sh'\" unpacked with wrong size!
fi
# end of 'gfnttab.sh'
fi
if test -f 'lethead.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lethead.ps'\"
else
echo shar: Extracting \"'lethead.ps'\" \(976 characters\)
sed "s/^X//" >'lethead.ps' <<'END_OF_FILE'
X%	Copyright 1985, 1986, 1987, 1988 R.H. Lathwell Associates:
X%		Elegant Communications Inc.  All Rights Reserved
X%
X%    Permission to copy and further distribute is freely given provided 
X%    this copyright notice remains intact and that this software is not 
X%    sold for profit.
X%
X%	Project:	Generic Troff drivers
X%	Module:		lhead.ps.sh
X%	Author: 	Chris Lewis
X%	Specs:		LetterHead overlay inclusion.
X%ident  @(#)lhead.ps.sh: 1.3 Copyright 89/04/21 11:47:29 Chris Lewis"
X
X/LetterHead {
X   /Logosave save def
X   matrix currentmatrix setmatrix 180 740 translate
X   % Box
X   newpath 0 12 moveto 0 32 rlineto 250 0 rlineto 0 -32 rlineto closepath fill
X   % Type in box
X   /Helvetica findfont 16 scalefont setfont
X   9 17 moveto 1 setgray (R.H. LATHWELL ASSOCIATES:)show
X   % Type below box.
X   /Helvetica findfont 12 scalefont setfont
X   25 0 moveto 0 setgray (ELEGANT COMMUNICATIONS, INC.)show
X   % Underline.
X   -162 -4 moveto 630 0 rlineto stroke
X   Logosave restore 
X} def
END_OF_FILE
if test 976 -ne `wc -c <'lethead.ps'`; then
    echo shar: \"'lethead.ps'\" unpacked with wrong size!
fi
# end of 'lethead.ps'
fi
if test -f 'lib.dt' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lib.dt'\"
else
echo shar: Extracting \"'lib.dt'\" \(448 characters\)
sed "s/^X//" >'lib.dt' <<'END_OF_FILE'
X%	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X%		All Rights Reserved
X%
X%    Permission to copy and further distribute is freely given provided 
X%    this copyright notice remains intact and that this software is not 
X%    sold for profit.
X%
X%	Project:	Generic Troff drivers
X%	Module:		lib.dt
X%	Author: 	Chris Lewis
X%	Specs:		Predefinitions for Ditroff
X%
X%ident  @(#)lib.dt: 1.1 Copyright 89/06/21 11:37:47 Chris Lewis"
X%There is nothing here yet.
END_OF_FILE
if test 448 -ne `wc -c <'lib.dt'`; then
    echo shar: \"'lib.dt'\" unpacked with wrong size!
fi
# end of 'lib.dt'
fi
if test -f 'lib.lj' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lib.lj'\"
else
echo shar: Extracting \"'lib.lj'\" \(1151 characters\)
sed "s/^X//" >'lib.lj' <<'END_OF_FILE'
X%	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X%		All Rights Reserved
X%
X%    Permission to copy and further distribute is freely given provided 
X%    this copyright notice remains intact and that this software is not 
X%    sold for profit.
X%
X%	Project:	Generic Troff drivers
X%	Module:		lib.lj
X%	Author: 	Chris Lewis
X%	Specs:		Predefinitions for HP Laserjet
X%			This is an ASCII file that is translated into
X%			binary by the lj driver.  Using the following
X%			Escape conventions:
X%			%comment
X%				line from % to end of line ignored.
X%			\nnnnnn ..... 
X%				each group of 3 digits is interpreted as an
X%				octal bytes.  Terminated by next non-octal
X%				character.
X%			\xnnnnnn ...
X%				Each group of 2 digits is interpreted as a
X%				hexidecimal byte.  Terminated by next non-hex
X%				character.
X%			tabs, spaces and newlines are ignored (you have to
X%				use hex or octal to pass them).
X%			All others passed straight through.
X%		For example:
X%			\xAABB \022 A %hello
X%			Passes the following bytes: 0xAA, 0xBB, 022, and "A"
X%			through to the laserjet.
X%ident  @(#)lib.lj: 1.1 Copyright 89/05/02 17:34:07 Chris Lewis"
X%There is nothing here yet.
END_OF_FILE
if test 1151 -ne `wc -c <'lib.lj'`; then
    echo shar: \"'lib.lj'\" unpacked with wrong size!
fi
# end of 'lib.lj'
fi
if test -f 'lib.lk' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lib.lk'\"
else
echo shar: Extracting \"'lib.lk'\" \(1151 characters\)
sed "s/^X//" >'lib.lk' <<'END_OF_FILE'
X%	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X%		All Rights Reserved
X%
X%    Permission to copy and further distribute is freely given provided 
X%    this copyright notice remains intact and that this software is not 
X%    sold for profit.
X%
X%	Project:	Generic Troff drivers
X%	Module:		lib.lk
X%	Author: 	Chris Lewis
X%	Specs:		Predefinitions for HP Laserjet
X%			This is an ASCII file that is translated into
X%			binary by the lj driver.  Using the following
X%			Escape conventions:
X%			%comment
X%				line from % to end of line ignored.
X%			\nnnnnn ..... 
X%				each group of 3 digits is interpreted as an
X%				octal bytes.  Terminated by next non-octal
X%				character.
X%			\xnnnnnn ...
X%				Each group of 2 digits is interpreted as a
X%				hexidecimal byte.  Terminated by next non-hex
X%				character.
X%			tabs, spaces and newlines are ignored (you have to
X%				use hex or octal to pass them).
X%			All others passed straight through.
X%		For example:
X%			\xAABB \022 A %hello
X%			Passes the following bytes: 0xAA, 0xBB, 022, and "A"
X%			through to the laserjet.
X%ident  @(#)lib.lk: 1.1 Copyright 89/05/02 17:34:12 Chris Lewis"
X%There is nothing here yet.
END_OF_FILE
if test 1151 -ne `wc -c <'lib.lk'`; then
    echo shar: \"'lib.lk'\" unpacked with wrong size!
fi
# end of 'lib.lk'
fi
if test -f 'lj.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lj.h'\"
else
echo shar: Extracting \"'lj.h'\" \(1352 characters\)
sed "s/^X//" >'lj.h' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X		All Rights Reserved
X
X    Permission to copy and further distribute is freely given provided 
X    this copyright notice remains intact and that this software is not 
X    sold for profit.
X
X	Project:	Generic Troff drivers
X	Module:		lj.h
X	Author: 	Chris Lewis
X	Specs:		Laserjet Driver definitions
X			Hacked from ps.h
X */
X
X#ifndef	SVR3
X#ifndef	lint
Xstatic char ljID[] = "@(#)lj.h: 1.4 Copyright 89/04/21 11:47:35 Chris Lewis";
X#endif
X#else
X#ident  "@(#)lj.h: 1.4 Copyright 89/04/21 11:47:35 Chris Lewis"
X#endif
X
X/*	We're using decipoints */
X#define	LJRESOLUTION	720
X/*	Length scaling factor */
X#define	LJSCALEFACTOR	((double) LJRESOLUTION / TROFFRESOLUTION)
X/*	Troff assumes 7.5" paper width, most macro packages print in
X	6.5" area within that.  Sooo, we'll center the paperwidth on the 
X	physical page - implying .5" inch physical margins.*/
X#define	TROFF2LJX(x) ((x) * LJSCALEFACTOR + LJRESOLUTION / 2)
X/*	11" paper length */
X#define	TROFF2LJY(y) ((y) * LJSCALEFACTOR)
X
Xextern double pagelength;
X
X#define	LASTLJFONT	('O')
X
X#define	LJLIB	"lib"
X#define	LJFONTS	"fonts"
X
Xextern int ljProlog(), ljEpilog(), ljChar(), ljPage(), ljFontSel();
X
X#define	LJNAME	"lj"
X#define	LKNAME	"lk"
X
X#ifdef	LJ
Xstruct troff2befont ljSymFont[], ljStdFont[];
X#endif
X#ifdef	LK
Xstruct troff2befont lkSymFont[], lkStdFont[];
X#endif
END_OF_FILE
if test 1352 -ne `wc -c <'lj.h'`; then
    echo shar: \"'lj.h'\" unpacked with wrong size!
fi
# end of 'lj.h'
fi
if test -f 'ps.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ps.h'\"
else
echo shar: Extracting \"'ps.h'\" \(1405 characters\)
sed "s/^X//" >'ps.h' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X		All Rights Reserved
X
X    Permission to copy and further distribute is freely given provided 
X    this copyright notice remains intact and that this software is not 
X    sold for profit.
X
X	Project:	Generic Troff drivers
X	Module:		ps.h
X	Author: 	Chris Lewis
X	Specs:		PostScript Driver definitions
X */
X
X#ifndef	SVR3
X#ifndef	lint
Xstatic char psID[] = "@(#)ps.h: 1.14 Copyright 89/04/21 11:47:53 Chris Lewis";
X#endif
X#else
X#ident  "@(#)ps.h: 1.14 Copyright 89/04/21 11:47:53 Chris Lewis"
X#endif
X
X/*	Points per inch (default PostScript resolution) */
X#define	PSRESOLUTION	72
X/*	Length scaling factor */
X#define	PSSCALEFACTOR	((double) PSRESOLUTION / TROFFRESOLUTION)
X/*	Troff assumes 7.5" paper width, most macro packages print in
X	6.5" area within that.  Sooo, we'll center the paperwidth on the 
X	physical page - implying .5" inch physical margins.*/
X#define	TROFF2PSX(x) ((x) * PSSCALEFACTOR + PSRESOLUTION / 2)
X/*	11" paper length (note the reversed sign!) */
X#define	TROFF2PSY(y) ((pagelength - (y)) * PSSCALEFACTOR)
X
Xextern double pagelength;
X
X#define	LASTPSFONT	('O')
X
X#define	FONTMACRO
X
X#define	PSLIB	"lib.ps"
X#define	PSFONTS	"fonts.ps"
X#define	EMITPS	printf
X
X/*	Entry points: */
Xextern int psProlog(), psEpilog(), psChar(), psPage(), psFontSel(),
X    psOverlay(), psXlate(), psBin();
X
X#define	PSNAME	"ps"
X
Xstruct troff2befont psSymFont[], psStdFont[];
END_OF_FILE
if test 1405 -ne `wc -c <'ps.h'`; then
    echo shar: \"'ps.h'\" unpacked with wrong size!
fi
# end of 'ps.h'
fi
if test -f 'psroff.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'psroff.1'\"
else
echo shar: Extracting \"'psroff.1'\" \(2522 characters\)
sed "s/^X//" >'psroff.1' <<'END_OF_FILE'
X.\"Copyright 1988 by Chris Lewis 1.3 89/05/18
X.TH PSROFF 1 local
X.SH NAME
Xpsroff,ljroff,xxroff \- troff replacement for PostScript or HP Printers.
X.SH SYNOPSIS
X.IB xx roff
X[-D] [-X]
X.RI "[-d" xx "]"
X.RI "[-rL" length "]"
X.RI [ troffopts ] files ...
X.SH DESCRIPTION
X.I Psroff
Xis functionally equivalent for
X.I troff
Xfor printing on PostScript or HP Laserjet printers.
X.I Troffopts
Xcan be any of the normal
X.I troff
Xarguments, in particular -m directives for specifying macro package.
XNote that the semantics of "-t" are changed - it means send the Postscript
X(or HP Laserjet) output to stdout.
XThe "-X" option does a "set -x" for debugging.
XThe "-D" option passes the "-D" option through to troff2ps.
X.P
X.I Psroff
Xcan be made to generate several different printer output formats.
XIt selects which one by one of two methods.
XFirst,
X.I psroff
Xlooks at the first two characters in it's name for printer type.
XThus, you can link "psroff" to "ljroff" - invocation of the latter will
Xgenerate LaserJet codes.
XAdditionally, you can override this by specifying
Xthe
X.RI -d xx
Xoption, where
X.I xx
Xwill select which printer codes to generate.
X.P
X.I Psroff
Xinvokes
X.I troff
Xto do the document formatting, then sends the output
Xto
X.I troff2ps
Xto do the generation of the correct printer codes.
X.P
XSince
X.I troff2ps
Xrequires that it knows the page length, the "-rL" option should be
Xused (see the documentation for MM and
X.I troff2ps
Xfor more details).
X.SH BUGS
XOld-fashioned CAT troff doesn't have a mechanism for passing arbitrary
Xcommands to the CAT - eg: overlays, and physical font mounting etc.
XIn order to support these things, a macro ".sR" was invented that
Xpasses special directives to the back end by means of a magic pseudo
XCAT code 'M', followed by an ASCII string containing the directive.
XUnfortunately, the only way to get that to the back end from troff
Xthat I have found so far is to embed the 'M<string>' in a ``.tm'' troff
Xdirective.
XThe ``.tm'' puts it's string to stderr, so psroff has been modified to
Xmerge the stdout (CAT codes using -t option to troff) and stderr (.tm
Xdirectives) together.
X.P
XUnfortunately, this means that you don't get to see troff-generated
Xerrors except as "illegal flash" errors from troff2ps, or varying
Xdegrees of extreme garbage on the printer.
XIf you encounter mangled output, try running
Xtroff instead of psroff, with the ``-t'' option, and direct stdout
Xto /dev/null.
XThen you will see troff's stderr.
X.SH "SEE ALSO"
Xtroff(1), troff2ps(1L), mm(5?)
X.SH AUTHOR
XWritten by Chris Lewis
END_OF_FILE
if test 2522 -ne `wc -c <'psroff.1'`; then
    echo shar: \"'psroff.1'\" unpacked with wrong size!
fi
# end of 'psroff.1'
fi
if test -f 'psroff.sh' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'psroff.sh'\"
else
echo shar: Extracting \"'psroff.sh'\" \(1772 characters\)
sed "s/^X//" >'psroff.sh' <<'END_OF_FILE'
X:
X#	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X#		All Rights Reserved
X#
X#    Permission to copy and further distribute is freely given provided 
X#    this copyright notice remains intact and that this software is not 
X#    sold for profit.
X#
X#	Project:	Generic Troff drivers
X#	Module:		psroff.sh
X#	Author: 	Chris Lewis
X#	Specs:		troff driver
X#
X#ident  "@(#)psroff.sh: 1.15 Copyright 89/07/14 14:47:46 Chris Lewis"
Xterm=false
Xtype=`basename $0 | sed -e 's/^\(..\).*/\1/'`
Xcopies=1
Xfor i in $*
Xdo
X    case $i in
X	-X)
X	    set -x
X	    ;;
X	-t)
X	    term=true
X	    ;;
X	-T*)
X	    device=`echo $i | sed -e 's/-T//'`
X	    ;;
X	-d*)
X	    type=`echo $i | sed -e 's/-d//'`
X	    ;;
X	-n*)
X	    copies=`echo $i | sed -e 's/-n//'`
X	    ;;
X	-D | -m)
X	    debug="$debug $i"
X	    ;;
X	-)
X	    files="$files $i"
X	    ;;
X	-rL*)
X	    eval `echo $i | sed -e 's/-rL\(..*\)\(.\)$/length=\1 prec=\2/'`
X	    if [ -z "$length" -o -z "$prec" ]
X	    then
X		echo "Bad length definition ($i) - must have value and scale" \
X		    >&2
X		exit 1
X	    fi
X	    length="-l$length$prec"
X	    args="$args $i"
X	    ;;
X	-*)
X	    args="$args $i"
X	    ;;
X	*)
X	    files="$files $i"
X	    if [ ! -r $i ]
X	    then
X		echo "$0: cannot open $i" >&2
X		exit 1
X	    fi
X	    ;;
X    esac
Xdone
X
Xif [ -x troff2ps ]
Xthen
X    t2=./troff2ps
Xelse
X    t2=%%LIBDIR%%/troff2ps
Xfi
X
X#	If you add a driver, you will have to add it here too:
Xcase $type in
X    lj | lk)		OUTPUT="%%LJOUTPUT%%" ;;
X    ps)		OUTPUT="%%PSOUTPUT%%" ;;
X    dt)		OUTPUT="%%DTOUTPUT%%" ;;
X    *)
X	echo "$0: don't understand $type drivers" >&2
X	exit 1
X	;;
Xesac
Xif $term
Xthen
X    ( troff -t $args $files 2>&1 ) | $t2 $length -d$type $debug $device
X    exit $?
Xelse
X    eval "( troff -t $args $files 2>&1 ) | $t2 $length -d$type $debug $device $OUTPUT"
X    exit $?
Xfi
END_OF_FILE
if test 1772 -ne `wc -c <'psroff.sh'`; then
    echo shar: \"'psroff.sh'\" unpacked with wrong size!
fi
# end of 'psroff.sh'
fi
if test -f 't2conf.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'t2conf.c'\"
else
echo shar: Extracting \"'t2conf.c'\" \(1916 characters\)
sed "s/^X//" >'t2conf.c' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X		All Rights Reserved
X
X    Permission to copy and further distribute is freely given provided 
X    this copyright notice remains intact and that this software is not 
X    sold for profit.
X
X	Project:	Generic Troff drivers
X	Module:		t2conf.c
X	Author: 	Chris Lewis
X	Specs:		Switch for alternate backends.
X */
X
X#include "defs.h"
X
X#ifndef	SVR3
X#ifndef	lint
Xstatic char SCCSid[] = "@(#)t2conf.c: 1.7 Copyright 89/06/14 17:39:52 Chris Lewis";
X#endif
X#else
X#ident  "@(#)t2conf.c: 1.7 Copyright 89/06/14 17:39:52 Chris Lewis"
X#endif
X
X#ifdef	PS
X#include "ps.h"
X#endif
X
X#if	defined(LJ) || defined(LK)
X#include "lj.h"
X#endif
X
X#ifdef	DT
X#include "dt.h"
X#endif
X
Xstruct backend B[] = {
X/*   bename,	beprolog,	beepilog,	bechar,	bepage,	befontsel */
X/*		beoverlay,	bebin		bexlat, bestdfont, besymfont */
X
X#ifdef	PS
X    { PSNAME,	psProlog,	psEpilog,	psChar,	psPage,	psFontSel,
X		psOverlay,	psBin,		psXlate, psStdFont, psSymFont },
X#endif
X
X#ifdef	DT
X    { DTNAME,	dtProlog,	dtEpilog,	dtChar,	dtPage,	dtFontSel,
X		NULL,		NULL,		NULL, dtStdFont, dtSymFont },
X#endif
X
X#ifdef	LJ
X    { LJNAME,	ljProlog,	ljEpilog,	ljChar,	ljPage,	ljFontSel,
X		NULL,		NULL,		NULL,   ljStdFont, ljSymFont },
X#endif
X#ifdef	LK
X    { LKNAME,	ljProlog,	ljEpilog,	ljChar, ljPage, ljFontSel,
X		NULL,		NULL,		NULL,   lkStdFont, lkSymFont },
X#endif
X
X    { NULL }
X};
X
X
Xgetdriver(name)
Xchar *name; {
X
X    be = BNULL;
X    if (B[0].bename == NULL) {
X	fprintf(stderr, "%s: No drivers configured!\n", progname);
X	exit(1);
X    }
X
X    if (B[1].bename == NULL) {
X	if (strcmp(B[0].bename, name)) {
X	    fprintf(stderr, "%s: Asked for driver '%s', only %s exists\n",
X		progname, name, B[0].bename);
X	    exit(1);
X	}
X	be = &B[0];
X	return;
X    }
X    for (be = B; be->bename != NULL; be++)
X	if (strcmp(name, be->bename) == 0)
X	    return;
X    fprintf(stderr, "%s: No driver called '%s' configured\n", progname, name);
X    exit(1);
X}
END_OF_FILE
if test 1916 -ne `wc -c <'t2conf.c'`; then
    echo shar: \"'t2conf.c'\" unpacked with wrong size!
fi
# end of 't2conf.c'
fi
if test -f 'tmac.t2' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'tmac.t2'\"
else
echo shar: Extracting \"'tmac.t2'\" \(2036 characters\)
sed "s/^X//" >'tmac.t2' <<'END_OF_FILE'
X.\"     Copyright 1985, 1986, 1987, 1988 Chris Lewis
X.\"		All Rights Reserved
X.\"
X.\"    Permission to copy and further distribute is freely given provided 
X.\"    this copyright notice remains intact and that this software is not 
X.\"    sold for profit.
X.\"
X.\"	Project:	Generic Troff drivers
X.\"	Module:		tmac.eci.sh
X.\"	Author: 	Chris Lewis
X.\"	Specs:		MM Prolog
X.\"ident  "@(#)tmac.eci.sh: 1.27 Copyright 89/08/22 14:59:42 Chris Lewis"
X.\"endif
X.so /usr/lib/tmac/tmac.m
X.tr \(bs
X.ds}2 Elegant Communications Inc.
X.dsIn \*(}2
X.dsBU \s+2\(bu\s0
X'lg 0
X.desR
X.\"Output request sequence - thru .tm - caught by backend
X.if t \{\
X.\"M is illegal C/A/T opcode - triggers troff2 to start collecting.
X.\"newline is terminator
X'tm M\\$1
X\}
X..
X.de eX
X.ie \\w'\\$1'=0 .ds ee
X.el .ds ee "\\$1
X.DS \\$2 \\$3
X\!.fp 1 C
X.\"\!.lg 0
X\!.cs 1 24
X.ss 24
X\!.br
X..
X.de eE
X\!.fp 1 R
X\!.cs 1
X.ss 12
X\!.br
X\.if \\w'\\*(ee'>0 .FG "\\*(ee"
X.DE
X..
X.ds HP +4 +2
X.ds HF 3 3 2 2
X.OH "'''Elegant Communications Inc.'"
X.EH "'''Elegant Communications Inc.'"
X.PH "''''"
X.if t .PF "''\s8481 University Avenue, Suite 602, Toronto, Canada, M5G 2E9 (416)-595-5425, FAX (416) 595-5439\s0''"
X.if n .PF "''481 University Avenue, Suite 602, Toronto, Canada''"
X.\".OF "'Page \\\\nP''\\\\*(DT'"
X.OF "'\\\\*(DT''Page \\\\nP'"
X.EF "'\\\\*(DT''Page \\\\nP'"
X.de nH
X.OF "''''"
X.EF "''''"
X.PF "''''"
X.OH "''''"
X.EH "''''"
X.PH "''''"
X..
X.de aD
X.SP 3
X.DS
XElegant Communications Inc.
X481 University Avenue,
XSuite 602
XToronto, Ontario
XM5G 2E9
X
XPhone: (416) 595-5425
XFax: (416) 595-5439
X.DE
X..
X.\"	Appendix Macros
X.de AH
X.if \\n(aH=0\{
X.nr aH 1
X.nr h1 0\}
X.nr;1 0\\$1
X.if!\\n(;1 .)D "aH:bad arg:\\$1"
X.if2-\\n(;1 .nr h2 0 1
X.if3-\\n(;1 .nr h3 0 1
X.if4-\\n(;1 .nr h4 0 1
X.if5-\\n(;1 .nr h5 0 1
X.if6-\\n(;1 .nr h6 0 1
X.if7-\\n(;1 .nr h7 0 1
X.nr h\\n(;1 +1 
X.afh1 A
X.ds}0 \\n(h1.
X.if0\\$1-1 .as }0 \\n(h2
X.if0\\$1-2 .as }0 .\\n(h3
X.if0\\$1-3 .as }0 .\\n(h4
X.if0\\$1-4 .as }0 .\\n(h5
X.if0\\$1-5 .as }0 .\\n(h6
X.if0\\$1-6 .as }0 .\\n(h7
X.nr Hu \\n(;1
X.HU "Appendix \\*(}0\\ \\ \\$2"
X..
X.rm )k
END_OF_FILE
if test 2036 -ne `wc -c <'tmac.t2'`; then
    echo shar: \"'tmac.t2'\" unpacked with wrong size!
fi
chmod +x 'tmac.t2'
# end of 'tmac.t2'
fi
if test -f 'upload.sh' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'upload.sh'\"
else
echo shar: Extracting \"'upload.sh'\" \(1284 characters\)
sed "s/^X//" >'upload.sh' <<'END_OF_FILE'
X:
X#@(#)upload 1.1 89/05/18
Xrlp -dgate!AppleLaser << 'END'
X
X/savearea save def
X
X/tmp 1 string def
X
X/myscale {
X    2 mul round cvi
X} def
X
X/dumpwidths {
X
X    dup
X    (                                               ) cvs print 
X    (\n) print
X    findfont 18 scalefont setfont
X    0 1 255 
X    { 
X	newpath
X	/i exch def
X	0 0 moveto
X	tmp 0 i put
X
X	tmp stringwidth pop /width exch def 
X
X	%	Set current point again.
X	0 0 moveto
X	/curx currentpoint pop def
X
X	% retrieve bounding box info.
X	tmp false charpath flattenpath pathbbox
X	/ury exch def
X	/urx exch def
X	/lly exch def
X	/llx exch def
X
X	% calc left bearing as leftx - curx
X
X	/lbear llx curx sub myscale def
X
X	% calc height as upper y - lower y
X
X	/heights ury lly sub myscale def
X
X	% calc right bearing as width - upper x
X
X	/rbear width urx curx sub sub myscale def
X
X	i (    ) cvs print (,) print
X	lbear (    ) cvs print (,) print
X	width myscale (    ) cvs print (,) print
X	rbear (    ) cvs print (,) print
X	heights (    ) cvs print (\n) print
X
X
X    } 
X    for 
X} def
X
XFontDirectory {
X    pop
X    (                                                  ) cvs print
X    (\n) print
X} forall
X
XFontDirectory {
X    pop
X    dup (                                              ) cvs (cmr10-300) ne {
X	dumpwidths
X    } if
X} forall
X
Xsavearea restore
XEND
END_OF_FILE
if test 1284 -ne `wc -c <'upload.sh'`; then
    echo shar: \"'upload.sh'\" unpacked with wrong size!
fi
# end of 'upload.sh'
fi
if test -f 'utils.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils.c'\"
else
echo shar: Extracting \"'utils.c'\" \(2125 characters\)
sed "s/^X//" >'utils.c' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X		All Rights Reserved
X
X    Permission to copy and further distribute is freely given provided 
X    this copyright notice remains intact and that this software is not 
X    sold for profit.
X
X	Project:	Generic Troff drivers
X	Module:		utils.c
X	Author: 	Chris Lewis
X	Specs:		Utility functions
X */
X
X#include "defs.h"
X
X#ifndef	SVR3
X#ifndef	lint
Xstatic char SCCSid[] = "@(#)utils.c: 1.7 Copyright 89/07/17 10:58:36 Chris Lewis";
X#endif
X#else
X#ident  "@(#)utils.c: 1.7 Copyright 89/07/17 10:58:36 Chris Lewis"
X#endif
X
X#ifdef	DEBUG
Xdebugprintf(fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
Xchar	*fmt;
Xint	a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; {
X	char buf[BUFSIZ];
X	sprintf(buf, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
X	fprintf(diagFile, buf);
X}
X#endif
X
Xchar *skipblanks(p)
Xregister char *p; {
X    while (*p && isspace(*p)) p++;
X    return(p);
X}
X
Xchar *gettok(p, bp)
Xregister char *p, *bp; {
X    p = skipblanks(p);
X    while(*p && !isspace(*p)) *bp++ = *p++;
X    *bp = '\0';
X    return(p);
X}
X
Xinterp(buf, xlator, suffix)
Xchar *buf, *suffix; FUNC xlator; {
X    register char *p, *ep;
X    char token[512];
X    p = gettok(buf, token);
X    if (0 == strcmp(token, "include") || 0 == strcmp(token, "binclude")) {
X	int binary;
X	FILE *inc;
X	binary = (token[0] == 'b') ? 1: 0;
X	p = gettok(p, token);
X	strcat(token, suffix);
X	if (!(inc = fopen(token, "r"))) {
X	    char nbuf[512];
X	    if (token[0] != '/') {
X		sprintf(nbuf, "%s/%s", LIBDIR, token);
X		inc = fopen(nbuf, "r");
X	    }
X	}
X	if (!inc) {
X	    fprintf(stderr, "%s: cannot open file %s\n", progname, token);
X	    exit(1);
X	} else {
X	    if (binary || !xlator)
X		while ((binary = fread(token, 1, sizeof(token), inc)) > 0)
X		    fwrite(token, 1, binary, stdout);
X	    else
X		(*xlator)(inc);
X	    fclose(inc);
X	}
X    }
X
X    else {
X	fprintf(stderr, "%s: unknown directive: %s\n", progname, token);
X	exit(1);
X    }
X}
X
Xchar nodename[25];
Xgetnodename() {
X    FILE *uuname;
X    int c;
X    if ((uuname = popen("uuname -l", "r")) == NULL)
X	strcpy(nodename, "<noname>");
X    else {
X	fscanf(uuname, "%s", nodename);
X	pclose(uuname);
X    }
X}
END_OF_FILE
if test 2125 -ne `wc -c <'utils.c'`; then
    echo shar: \"'utils.c'\" unpacked with wrong size!
fi
# end of 'utils.c'
fi
echo shar: End of archive 1 \(of 6\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 6 archives.
    echo "Read README to install psroff"
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0

-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.
Use a domain-based address or give alternate paths, or you may lose out.