[alt.sources] Psroff 2.0 Part 11 of 16

clewis@ecicrl.UUCP (Chris Lewis) (11/17/90)

Submitted-by: Chris Lewis <clewis@ecicrl.uucp>
Archive-name: psroff2.0/Part11

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# Contents:  fonts.lj/I.10.pk.UU fonts.lj/S.12.pk.UU opt.c
#   utils/Makefile utils/fonts/cmss10.pk.UU utils/pk2ps.c
#   utils/showfont.S widths/Makefile
# Wrapped by clewis@ecicrl on Fri Nov 16 23:36:54 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo '          "shar: End of archive 11 (of 16)."'
if test -f 'fonts.lj/I.10.pk.UU' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fonts.lj/I.10.pk.UU'\"
else
  echo shar: Extracting \"'fonts.lj/I.10.pk.UU'\" \(7133 characters\)
  sed "s/^X//" >'fonts.lj/I.10.pk.UU' <<'END_OF_FILE'
Xtable
X !"#$%&'()*+,-./0123456789:;<=>?
X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Xbegin 644 fonts.lj/I.10.pk
XM]UD``*``````````!":N``0FKN`.J0```!4&"/<<8\<.&'#!X`^H````%0@'
XM\QP.'APX<,"`X`^S````(@<'[QT<A0P8*(X`H!HA````#`D>_!UB;T4UXD7C
XM-N,FXR?QV/-48F#@'2(````5#@S\'!@8\/?'S0T$!!`0@(("$!!`1@8@(+!1
XM(P```",?)?T<QB<L<V/'\G+'-CQR<L<V/'\G+'-CQR<L<V/')RG0+2^R<L<V
XM/'XB<L<V/')RO2+0DG+'-CQ_)RQS8\<G+'-CQ_)RQS8\?R<L4,!/)````!43
XM(?T>SQTFLC$B@4%185%146%A,F%#\R830C44,S4;-!M2&YNJJYP17!,\%"46
XM%#,T%2-$%2,U%2,7%107%"46%!85%!@C$BMM/QO`;R4````C&R'Z'E33)",=
XM$S)1PS)CA#-Q&!,R@9,S@8-#@7-3@7)C@6-B@6-R@5."<5.384.R45+0%!4]
XM%%-DT#4D&S4E&R4V&34G&#4W%S8H%C8X%B<X%3<X%#@X$SDW$SHW$CPF$RT"
XM43/1(Q0M-%#`5R8````@'1_]'</<(AVB,=GR0=CS0=@S'9)!V2,=GS(=HQ&)
XM@[2SPK2RL1.QL2.AL32!LD.!HE-QHV-1LG-!LX,QLX,APY2A(Y.A,Z.10W(3
XM<6)20T*5A7#@$2<````,!@SY'!CWS000@A!&(-`H*````!`.*OP>T<&RLK+!
XMPK*_*_*_*SOROSOB*^<\XRT=\M+1TM$!`7#0*RD````0#BH`'G$!`0$!TM'2
XMT=XBP^?"XK/[*_._*SLK.RL[*_*RLK*RLK'0P"@J````%1$2^QZ>(M(9)14B
XM-!-#,B(WB_2C$1)T(2-#,C024E&2TATO*<`@*P```"`;'/P7TN(ML]OD+;/;
XMXBP"G#V^0ML]OC+;/;+2X!`L````#`4,_0,[WG"$0B$1`,`*+0````X,`O\)
XM'9'@"BX````,!`3\`W?VP$<O````%1<I`![8+7/7+7/7+7/7+7/7+7/7+7/7
XM+7/7+7/7+7/7+7/6/7+7/7+7/7+7/7+7/7+7/7+7/7+7/7+7/7+7/6/7+8#0
XM+S`````5$1W\&X6C,W)B;R@D*3\CDR*CXQ.FY*,3HB.3+RHR*B,I,RDE)R8F
XM*"0J6=`8,0```!4-'/P;LI-V4C.N(YY3GE.>4Y.D3<`T,@```!43'/X;EK)3
XM@8-O&C]$@_-8-#D])-(]+STCTCTCTCTBTRTRTR@7*18:%AL5T4T4TD#`,S,`
XM```5$AW]&Y6R0X%S88->)&1#<](]$](M(M$[;4/3\]+B0SA"]70D@S.$,:-1
XM@W)3IH#`,S0````5$AS^&],M(M+ST4T!$\$CL2.R(Z(SH4.14X%C<6-Q<V)S
XM88-1DT&C/5Y+/1/22K'`,34````5$AW]&V)S:WF)GD'3'4$UD1)"@F-_&#TC
XMTN)".$+TA"2#,:0QHU&#88*"0[60P#HV````%1$=_!NEHT&"<6)C4F1"=#-S
XM0M$]$M$S5C$D)4<C,1<R])(N(Z,3DRXBHR*3,X)2<U)R<D*U@,`O-P```!42
XM'?L;,=/],M(BP3'!0;%!L=0=,=,=,=,M,=/RTBTO/131\]'B30XDTBT`T#8X
XM````%1(=_1N5LE*!@F*"7B*B\SDD1R94)V(I?'N((V8E9"A#*C,K(N(L(BP3
XM*R0J%2@G-2IHP#PY````%1$=_!N%HE&"8F*"0X(SDC.3(J/C$Z,3E!.3(X0R
XMA$)A$U%1(V4CT3T2T30H)$8T1B4V)A<H%#I:D!`Z````#`<2_!%"1/,][S-$
XM)(`7.P````P(&OT14E3T/:-/13?Q;Q;Q86%PH!FX````#`@>_1127T4M+C%N
XM,EXC4EXS3C1#4,`0/0```"`<#/T/+<+>#3WBW"#`*;D````4$!W_%*+0]-`@
XM4.,=$M$=$M$=$M`L/#P]`X,CAY,BHB.10F-G8-`B/P```!0/'?H<5V)B09(B
XME_AI.SL[.RPM'1TM\=XA!9\[3"O`4D`````@'!W\'-!]4W+1+!P=(:'4&!UA
XM882!47)"<4%B87$Q8H-!,5.#4>(14Y-2XU.341%BDT$A8W1!,6)A$D%!<D$C
XM(D&%1''?'?'?'3.2EM"JP#]!````'QP=_QS5'>+<\]OTVEV2%-@237(DUQ--
XM8C36%%U"5-0633\732&$TAA=#2T!I,\;2QQ+'02?'11TQ4E\P#5"````'1L<
XM_AM-706#M*.DI)2SGTM'3#CTM(2DE)2D=+TL24I*2>)+1^-,1TM(2DA*24E&
XMUH#`0$,````>'![\'-!W&S8D*3H2*2T$<](V/3-?/5)#UA1-84/7$^)-KD3;
XM37$TUA7SUA8]07/3&3TAHM`L*QTC<M9\P#Q$````(!X<_AM-736$T$L\3#OT
XMT#I-!(XTTCA-)'32-TTS?B321TTCA-%']-(X31.4T#I,2DL[2SQ).M7`P#I%
XM````'!L<_AM-J%I(3#XX30&$T1A&%QCT8=-%+31#TKTT4M/B1ATT87%_32%_
XM31&$T"A,*$PX2E394,`N1@```!L:'/X;39A92$L^.$P830&$86&/1ATD4M)$
XM/1O212TN-&'1Y4V$V5U-#0#`1$<````A'![\'-!W&S8D*3H2*2T$<](V/3-?
XM/5)#UA1-84/7$^)-KB3;3-/34TU$---%\]-&\])'/06"T$HJ(BLV)1T6T-`A
XM2````!\?'/X;32R%E<Y$I,Y4I,`4WD2DSE2DQ*35E8PL4-`620````\1'/\;
XM387.1,Y4SE3.5,35C4#`(TH````5%!W^&WT,72Y$TN5-+E32](-4?U1'1$@U
XM.18[%#T%T,!+2P```"`?'/X;30686UI,/$P=%+'22ATTD=-)'42!U48==%'8
XM1#UT--9#$4U4(23501-=15341DU$=-)(32])31]*302TM,2UIFQ;,,`B3```
XM`!H6'/X;31Q=3D34Y4U.1-5+'B5,'U2Q9*)4HU2$+7+06$T````F)AS^&TD!
XM*84!%L$4`07?$4T13?$4P23/$TH23?$TD331-(%$T41Q1,\51A1-\5115-%D
XM,6319"%TP70A9-\701=-%UA-&$A-&#E,*#A,1RE8E27%T$).````'Q\<_AM)
XMBH6TMK+!%+'1%:'?$DH<\42!WQ5''?%D8<\81!WQE#'1E2'1I"'!MM\<7?'4
XMT0$#P@$"Q`$!F<&0P$%/````(!P>_!S0?5-CT3D\/"H]`X/2-CTS5--$/5,T
XMU3,]8RXDUHX]9!XDU4,]1$/4-4TD8]%'30.3P[.3TC4]9]#`*E`````<&AS^
XM&TU<5TI*.4I.*$L^)TM'2SA*.4DY2$K0T.--CE383974S1#`6%$````@'"7\
XM'-!]4V/1.3P[.CT#@](V/3-4TT0]4S35,SUC+B36CCUD%-8R]-5#/41#U#5&
XM-D8U$Q4W-!43.3(6$CLQ%DTD0W&Y<=4G'5)AUC0M:==]AMI'P$!2````'QT=
XM_AM-335ST4E,2DM+._2TGTM*2SM*/$D]!'30T--'/22#T4A-!)/024OD24Q)
XM1A1*115:-1''-!VE,,`Y4P```!<6'OX<IE&"8B)RDW*C8L)>(\)$P5357574
XMG1O+R]&=1=5-;S3B'1-!T24L-#PE2B8B)C<5><`L5````!X<'/P;/<)'5D(I
XM22(:21(J21+QM)$AI*$1M*'0XTVN5-KE3:3;74TYV"I5````'QL=^AO4I%M'
XM32CC31CE31CE31CB31KSP;.QTY$!$H$!,T(!90$0R#]6````'QT=^QO(DVT$
XM=-(H32&4T1M-`;],'$L=!:'1])'2]('35AU48=5%'61"UD0==2'90AV?01VO
XM7<\]WRU0R&57````*RD=^QO$M9-;6D=+6RA,2QE+6QE+6AI*$4H:2A%)*E@2
XM21Q($E@<]'%$<=#T851AT44611TE0611TT,74QU$,80QU/0AE"'502E!'601
XMI!'6:EV$M=A,/9/0/9/0+:\M$M/`1E@````?'QS_&UQ*AX7%D]))+36!U4<=
XM9&'75!V4,ME2';01W%WDWO7=;;$DVA--D477)4UQ9=4834&5TAM-$K7"T$I;
XM9J;#R#M9````'QT<^QO)@VT$=-(H71&DT!M;'02AT5D=%8'31QU%4=9%'64Q
XMV$(=E!':;;]-P]SD3</<3<77S0#`/%H````9&1S^&VUE6D8[1RM(*E@;21I)
XM&DH977373737773737377721I)&DH92QE**$L82R=,)TI&25;6;0&EL````,
XM#BG^'G]_<KY2OE*^4KY2OE*^0L=G<-`:70````P.*0(>?W_"Y;*^4KY2OE*^
XM4KY"=V=PX!!>````%0H&]QP$`X&PQD"@$.`18`````P&#/H<!"$((000N^>,
XMP"MA````%1(2_1%7DU*$4G-C8G/2\ZAT0V-38G-3<T\X,T=#1A$R$C02,2-D
XM,\`O8@```!<2'?P<)M%-'E/1XCTC-(,20F1R1(,_.B/B.CXA.C(Z(SDS.#-(
XM)"(D)A5(T"%C````$@\2_1%V<S-25#)C,V)"SB.^(]+2H2.!0G%B4890P"]D
XM````%Q0=_1S1;33ETST^(Z0S@D(38H13@U.34J-.(Z,^(Z-?*C4X1B=()"%)
XM0V+`)64````2$!+^$7:#0F)R0W,CDB*B$Z(=(3SB/1+1*Q,I%"@6-"E6P")F
XM````#1(=_QS%LR.20X,T<U*.(]'B.[OST>4]'E/1/22Z@,`[9P```!46'``2
XMU3M"(B@C(1(W)207-3KC-CHU/"4M`S+0$DTAU_+7O,G1<J-AT"4M`S\M$E+"
XM<;*2<\>@P"9H````%Q0=_QQ6TTT^4]/B/4,UDQ)"A&-O1S;C.#7E.#4X-D="
XMDI#0%VD````,"AW_'(+W-R!,9D<VY3;E-C=#D=`@:@````T0)00<`0+]/2![
XM?$T\Y3SE/.4U)35$-4,W(SE9P#5K````%A4=_QQ6U$U.4]3B/5-(8V2#8I-A
XMLU'#0=`S'1,3T8Q"/#-+-#LT2C4Z-4@W.#94DH+0%FP````,"QW_'%9TY7-^
XM4WY3?E-SA$D@T"EM````)"$2_Q$V-F:$(5)!4H5C$F-O2$@VXSDY->4Y.34Y
XM.39(2$*3DY#0'FX````7%!+_$38UA!)"A&-O1S;C.#7E.#4X-D="DI#0)&\`
XM```5$Q+^$8:R4W."4Y,SLC+"+B/&XL,BPC*S,Y-3<W-2MH#`+G`````7%AH`
XM$48TM!)"I'*$@W.3<Z)^(Z/B4Z-O.3<X-T<X,20J,TSB/5XSTYT`P"YQ````
XM%A(:_1&$46)!,D-A$S.#/SDRXCHQXCHS*C,Y,SA$)T8D(3A#/2XCT>,\D=`:
XM<@```!`0$O\1-B-V$W0D5#-D,GXSSE/#U)I@T"=S````$`\2_Q%F(4)C,H(Q
XMD3*1,X$UN(B(Q"&3+QHB*"(X$R$5)!-ET!UT````$`L:_!EN(9\H*#=%OS-^
XM4W..,U$O-!0C%D38'74````7$1+\$65B1T,X/E(X,N,X,_-T,V124116)L@I
XM=@```!83$OP1A')(-3@F.!<W)S<811HU&O-!LS'0,AT#$=%=%-(]0M0<V#QW
XM````'AL2_!&"@G)&1C0X)R4W-Q<V1A?S41-1@T$C09-!,D&3,4(QLR%#(;\Q
XM%3$<1DU'/3@@$2@@$1D;P"YX````%A82_Q$X.%54DV+#4=`T'2,ATS$M1-4]
XM<]5-02/2$TT!4\%SHG.$=%=)(,`X>0```!87&@`12$=D@Y."HX&S<K-QQ%'1
XM-1T?-!TC,=0R'4,1U5U4UCV"V/'8\=$T'1]#'2,BU$U0T"=Z````$A$2_Q%-
XM0V-1<U)S47-A8W%3T]\]-1<V%C<5-Q4X%3<D-C34R`GV````%10!_@O7X`^L
XM````%0X$^1L>!/XV/Z`XX`ZK````%0L$]QQ@WC_'L&#0$/X````@&QS^&M["
XMP#CJTL`XP%32````(!L<_A>GU2<M$K*QTAD=07'4$14=03%!TQ03'3%A(=(7
XM$1TADM$:+0&R_!PK'0*AT2D=(1%QTA(6'3$Q0=,4$QU!41'4%QU!D=(;*RT2
XM<M5ZP!]^````(!L)_@Y5TQ.-(2O0$45+6%A;14$="R'2@QTU4,!,^P```"HE
XM'/X7VBHMA(362$USD]=(362$UDA-<Y/72$UDA-9(37.3UTA-;TA-I(3:.3VD
XMA-I(3:2$VCD]I(3:2$VDA-HY/:2$VDA-HJ+(3/T````J)1S^%RHMI(3:2$VC
XMD]I(3:2$VDA-HY/:2$VDA-I(3:.3VDA-KTA-9(37.3UTA-9(362$USD]=(36
XM2$UDA-<Y/72$UDA-@J+:T#N]````$@LE_1PU4D$S42)E]681.2DY*BDW(B0S
XM(R0Q-2'B-3$E,30C(S0B)SDJ*3DI,19O56(A4S%"53"8"5\````5%0,`]]6(
XM"7P````,`BG['MD8"OP````9%!7^%`\@P"L\````(!D8_179/73636363636
XM3636363636]-I-I-I-I-I-I-I-I-I-I-H\@K/@```"`9&/T5/:3:3:3:3:3:
XM3:3:3:3:3:]-9-9-9-9-9-9-9-9-9-9-<]G(+%P````5$"G^'O+2XBTN(M+B
XM+2XBTO+2XBTN(M+B+2\M+B+2XBTN(M+B+2+2$-`;>P```!4.*?T>I(.CLK[#
XMLK.3A-/3PL[#PL/#U-@;?0```!4.*?T>33T\+.P\+#P]2#H[*^P[*SDX2L`W
XMNP```"`9'?P<U%UB0=,V'1-QT2D<.1PW.S<\.!T//8XCU;U.,]CC/4>A6:%"
X/18%15T-1,SB$=8#U]O;V
X`
Xend
END_OF_FILE
  if test 7133 -ne `wc -c <'fonts.lj/I.10.pk.UU'`; then
    echo shar: \"'fonts.lj/I.10.pk.UU'\" unpacked with wrong size!
  fi
  # end of 'fonts.lj/I.10.pk.UU'
fi
if test -f 'fonts.lj/S.12.pk.UU' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fonts.lj/S.12.pk.UU'\"
else
  echo shar: Extracting \"'fonts.lj/S.12.pk.UU'\" \(6583 characters\)
  sed "s/^X//" >'fonts.lj/S.12.pk.UU' <<'END_OF_FILE'
Xtable
X !"#$%&'()*+,-./0123456789:;<=>?
X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Xbegin 644 fonts.lj/S.12.pk
XM]UD``,``````````!":N``0FKK!3(0```"8E,?XDV!UR_6+6\M;RUN(M;RUO
XM+6\M;RUO+6\M8L0L4L,\4L),0L(13#+`(DPBQDP2QDP"R$LLCTHLKT@LST8L
XM[T0L]3+0]"+2]M3TUO+*P%8D````,BL5_11GU6NM"W0WHX)3=H*R0;5BT!,=
XM!4+2$AT5(M,1+2?5+4;5+476+575+674+5;4+5?2(1TR)=$2'2)%T!,=`F6Q
XM0K*&<U*#IS1[T*MM5V"0'24````G(1S]&:8;3UL7L?6T$)S8"<&T];%['UM!
XMIL!%)@```"<@%?T49=1$K#8F23<H1RD;-2D<0RH=!"&ATC$J'26QTTL=0['4
XM2AU%D=,A.ATA))'1(T@L)3D;)T@8.4@S/'9=1,@Y*@```"<8&/D7+775,3TS
XM,]$U/#<Z.3@[-CT#0](R/4;6]-9M0R/2-#T#8[.#DZ-SPU/1,STS$]5=<I@)
XM+0```"<>`OP,TL`Q/````"8='/P9WBW$VDVDVDVDV5V5V4VDVDVDVDVO3>3>
XM3>3>3>3>7=7>3>3>3>3>3>+(,3T````F'1S\&2WDWDWDWDWDWEW5WDWDWDWD
XMWDWO3:3:3:3:3:3979793:3:3:3:3<+>R!]#````'QHB_B']QDM630-DT29-
XM(6]-(N-4TQ[65-3]*[!91````"HE(_XBQAU_/5]=,172$DT1-=`43/%5SA9,
XMT77,&$RQE<H:3)&UR!P$QQPDQ2PEQ!Q$PRQ%PAQDP2QEP!R$LLA:'*22RE@<
XMQ'+,5ASD4<]4'00_UQV0P$](````)R`D_2+(V38]4Z/2/#Q-%*/3.4TT=-5%
XM755$UT/UUU+TV4'U0<%*XDT4KT'!2OV5%-E"]==3371%U55-5']--)312TQ-
XM$Z/5-CV8P,!"2P```",>(_XBT>(M[B3<;;\13:$EV?$TV!1=?Q5-8675\734
XM&%T_&4TAI='QM-`<7/'02QT5KQTDD=-8+31TT53YG$@;3@```"$<(OXAH.-E
XM'<XA6Q5>)=5>(5L=SD%EH)@14````"4@(OXAUNLU2D1?I$I`R$Y2````)!TB
XM_2']\DU&)=8S76)$UB1=8D75)4UA9-4674%UTQA-Q=Q=Q-Q=Q-TMX=X=X=\=
XM09'5&!UA<=<6'7)1V"0=@D'9)!V#,=9BWAWQP"E3````$A$:_A27<V)2T1TA
XMTATBTATN,M(]%-%-%=!L?&T%T?/2+1+2'$?`*U0````G("/](D715IJ4J*/&
XMPB9&1B$H1$@Z-#HK,CL<,CW"(MWVWNUTV?TXP#E5````)!TB_2%_T];D39G4
XM0D%,1$-(1D5%]'1D-(1T'E6$=12$=#]'1D5&14A$0TQ"04U)VN1-;]-@P#97
XM````)R`B_2&/T]GD3164E?)(2$7G1T='-T<X]&1DE%14LU13T#1$/2,T,]1!
XM04V(W>1-G].`P$U8````)!\C_B*YUT5-,[/0/0.STCE-)'3415U%1-9#YEUE
XM--9$745?341_3223TCOST#T"T"T3LW\7*R<1%QL7$A<I)Q(8&1@2J:/YF2"X
XM65D````J)2/^(=GQUS30%%SQ5,X67,)TS!A<HI3*&ER"M,@<!<8L%,8<)<0L
XM-,0<1<(L5,(<=,`<A;')2ARED<M(',5QS48<Y5'/1!T%,=%"'241T_75\]<<
XM8,!76@```!H:)?XCQ]2]$V3"HZ'0.3LX],."T$XMH]E+94DU(T<Y$D8[$44\
XM$40]!4305#T5--%3/20TTD--(T310TTD--(T311$T38]`W/#D[.3D\14T;U&
XMT9`V7````"<>)_P?LBL$KDKDKDKDKDK5K5K4KDKDKDKDKSLDLDLDLDLDLEL5
XMLDLDLDLDLDLDLB"VTI@U7@```"<>)_P?*R2R2R2R2R2R2R6Q6R2R2R2R2R2R
XM.O2N2N2N2N2M6M6M2N2N2N2N2N2P(-+2B`E?````&1D#`/72T#MA````(!L5
XM_A2F`5-"`2-R@5.285.C44.S43]+-!/TPS%$PR%$U!%$U5]-1_/4@L$3@Y(C
XM04-34C%VE##`66(````<&BW^(M1=8E+3&"T1DM`:.QL_H<.1T#D<.1T#D=`J
XM'#D<.A5A*Q05/!1A.O'0.?'01^,=%&\=%''1.!T$<1'#@1&SD1&CH2&#H4)3
XML671\=OC';XQW,`U8P```!H9(/\4=<%8L4J13'%#<W$RL6%!PE$_'1%!UQ,=
XM?Q(=CQ$=GB+:XAVN(MGC+9XBVO&PP#]D````%A0C_B+031)"L7&AD8+4XRU3
XMU$TUTUU$TUT#%*-#DV-S@F.27TDDXDHC]+%$HD2A8Y)CD8*"@W&C0M!:T!UE
XM````%`\5_126:52CL[.TL[`0'22^0]\].",U)V3`.V8````6$RW](M`=3B'5
XM?"0:(ED=0=0=0M,M0=0M/RT_+3XBT^@M0]-----M&-"-!])=,]3B*A4L%!T4
XM<,`Q9P```!D5(/X4)'5!,D)",3,A<A%#$81$E/0Z/C0Z-.,Z-.,Z-#HV*CU?
XM/4XSU.,]4G#`16@````7%"/^(L71(RPE*B8I)S<W-C@U2#4Y-$DT.C\THS.D
XM\DI"U?'5+TI".D)*0DHS24/TDT2#8X-C<W-RDF*B4L(RT4S0'VD````2#!7]
XM%&*?..,XXCCB.#DW$381-Q$V$R44)!95P#9J````'1<5_11BHW.&8V(D4V%#
XM8U'1-!TC,=(R+375K0-4KS@Y.3@Y-1XA.342.B02/"(4+0-`P$!K````'1<C
XM_2)CV3UTU_/8XCUTU_/737\]=-?SUTU_/674$CTR(](C30)3PF.R=)*3@J-S
XMI%/#0]`S/103TS$M4\`T;````!X9(/X4@K*?.CCC.CCC.CCB.CDZ-!\TDT%$
XMA$%$<2)!,Q)",C%#)7-?/8XSV.,]DMK`,6T````9%A7]%$3"%[NS]#LU.R8Z
XM-3LF.C8Z)SDG.3<X.#@I-RDW*C4L-"T#(M$Q+335P$)N````%A,M_B+!U.(=
XM9Y11@R6#TCTDT>)-+ST_33,6HV&"%X+3+3+4'4+4'4Y"U//432?1?0G0C1;2
XM33\Y%BLD'11@T"IO````&!45_A2FTT.3<W.34Z-#M/)+3B%,C\04PR2T,[-#
XMHV*3<W.31,:@P#)P````'!D5_A1=<]DMDR85&1<6&!@5*!@5'4)1U/%AT_)2
XMTO)BT38]#R<\-SPW2CD[&BC`-7$````:%B#^%-!=(D+0)BLG.2@X*4]CE.)3
XMI.)#I%.44Z-CDW2#='*#(4.3-;\]7C/5XSUBU\`J<@```!P9%?X4G3?5;59%
XM2S@Z.CCSLWXCPVXCPW.S@[*BHZ*3PG+2)#U5TL`C<P```!86%?X474/6+6,F
XM'!@;&1L8+7\M;C+6/6\M;B/5/7+1T#)T````&Q<5_A0TPD$RI"%#E1%#I5.T
XM4\-#TE/17B,!`4\P$!7ST6/!<[&#H:.!PU(!%J#`3W4````>&"W](M4=GC'9
XMXQV>,=D==]%"$CLE%"@U%B8V%R0W%R0H%S(W&#XA.!AO@8,3@8(R@7,R<7-#
XM87)B85."44.C(3/1?7\=GC'9XQTPP%)V````'QH?_A0UU!(3/2$Q0]`93!H[
XM&SH<2!T3<=(V'31!U30=4S'601V$V3VDVCV4V!$]<235%#U!4],632%ST1@]
XM`92QLZ'$@=$T$QTC(3'41,!7=P```"`<+?XBU^(=WC'=XQW>(=!*%B03*!9"
XM%#<6410W%U4W&$4V&C0W&B4W&A4X&A7S<;%/.!H5-QH6-QD7-Q@8-Q<:-1<<
XM)18=$S$SU7VN,=WC'=\=4,`Z>````!\=%0`44=8F'611UE,=A#'9/R';+Q'"
XML2\;+!(;*Q(K'!(J*Q,J*B,I2"0V,29%HK:BJ'6*5UEX"7D````.`C'Z)-K0
XM'WH````8#S'\)+23L[.^`2.SL[.4`0/3T]X!(]/3TP$$V!][````&`\Q_"1`
XM$#T]/>`2/3T],!!).SL[X!([.SLY2\`L?````"<@%OT65M<4G5$[U!(V32(3
XME-`A*TLA+023$M)&,AU+,=64'78`$8`SF`Y]````)R`6_1;6#&U@QM;(,'X`
XM```8$3']).(M/B+3XBT^(M/B+3XBT^(M/C+3XBT^(M/B+3XBT^(M/B+3XBT_
XM+3'`57\````G("7](U:FBFI38T-C,X,C@R*FHB*TLA.TM>+0+03CWUW3\2W2
XM(]LS+;)#V34]<W+7*#U3D],[/1/0/#TCH]0X/6-CV#0]HR/<(BW6WO0!#RT@
XML!^A````&1(M_2*1Q"P_3!:R$A*#(B-3,C,D0D9B8NUH*(`>H@```#(K$OT4
XMJ"L?*Q\K$K$K$RW*XZXJ\J_RK_*O*+`?HP```!D2+?TBCM8H)B9D)$(S(S4R
XM(C@A(2ML'TPRQ1B`'J0````R*A+\%'*N\J[RKBKBK3K=L3L"L"L/*P\K`JC(
XM-:8````9%!C^%RU4TUTB%-`C2R4Z)D@H-RE%*T,M`R\M%M`R*T,I12@W)D@E
XM.B-+(4T%TDTRU<`UJ````!D4&/X7U2TTTET$$K0RHU*$8G."5)(TLB/0;]$B
XM/0(TLE22<X*$8J-2M#+002TETTU2B`FP````&1D#`"72R!VU````(1H?_1WM
XMDME=<Q+7(CU3,],U/1-UA:T=*)#`';8````A&A_]'9C2T:6%<]$U/3,SU3(M
XM<A/77MG9(,`OMP```"$8'OP:O0C3=-5-8]<]<]@M@]CRV#V/+9`E_9/9\MD]
XMDMD]D]D]E-E-C3O0P"VZ````)QX>_!J]:-ETVTW#W3W3WBWCWO+>/>Y2WSW_
XM+?/?+?/?/?/?3?3>V;U@R"V[````)QX>_!K6O9WDWTWSWSWSWRWSW_+?/EWR
XMWC_>+>/>+>/=/=/<3;1]F-:PL"^^````)QXG_!^\><ETS$S3SCSCSRSSSRSS
XMS^8M`]`M`]`M`]`]`]!-!-#)O'#5_1"X+[\````G'B?\'\>\G03030/0/0/0
XM+0/0+0/FT"SSSRSSSRSSSCSCS4S$?)G'#?_1$*@,R````"$:#?T1V>J](,`8
XMS````!D2%/T59JI\71/],0@_'3/17'JF8+!GS0```#(K+_TCQ9U,'/65RTP4
XMR$Q4Q3R3PSRSP3S3L\\Y/1."TR<],V+5)3U30M<C/7,O+9(3V5Z-M=D_$MDB
XM/7,RUR0]4U+5)CTS<M,H/1.3SSL\T\$\L\,\D\5,5,A,%,M97/P=2<70'<X`
XM```6#R[](G'>8]Y!A"$D$!$4(22.(=X!4]YA<-`HSP```!8/+?TB<=Y#WB&!
XM45$0(.-QWD/1`?'>0]XQ<"`145&.(=Y#T7#`.=4````5$R_](]$](3'0(CP2
XM2R)+(RSRT_/3XRT^0],M/F/3+3Y#T^,M/ST_+",K0BM"'#(M`3'2/1#04]@`
XM```9$BK])=\J0B@D1R8G)S4H1"=4)R$C-R$R*"(B)S(B)R,A\W(V8S;B8D93
XM1O4E9#5N)"9C-F\R<Q(R<B(C<B\Q)S,A)R16-3<G)B@T*)GB+<"`V0```#$J
XM+_TCU(`2T=U8793136/5/4+9+2+;+0+=*RWRGR`1)_(!,E\@%2,M.J(BT48Y
XM(BT#=)(BPX22$L.BM/M-I.6DVR$J/:(BI-DB*DP9(BL\&2,K.ADD+#@:)2Q$
XM*B8M%L)_(!$I+?*RW2T"VRTBV2U#U3UDT4V5A=W1`2C4J`W:````'A<8_1?5
XMZXN-4+@,X````"L.,>XC`^[>@(@,X0```"L.,>XEZQ:-L,`=X@```"L0,>XC
XMT2Q+2TM+2TM:6O6O6FI:XFI:X!!JT"#C````*Q`S^"6N`1;Y:6I:6EEI6&H]
XM;5QL7%Q;:_:^`1;8'>0````K$#'N)>`?:UOB:UMK]<]<7%Q-34U-34`0((@,
XM\````"L.,?8CV^L88+`,\0```"L.,?8ECMX#X-@=\@```"L0,?@C(!!-34U-
XM34Q<7/7/6VM;XFM;X!]@V"#S````*Q`S[B7@$6OVMK7%Q<;%UM.FA9:5I:6F
XMGVG@$6K`'?0````K$#'X):X!!J6N)J6FKUKUI:6TM+2TM+3"T9@*]0```"L&
XM,^XE#X"H"?8````R,0$`#-:P+_L````R*QS]&<3RW"W/+<+<+<+<U9UG/:/9
XM787<3=3=/>+>UJU;/=+>+>+>\M[RS=@+_````!X7&/T7`"*@L"_]````,BL<
XM_1G-\MXM[RWBWBWBO5K6WCWCW5W%V4V4VCVRC6G5VSW"W"W"W/+<\L20$OX`
X4```G("+](*7J4J76ZCI2I=;U]O;%
X`
Xend
END_OF_FILE
  if test 6583 -ne `wc -c <'fonts.lj/S.12.pk.UU'`; then
    echo shar: \"'fonts.lj/S.12.pk.UU'\" unpacked with wrong size!
  fi
  # end of 'fonts.lj/S.12.pk.UU'
fi
if test -f 'opt.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'opt.c'\"
else
  echo shar: Extracting \"'opt.c'\" \(6352 characters\)
  sed "s/^X//" >'opt.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:		opt.c
X	Author: 	Chris Lewis
X	Specs:		Optimizer module
X */
X
X#include "defs.h"
X
Xint specXPos, specYPos;
Xextern struct cattab tabN[], tabS[];
X
X#ifdef	OPT
X#ifndef	lint
Xstatic char SCCSid[] =
X    "@(#)opt.c: 2.2 Copyright 90/08/10 15:16:19 Chris Lewis";
X#endif
X
Xstruct insbuf {
X    char font, points, nc;
X    short xpos, ypos;
X};
X
X#define	INSBUFSIZ	200
X#define	OPTSIZ	100
Xstruct insbuf insbuf[INSBUFSIZ];
Xstatic struct insbuf *insptr = insbuf;
Xstatic int insypos = -1;
X
Xcanoninsert(xpos, ypos, font, points, nc)
Xregister int xpos, ypos;
Xregister int font, points, nc; {
X    DBP((D_CAT, "canoninsert: %d %d %d %d %d\n", xpos, ypos, font, points,
X	nc));
X
X    if (insypos != ypos || (insptr - insbuf >= INSBUFSIZ - 2)) {
X	canonflush();
X	insypos = ypos;
X    }
X    insptr->font = font;
X    insptr->points = points;
X    insptr->nc = nc;
X    insptr->xpos = xpos;
X    insptr++;
X}
X
X#ifdef	SORT
Xint xsortorder;
X
Xxsort(a, b)
Xregister struct insbuf *a, *b; {
X    int ret;
X    if (a->xpos < b->xpos)
X	ret = -1;
X    else if (a->xpos > b->xpos)
X	ret = 1;
X    else
X	ret = 0;
X    return(xsortorder * ret);
X}
X#endif
X
Xcanonflush() {
X    register struct insbuf *ip;
X    insptr--;
X    DBP((D_CAT, "canonflush: start: %d chars\n", insptr - insbuf + 1));
X
X    if (insptr < insbuf) {
X	insptr = insbuf;
X	return;
X    }
X
X    if (insptr->xpos < insbuf[0].xpos) {
X	DBP((D_CAT, "canonflush: BACK (%d chars)\n", insptr - insbuf + 1));
X#ifdef	SORT
X	xsortorder = -1;
X	insdump(insbuf, insptr);
X	qsort(insbuf, insptr - insbuf + 1, sizeof(struct insbuf), xsort);
X	insdump(insbuf, insptr);
X#endif
X	for(ip = insptr;ip >= insbuf; ip--)
X	    canonchar(ip->xpos, insypos, ip->font, ip->points, ip->nc);
X    } else {
X	DBP((D_CAT, "canonflush: FORW (%d chars)\n", insptr - insbuf + 1));
X#ifdef	SORT
X	xsortorder = 1;
Xinsdump(insbuf, insptr);
X	qsort(insbuf, insptr - insbuf + 1, sizeof(struct insbuf), xsort);
Xinsdump(insbuf, insptr);
X#endif
X	for(ip = insbuf;ip <= insptr; ip++)
X	    canonchar(ip->xpos, insypos, ip->font, ip->points, ip->nc);
X    }
X    insptr = insbuf;
X    optflush();
X}
X
Xcanonchar(xpos, ypos, font, points, nc)
Xregister int xpos, ypos;
Xregister int font, points, nc; {
X    static struct insbuf lastchar;
X    static short lastypos;
X    static sstate = 0;
X    static char sbuf[512];
X    register char *p;
X#ifdef	INSPECIAL
X    /* Inline special directives, not supported yet */
X    switch(sstate) {
X	case 0:
X	    if (font == 3 && nc == 34) {
X		sstate = 1;
X		lastchar.xpos = specXPos = xpos;
X		lastchar.font = font;
X		lastchar.points = points;
X		lastchar.nc = nc;
X		lastypos = specYPos = ypos;
X		optflush();
X		return;
X	    }
X	    break;
X	case 1:
X	    if (font == 3 && nc == 34) {
X		if (xpos == lastchar.xpos && ypos == lastypos) {
X		    sstate++;
X		    sbuf[0] = '\0';
X		    return;
X		} else {
X		    lastchar.xpos = xpos;
X		    lastypos = ypos;
X		    /* stay in this state */
X		}
X	    } else
X		sstate = 0;
X
X	    if (be->beputchar)
X		(*be->beputchar)(lastchar.xpos, lastypos, lastchar.font,
X		    lastchar.points, lastchar.nc, (char *) NULL);
X	    break;
X	case 2:
X	    if (nc == 34 && font == 3) {
X		DBP((D_CAT, "Special inline sequence: %s\n", sbuf));
X		dospecial(sbuf);
X		sstate = 0;
X		return;
X	    }
X	    if (strlen(sbuf) > sizeof(sbuf) - 1) {
X		fprintf(stderr,
X		    "%s: unterminated/too long \\(bs\\(bstr\\(bs\n",
X		    progname);
X		sstate = 0;
X		return;
X	    }
X	    if (font == 3)
X		p = tabS[nc].ch_name;
X	    else
X		p = tabN[nc].ch_name;
X	    if (strlen(p) >= 2) {
X		if (strcmp(p, "hy") == 0 ||
X		    strcmp(p, "mi") == 0 ||
X		    strcmp(p, "\\-") == 0)
X		    p = "-";
X		else if (strcmp(p, "ff") == 0 ||
X			 strcmp(p, "fi") == 0 ||
X			 strcmp(p, "fl") == 0)
X		    ;
X		else if (strcmp(p, "Fi") == 0)
X		    p = "ffi";
X		else if (strcmp(p, "Fl") == 0)
X		    p = "ffl";
X		else
X		    p = " ";
X	    }
X	    strcat(sbuf, p);
X	    return;
X    }
X#endif
X    optinsert(xpos, ypos, font, points, nc);
X}
X
Xint optxpos, optypos;
Xint optfont, optpoints, optnc, origxpos;
Xchar optbuffer[OPTSIZ];
Xchar *optp = optbuffer;
X
Xoptflush() {
X
X    if (!optimize)
X	return;
X
X    if (optbuffer[0] && be->beputchar)
X	(*be->beputchar)(origxpos, optypos, optfont, optpoints, optnc,
X	    optbuffer);
X    optbuffer[0] = '\0';
X    optp = optbuffer;
X}
X
Xoptinsert(xpos, ypos, font, points, nc)
Xint font, points, nc;
Xint xpos, ypos; {
X    struct troff2befont *bp;
X    static char *wp;
X    extern struct cattab tabN[], tabS[];
X    struct cattab *ct;
X    register char *from;
X    int cantcache;
X
X    if (!optimize) {
X	if (be->beputchar)
X	    (*be->beputchar)(xpos, ypos, font, points, nc, (char *) NULL);
X	return;
X    }
X
X    DBP((D_CHAR, "OLD: x,y,f,p,c = %d,%d,%d,%d,%d\n",
X	optxpos, optypos, optfont, optpoints, optnc));
X    DBP((D_CHAR, "NEW: x,y,f,p,c = %d,%d,%d,%d,%d\n",
X	xpos, ypos, font, points, nc));
X
X    /* the 10 is to ensure that there's enough room for moderately
X       long multiple-character sequences */
X
X    if (ypos != optypos || optfont != font || optpoints != points ||
X	wp != xlatetable[font]->widthtable ||
X	optp > optbuffer + OPTSIZ - 10)
X	optflush();
X
X    wp = xlatetable[font]->widthtable;
X
X    if (font == 3) {
X	bp = &be->besymfont[nc];
X	ct = &tabS[nc];
X    } else {
X	bp = &be->bestdfont[nc];
X	ct = &tabN[nc];
X    }
X
X    cantcache = !wp || (int) wp == 1 || (font == 3 ? bp->t2b_font != S:
X			     bp->t2b_font != N);
X
X    if (bp->t2b_xc || bp->t2b_yc || bp->t2b_scale || cantcache)
X	optflush();
X
X    if (optxpos != xpos)	/* handle spaces one day... */
X	optflush();
X
X    if (!optbuffer[0]) {
X	optypos = ypos;
X	optxpos = xpos;
X	origxpos = xpos;
X	optfont = font;
X	optnc = nc;
X	optpoints = points;
X    }
X
X    if (cantcache) {
X	if (be->beputchar)
X	    (*be->beputchar)(xpos, ypos, font, points, nc, (char *) NULL);
X	return;
X    }
X
X    optxpos += ((wp[ct->ch_wididx]) * points + 3) / 6;
X    DBP((D_CAT, "optxpos: %d\n", optxpos));
X
X    for (from = bp->t2b_charseq; *from;)
X	*optp++ = *from++;
X    *optp = '\0';
X}
X#endif
X
X#ifdef	SORT
Xinsdump(b, p)
Xregister struct insbuf *b, *p; {
X    if (!(debug&D_VERB))
X	return;
X    DBP((D_VERB, "insdump:\n"));
X    for(; b <= p; b++)
X	DBP((D_VERB, "%d %d\n", b->xpos, b->nc));
X}
X#endif
END_OF_FILE
  if test 6352 -ne `wc -c <'opt.c'`; then
    echo shar: \"'opt.c'\" unpacked with wrong size!
  fi
  # end of 'opt.c'
fi
if test -f 'utils/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils/Makefile'\"
else
  echo shar: Extracting \"'utils/Makefile'\" \(6805 characters\)
  sed "s/^X//" >'utils/Makefile' <<'END_OF_FILE'
X#	Copyright 14:22:49 Chris Lewis
XSCRIPTS	= psdtwd showfont mkenctab calcfonts catconv
XPROGRAMS = hpinterp psxlate pk2sfp pk2ditwid pktype dumpft pk2ps lj2ps
XMAPS = maps/S.cmtrf \
X	maps/alnum.ROMAN8 \
X	maps/cmmi.MATH8 \
X	maps/cmr.MATH8 \
X	maps/cmr.ROMAN8 \
X	maps/cmss.ROMAN8 \
X	maps/cmsy.MATH8 \
X	maps/cmsy.ROMAN8 \
X	maps/cmti.MATH8 \
X	maps/cmti.ROMAN8 \
X	maps/cmtrf.MATH8 \
X	maps/cmtrf.ROMAN8 \
X	maps/cmtt.ROMAN8
X
Xinclude ../makeincl
X
Xall:	subst.done $(SCRIPTS) $(PROGRAMS)
X
Xsubst.done:	../makeincl ../sedscript
X	rm -f $(SCRIPTS)
X	touch subst.done
X
Xljtab.c:	../troff2ps mkenctab ../lib/lj.fonts
X	cd ../ ; ./troff2ps -Tlj -z > utils/T
X	./mkenctab T ljtab.c
X	rm -f T
X
X#	This isn't perfect, but close
X../debug.o ../pk.o ../cattab.o: ../defs.h ../pk.h
X	@echo "Some troff2ps objects are out of date"
X	@echo "Make troff2ps at the top level first"
X	exit
X
Xtmaps:	$(MAPS)
X
X$(MAPS):
X	cd maps ; get s.$(@F)
X
Xljtab.o pk2sfp.o pk2ditwid.o pktype.o dumpft.o: ../defs.h ../pk.h
X
Xpktype:	../pk.o ../debug.o pktype.o
X	$(CC) $(CFLAGS) -o pktype pktype.o ../debug.o ../pk.o $(LIBFLAGS)
X
Xpk2ps:	../pk.o ../debug.o pk2ps.o
X	$(CC) $(CFLAGS) -o pk2ps pk2ps.o ../debug.o ../pk.o $(LIBFLAGS)
X
Xhpinterp:	hpinterp.o
X	$(CC) $(CFLAGS) -o hpinterp hpinterp.o $(LIBFLAGS)
X
Xpsxlate:	psxlate.o
X	$(CC) $(CFLAGS) -o psxlate psxlate.o $(LIBFLAGS)
X
Xpk2ditwid:	../pk.o ../debug.o pk2ditwid.o ljtab.o
X	$(CC) $(CFLAGS) -o pk2ditwid pk2ditwid.o ../debug.o ../pk.o ljtab.o \
X		$(LIBFLAGS)
X
Xpk2sfp:	../pk.o ../debug.o pk2sfp.o ljtab.o
X	$(CC) $(CFLAGS) -o pk2sfp pk2sfp.o ../debug.o ../pk.o ljtab.o \
X	    $(LIBFLAGS)
X
Xdumpft:	dumpft.o ../cattab.o
X	$(CC) -o dumpft dumpft.o ../cattab.o $(LIBFLAGS)
X
Xclean:
X	rm -f *.o $(SCRIPTS) $(PROGRAMS) ljtab.c *.D *.sfp diagnostics
X	rm -f fonts/*.LOG fonts/[A-Z].* fonts/[A-Z][A-Z].* fonts/*.D
X	rm -f fonts/cmtrf*.sfp buildcmtrf
X	rm -fr testdir
X
Xinstall:
X	cd $(LIBDIR)/lib ; rm -f $(SCRIPTS)
X	$(IGNORESH) cp $(SCRIPTS) $(LIBDIR)/lib
X	for i in $(PROGRAMS) ; \
X	do \
X	    if [ -f $(LIBDIR)/$$i ] ; \
X	    then \
X		rm -f $(LIBDIR)/$$i.old ; \
X		cp $(LIBDIR)/$$i $(LIBDIR)/$$i.old 2> /dev/null ; \
X	    fi ; \
X	    cp $$i $(LIBDIR)/$$i ; \
X	done
X
X#	Try to convert a vendor supplied ft into dit2catwid input
X#	and back again.  If the number of differences is 0 or 1,
X#	everything's working (we permit one difference due to space
X#	handling)
Xtestdumpft:	dumpft
X	./dumpft -d < $(FONTDIR)/ftR > fonts/R.ftout 2> fonts/R.dfterr
X	../widths/dit2catwid fonts/R.ftout fonts/R.ftout fonts/R.d2out
X	-cmp -l /usr/lib/font/ftR fonts/R.d2out > fonts/R.errors
X	$(IGNORESH) test `wc -l fonts/R.errors | \
X	    sed -e 's/^[ 	]*\([0-9][0-9]*\).*/\1/'` -lt 2
X
Xbuildcmtrf:	pk2sfp $(MAPS)
X	for i in ../fonts.lj/S.*.pk ; \
X	do \
X	    ps=`echo $$i | sed -e 's/^.*S.\([0-9]*\).pk/\1/'` ; \
X	    echo "Building cmtrf$$ps.sfp" ; \
X	    ./pk2sfp -m maps/S.cmtrf $$i > fonts/cmtrf$$ps.sfp ; \
X	done
X	touch buildcmtrf
X
Xfonts/cmtrf10.sfp:	buildcmtrf
X
Xbuildfonts:	$(NEWFONTS) calcfonts buildcmtrf pk2sfp
X	$(IGNORESH) test -z "$(PKFONTS)" || \
X	    perl ./calcfonts -f$(NEWFONTS) -s$(SFP2PK) $(PKFONTS)
X
X#	Use real cmtrf from $(PKFONTS) rather than fonts/cmtrf*.sfp
XbuildSfonts:	calcfonts pk2sfp
X	rm -f buildcmtrf fonts/cmtrf*.sfp
X	$(IGNORESH) test -z "$(PKFONTS)" || \
X	    perl ./calcfonts -S -f../fonts.lj -s$(SFP2PK) $(PKFONTS)
X
X#	This code is for demonstration purposes w.r.t. PK/SFP merging.
X#	sfp2pk comes from Rick Richardson's jetroff, and the hyphens
X#	allow this makefile to continue if you don't have sfp2pk.
X
Xtestmerge:	pk2sfp fonts/cmtrf10.sfp $(MAPS)
X	./pk2sfp -m -v \
X		maps/cmtrf.MATH8 \
X		fonts/cmtrf10.sfp \
X		maps/cmr.MATH8 \
X		fonts/cmr10.pk \
X		maps/cmsy.MATH8 \
X		fonts/cmsy10.pk \
X		maps/cmmi.MATH8 \
X		fonts/cmmi10.pk \
X		> fonts/S.10.sfp 2> fonts/S.10.LOG
X	-$(SFP2PK) < fonts/S.10.sfp > fonts/S.10.pk
X	./pk2sfp -m -v \
X		maps/cmr.ROMAN8 \
X		fonts/cmr10.pk \
X		maps/cmsy.ROMAN8 \
X		fonts/cmsy10.pk \
X		maps/cmtrf.ROMAN8 \
X		fonts/cmtrf10.sfp \
X		maps/cmti.ROMAN8 \
X		fonts/cmti10.pk \
X		maps/cmss.ROMAN8 \
X		fonts/cmss10.pk \
X		> fonts/R.10.sfp 2> fonts/R.10.LOG
X	-$(SFP2PK) < fonts/R.10.sfp > fonts/R.10.pk
X	./pk2sfp -m -v \
X		maps/cmr.ROMAN8 \
X		fonts/cmsl10.pk \
X		maps/cmsy.ROMAN8 \
X		fonts/cmsy10.pk \
X		maps/cmtrf.ROMAN8 \
X		fonts/cmtrf10.sfp \
X		maps/cmti.ROMAN8 \
X		fonts/cmti10.pk \
X		maps/cmss.ROMAN8 \
X		fonts/cmss10.pk \
X		> fonts/I.10.sfp 2> fonts/I.10.LOG
X	-$(SFP2PK) < fonts/I.10.sfp > fonts/I.10.pk
X	./pk2sfp -m -v \
X		maps/cmr.ROMAN8 \
X		fonts/cmbx10.pk \
X		maps/cmsy.ROMAN8 \
X		fonts/cmsy10.pk \
X		maps/cmtrf.ROMAN8 \
X		fonts/cmtrf10.sfp \
X		maps/cmti.ROMAN8 \
X		fonts/cmti10.pk \
X		maps/cmss.ROMAN8 \
X		fonts/cmss10.pk \
X		> fonts/B.10.sfp 2> fonts/B.10.LOG
X	-$(SFP2PK) < fonts/B.10.sfp > fonts/B.10.pk
X	./pk2sfp -m -v \
X		maps/cmr.ROMAN8 \
X		fonts/cmssi10.pk \
X		maps/cmsy.ROMAN8 \
X		fonts/cmsy10.pk \
X		maps/cmtrf.ROMAN8 \
X		fonts/cmtrf10.sfp \
X		maps/cmti.ROMAN8 \
X		fonts/cmti10.pk \
X		maps/cmss.ROMAN8 \
X		fonts/cmss10.pk \
X		> fonts/HI.10.sfp 2> fonts/HI.10.LOG
X	-$(SFP2PK) < fonts/HI.10.sfp > fonts/HI.10.pk
X	./pk2sfp -m -v \
X		maps/cmtt.ROMAN8 \
X		fonts/cmtt10.pk \
X		maps/cmsy.ROMAN8 \
X		fonts/cmsy10.pk \
X		maps/cmtrf.ROMAN8 \
X		fonts/cmtrf10.sfp \
X		maps/cmti.ROMAN8 \
X		fonts/cmti10.pk \
X		maps/cmss.ROMAN8 \
X		fonts/cmss10.pk \
X		> fonts/C.10.sfp 2> fonts/C.10.LOG
X	-$(SFP2PK) < fonts/C.10.sfp > fonts/C.10.pk
X	./pk2sfp -m -v \
X		maps/cmr.ROMAN8 \
X		fonts/cmss10.pk \
X		maps/cmsy.ROMAN8 \
X		fonts/cmsy10.pk \
X		maps/cmtrf.ROMAN8 \
X		fonts/cmtrf10.sfp \
X		maps/cmti.ROMAN8 \
X		fonts/cmti10.pk \
X		maps/cmss.ROMAN8 \
X		fonts/cmss10.pk \
X		> fonts/H.10.sfp 2> fonts/H.10.LOG
X	-$(SFP2PK) < fonts/H.10.sfp > fonts/H.10.pk
X
Xkeepbuiltfonts:	testmerge
X	cp fonts/[RIBHC]*.pk ../fonts.lj
X
Xtestpk2ditwid: pk2ditwid testdir
X	./pk2ditwid -Ss $(LJF)/S.10.pk
X	mv S testdir/S.10
X	./pk2ditwid -Ss $(LJF)/S.12.pk
X	mv S testdir/S.12
X	diff testdir/S.10 testdir/S.12 > testdir/S.diff
X
X$(NEWFONTS):
X	mkdir $(NEWFONTS)
X
Xtestdir:
X	mkdir testdir
X
Xtestpart:	pk2sfp testdir
X	./pk2sfp $(LJF)/R.10.pk > testdir/R.10.pk
X	./pk2sfp -p $(LJF)/R.10.pk > testdir/R.10.pkp
X	./pk2sfp $(LJF)/S.10.pk > testdir/S.10.pk
X	./pk2sfp -S $(LJF)/S.10.pk > testdir/S.10.pkS
X	./pk2sfp -p  $(LJF)/S.10.pk > testdir/S.10.pkp
X	./pk2sfp -pS  $(LJF)/S.10.pk > testdir/S.10.pkpS
X
Xcmpfont:	pk2sfp testdir
X	@for i in fonts/[A-Z]*.10.pk ; \
X	do \
X	    f=`basename $$i .10.pk` ; \
X	    ./pk2sfp $(LJF)/$$f.10.pk > testdir/$$f.10.old ; \
X	    ./pktype -v testdir/$$f.10.old ; \
X	    mv $$f.10.old.D testdir/$$f.10.old.D ; \
X	    ./pk2sfp fonts/$$f.10.pk > testdir/$$f.10.new ; \
X	    ./pktype -v testdir/$$f.10.new ; \
X	    mv $$f.10.new.D testdir/$$f.10.new.D ; \
X	    set +e ; \
X	    cmp -l testdir/$$f.10.new testdir/$$f.10.old > testdir/$$f.fDIF; \
X	    diff testdir/$$f.10.new.D testdir/$$f.10.old.D > testdir/$$f.dDIF; \
X	    set -e ; \
X	done
END_OF_FILE
  if test 6805 -ne `wc -c <'utils/Makefile'`; then
    echo shar: \"'utils/Makefile'\" unpacked with wrong size!
  fi
  # end of 'utils/Makefile'
fi
if test -f 'utils/fonts/cmss10.pk.UU' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils/fonts/cmss10.pk.UU'\"
else
  echo shar: Extracting \"'utils/fonts/cmss10.pk.UU'\" \(6526 characters\)
  sed "s/^X//" >'utils/fonts/cmss10.pk.UU' <<'END_OF_FILE'
Xtable
X !"#$%&'()*+,-./0123456789:;<=>?
X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Xbegin 644 utils/fonts/cmss10.pk
XM]UD11T9T;U!+(#$N,B!O=71P=70`H```;2.]4@`$)JX`!":NP#M!"JJN'!D=
XM_QRSV/77$3UO(CU#)-,C33)#TC1-$E31)CT/-DOSA**4DZ2/U'\\1BT$7ST4
XM,])2\]-!/53(,$(*JJX<%1W\'-"--4A42D-+0N1,04M"25/432;41&@TI22U
XM%,0>1-",04M"25/431?`)T,*..8;%1_]':B\=&1DDE3333]-/B33Z$U>)-7T
XMU4U4P52B9'2,MT#(,$0+CCT>%QW\'-&=-TA62E1+4TQ#300DT3+TT4%-(QYT
XMTHXM%!300O3$-*5$AETWT9"X$44)CCL9$AW\'-SJPOQ1ZTPM@-@01@D<=1@1
XM'?P<`HZM\!(>U-#`+D<*JJT<%1_]':>]!T95231+(TT_33XDT^5-3TG-$^(4
XMT#\DPS2S1*-4DV1E?0MTV`Y("U5:'10=_!SL3`,NW$!H"4D$<<H,!!W\'-W`
XM$$H'CCL4#1[^')[;9W5!PJ5DV$%+"QQV'18=_!Q`$(U!3$)+0TI$245(1D='
XM1DA%241*1#M#6D)J03%)<EAD2&5'5E9(1DA5245*1$I32T/TQ"34%-6X#$P(
XMJJT6#QW\'.SDO2#(-TT.``4D&QW\'.)M*>(3T"%^(CLB<DDR<SDC?S1S-_0W
XM)']$4T=34E=4,U?B8S)GXG,2=^*$A]=`V#-."U5:'10=_!SVNJ83IA26\CEB
XM2&,X;S1V]$9E-F5%9C5O9$;W0V@S:$)ODR:4%J,6JOM@P#5/"\<>'QH?_AVF
XMU,T-&U996%=,15Q4310^)--!YTU9TU\4TT)=%3311%Q56E=8659;T=#-1J#(
XM'U`*..8;%!W\'-%M-$A32D)+0>5,BT%*44ABU#TE[$TPP#Y1"\<>'QHC_AVF
XMU,T-&U996%=:55Q4310^)--!Z$U4\4TT)'-D-&1$160E5'04=5B55KT=#1TF
XM%-I-E=E=E1#8,U(*55@;%1W\'-@!)4A42D-+0N1,04M"2E)(8P$T`2781D='
XM-T=&](1?243TI#2T+TQ!34#`+E,(XY`7$A_^'6>;8V1#@S.B,M+C/23231?)
XMJYJIT&T4TO3CTET"$[,4DS5C:Y=@R`U4"N.0'!D=_QP"7MVTH-@750L`!1T4
XM'OP<X!A-/Q2S-)-4<W14BL9PR#16"JJN'!D=_QSTU3XA33,_31-%T#7TPWXD
XMHY](.T<L]&/012T?1#TD,M-"/4\R+502UO78.\A?5P\<=B<D'?\<3$T'_%PQ
XM2Q$\(N)*(CHS2#(Y-$@C2#1()#@U1R0X)O1C1&-D8F-C=%)C8H1#9$.$0G1#
XMGS0H-"I#*#,Z0BE".^(R*C(M`Q&S(=$Q'"$M%<713072/1.`P$58"JJN'!D=
XM_QP4TC-=!$3$9+.$DY2$I&3$4]$T310DTT$]5M==?TUVUC$]0R320ST44]`V
XM2SA)2%@Z1SQ%3%--%2/304TUR#%9"JJN'!L=`!Q=5!74,UTC5-%%70-ULY2D
XME9.U=,1ST%4])$330SU%$]9!/7;87:ZTL+`R6@G''AD4'?X<'\?#3#7#3#7#
XM3#3#7#3#7#3#3#7#3#7#3#3#7#3#7#3#3#7#3#7#3#W`T!YA![!=%`X2_A%&
XM:CPC8R&3^SADHL%&;BAU4=&1,F,PV"%B"$1&%0\=_1SJ/#-4,8/25%%',3A^
XM66@Q1S%44=(Q@S-%T!MC!QQS$@X2_A%6>4LD4Q.1$ZY3P[.1)%,[268PT"!D
XM"$1&%0\=_AS.HT4S.!,M%47Q.&Y9>#$W0512TX$T4S#0'&4''',2#A+^$55X
XM6C1$(W(B@#+BP[.1)%,L.F8PP!-F!..0#0X=`!R&=VA3KF-_M^TC<,`J9P@`
XM`A42&_\19$1-$](S0WY#8W-#BHF#%*\].WT$TB.4'B/'I!5E/17(A=@4:`A$
XM1A4.'?T<ZCLS4S&"T56';L@PN`QI`])^"@0=_AS$T>Q3@!%J!$1&"PHE`QQN
XM--3IQ4E!A%/8+&L'TH`4#QW]'.H\-T$V0C5#-$0S13)&,4>'EE$V4C5#1#4T
XM-4,V0C<R-T$X0(@);`/2?@H#'?T<WL@8;0RV#B(;$OT1,V9C,9.2T1L59FB$
XMANR3D]@2;@A$1A4.$OT1,U,Q@M%5AV[(,-`?;P@``A42$O\19JI\5&0TA".C
XM'D/'I!.C)(0T9%QZIF#8(7`(1$85#QK]$3-4,8/25%%',3A^66@Q1D%44=(Q
XM@S-%YSS0(7$(1$85#QK^$50S.!,M%4449!.&Y9>#$W0512TX$T4SY\/8$7(%
XM=WH."1+]$3-B<;-4]%ZC8,`:<P8B(Q`-$O\1-UHK%&(?.DIWAHI+])==,J5S
XMT!-T!<<=#PP8_Q<^4V^TZSDT%)2%4M@1=0A$1A4.$OT1[3AF`5&1,F,PV!YV
XM!V"X$Q`2_Q'SHQ.2+S@SXC8UXC0W\R.?(BHQ*_1@V#EW"N[R'!D2_Q'S=79R
XM$G,38A-B(U,34R\U,B4S-",S-/,S,S-2,T(R8R)3(F\Q-3$W\A)R$H5UE(-0
XMT"EX!V"X$Q(2`!$3HR2#1&-C4X-#DR.VU`$#`136LR.30I-#<V-3@S.C%*38
XM+'D'8+@3$!K_$?.C\3@R1S/S8U-28T-R0W,R@R.2(Y,2LA*R$=\]\M\M.'EJ
XM6]`8>@;TH!(.$O\1'BV4E*.DE*.CI)2CI)20++@+``BJK18/'?P<UNSKP$`!
XM#558(QX=_AS0]-QMLA/:\B38,TUR1-;S5-0V73-TTCA=$Y30.EP[3"Q+\]!)
XM/16#TD<]-6/413U50]9#_?$"\,`\`@QQRB`;'_X=I]6]'2ME:5E76U9-!%32
XM0UTE+TU$'TUHXST#CBUD\4U$)=)3321%T%5;5UE996O2T;U7H,`T`PG'(!D6
XM'?\<GB34XB$]+R)-$C/0,TSR1+\U2B9)\W2"A'.%;SE&*D7SM$+$/ST$(M%!
XM/168#P0*JJT<%QW^'-L)CBIPQMO(#`4+55H=%!W\'`'^W<2H+`8+CCL>&1W^
XM'-RZ6Z];I;I;KUNENO6Z6Z6Y2Z.Z2Y2Z.Z2Y2Z.Z.Z2Y2ZO!UL`A!PQQRB`;
XM'OX=195I:#I:)$,T-!1C(U=S(G:"$W/[7:[72\`T"`N..QX9'?X<OC36?2T*
XMU'8D%E5$-4141#]&14'D1T9/%&14-%1$140U5B06?4K0TGU^-*#`,@D,<<H@
XM&QW^',XDM71K9%T%1'%E1&-51%7G141'1$1']$0TE#0EE205O2T-#2O6;9XT
XML,`R"@N..QX9'OX=E]+0K4=G95M4300_320>5-1.(4TD/TT$5+1SLX24GSD[
XM\W/$5-`U-_I:T"`P"``"%1`=_AMDJ'I41$-C/B.#'L.CXA.#,V-$1%IXEE#`
XM$C$(``(5#1S\&W&C=EA2,Z[7-=W0*S((``(5$!S^&U698T1#<S*$$Y,2I!&D
XM$;/]/$P\3#Q+2TM,/#P\/#P\/`(@T"DS"``"%1`=_AM6B6-30W,CA"\93/3#
XMQ+2'EJ<!!-/4WC7[:4(H-#5%F670*C0(``(5$AO_&J35T1/"$[,3LB.O,CGS
XM,X\T-S4V138V-48U-S1'-`)N:S30)34(``(5$!S^&A\!`N8],E:UQ&-#54)&
XM0D=.7$$902E")T0T1IAFT"XV"``"%1`=_AN%F'-18\/////3-4,H,QHF1"5D
XM%(,4EN2C\3DQ.#,H,S8U-#>*5=@;-P@``A40&_X:`BT\///#Q,/$P\]+XDOC
XM3#SE2-`I.`@``A40'?X;5HI41#\X,>,Z/Q.#-$1:AHI41#\X,>4Z,3@R1D-$
XM1:AET#$Y"``"%1`=_AMDJ'-#4V,S@C.#$Y,3HAY#II03A!1E)$8J$S@C14+?
XM/2T])1<E-$:*5]`X)`@``A40(?X>?RQWM$$B0C,D(C,GXS0G0R=2*(F)F)F)
XM(5@C."-.-R1&)"$E(S$T(R-"(36I;/)PP$LF#"(E'QH?_AV$V&UHU3(]3D-#
XMTS--,R34,CU3%-9M=;)UPF7"9[)4$[)$,Y)31()$4W)39%-3=$)C@S)SDQ*3
XMA:.4@2-H0SHZ5G8@T"`_!XX[%`\=_APW:STD9"&CXL.TI*2DH\+#SB+//1!:
XMXC?0(#X'CCL4#QW^%%XC!:'?/.,L._.SM*2^(\.A(V40$"MG0*@)$`/2?@H#
XM$OT1V]`0$01$1@L*&@,1?@%S$4T813#0,AD'L%X4#QW]'$:(:D1$+C.#$W03
XM<R-4,R<S)5,F0U0S<R-T$X,3A^26@Q-T$S<C)S,F0,`L&@N..QX:$OX11G5J
XM.$P:,V=$(95RQ(.])]8]HLT%4\\X2SA95H4QP<&SI&ACP"X;#''*(!T2_Q%E
XME8E8:SI$5!1$(Y9R(Y6&XKU?L\.TPY7$=Y$D5!53.SQ)6G66,,`W'`@``A42
XM'/\6TAT_/131.*:VQ41C17(U03$V,V5#931D-6-%8S8Q,44R=4-D1<:VJ#T4
XMT?/3'2#`/AT-QR`D(!W_'+_8LR39\S39)$V/-$U_-4UR9-;S9-7S?2<H34.$
XMU-+3T],Y33*DTO.DT?.TT2Q-`\30/-;0T\!$'@^./2@D'_\=I][?8!%65M58
XM746DU$M--,32XDT$T>)-%-'TT=0>)-%-%=!-+TT$TEQ--,336TU%I-587696
XMUP$8WZ?6P%(?#''*(!LA_A[7/1<SS1O3IE:5AG679)A4HR0TI#0DHT0DE$04
XMHVB4:)-XA'B#B'2(<YADF&.D%$24)$.D)#2D-".D2957E7:%EE:M.]'#-]$]
XM<)@,(04<<PT#'?L<TA&FD)@,/`4<<PT#'?L4FF$=(+`\(PU56",>)?X<PN(G
XM+&-CQN(G+&-CQN,G+&-CC0'2XJ)RQC8\;C)RK2'0@V/&XB<L8V/&XB<L8V/&
XMXB<L(,!G)0U56",>(?X>1-(H;0-XPG0DHW-#HG-C@W-C@H-C<X-C8Y-C8J-C
XM4Z-C4L-#4\0D0]&%+393U$8F34-6TR6-$T0DPU-#PE-CHU-CHF-CDV-C@W-C
XM@H-C<X-C<J-#<Z0D<LAST&@M)$#H"R<$<<@,`PC\'/^TEM`@*`8XY1`+*OX>
XM@W-S<W\W\WXC?C-^LYXSGB.?.?.3DY.3V"`I!CCE$`LJ_AXY.3DY\Y\YXCGC
XM.>L^-S?B-_-_-S<W-SC0)RH(``(5$!+^'G(!`]\H)"0A4B)142%4J/:*11(5
XM%2(E$D)"CR`0/2?0#RL,<<H@&QS^%]["P#CLTL#H"RP$<<@,`PC\`O^TEM@)
XM+@1QR`P#`_P"D-`N+P@``A40*?X>`0\M/]+3TM/?+3WRT]\M/?+3TM/?+3WR
XMT]\M/?+3TM/?+3WR`0"X"CH$<<@,`Q+\$9V)N`\[!''(#`,7_!&=B1+B$1(0
XMP!`]#''*(!L,_@\=P=X,O>'<$,`Y0`JJK1P7'?X<I]&ZT8959*-4:31J,VLD
XM5#835%434W?F4Y,34W,C5%0D5#1#:51G=&64UVA&TYS0A;@,6P2?2PP(*?T>
XMS^UES+@,702?2PP(*0`>S.UES^`+8`1QR`P#"/P<:2W_V`\2"``"%0D'_1PW
XM-S<W-S<PT!`3"``"%0D'^!QC4U-34U-38-@3%`@``A4.!_T:.#$V,S0U,C=I
XM2R;8$Q4(``(5#@C]'/.'9!-C)$0Z6(10N`D6"``"%0X#_1G>T!`7"JJN'`D'
XM]QPE-QXC,Q<U(.`,&`<<<Q(&!?O\'..<X-`.(`/2?@H*!0`/<E4F-5*`T!->
XM"``"%0X'_1QBM)9S(U-#,V,3@\@)7P1QR`P$!/P<T^`4?0@``A4-!_P<'#GC
XMSASQYPYX\X<`X!%^"``"%0X%_1L\'?AW_[A^X/#8"W\(``(5#`3\'.-$0,`:
XM"PE56!@9'0`<AE9W1V@X4X.N8X-_M'?M(X-PP!@,")/K%A(>`!W2-U,V8S5[
XM/1YCO\,^TD.#P!D-")/K%A(=`!QU,V8S5S-3<^9#C2\S[20X,,`?#@T%LR(>
XM'@`=WCA61#9U5#6$;#D]'F.3O[5T/M)#DX/`(`\-!;,B'AT`'(5D0V=50UA&
XM0U.3<^9#DXT?5T/M)#DX,-@2(@@``A4+"/\<XC4Q)BXA%Q$F(<@)+0555@X+
XM`@`)V=`27`@``A4+"/@<$F+B$7$28AXC4Y@)>P@``A44`P`,TE@)?!```RHI
XM`P`,U?`/:61E;G1I9FEE<B!#35-3\!5C;V1I;F=S8VAE;64@5&58('1E>'3P
X5#&9O;G1F86-E8GET9?0`Z@``]?;V
X`
Xend
END_OF_FILE
  if test 6526 -ne `wc -c <'utils/fonts/cmss10.pk.UU'`; then
    echo shar: \"'utils/fonts/cmss10.pk.UU'\" unpacked with wrong size!
  fi
  # end of 'utils/fonts/cmss10.pk.UU'
fi
if test -f 'utils/pk2ps.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils/pk2ps.c'\"
else
  echo shar: Extracting \"'utils/pk2ps.c'\" \(6667 characters\)
  sed "s/^X//" >'utils/pk2ps.c' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 90/07/18 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:		sfp2ps.c
X	Author: 	Chris Lewis
X	Specs:		Displays SFP font information in Postscript.
X			(analogous to showfont, but it reads PK/SFP
X			files and generates postscript, rather than
X			executing on the printer using the built-in
X			fonts)
X */
X
X#ifndef	lint
Xstatic char SCCSID[] =
X    "@(#)pk2ps.c 2.1 Copyright 90/07/18 16:49:58 Chris Lewis";
X#endif
X#include "defs.h"
X#include "pk.h"
X
Xint verbose = 0;
Xchar *progname;
Xextern char *mustmalloc();
Xlong pks_malloc;
Xlong highest = 0;
Xint fontonly = 0;
X
X/*	Dummied out for pk.c */
Xneedchar(a, b)
Xint a, b; {
X    return(1);
X}
X
Xmain(argc, argv)
Xint argc;
Xchar **argv; {
X    int c;
X    extern int optind, getopt();
X    extern char *optarg;
X    register struct pkc *pc;
X    register struct pkp *p;
X    extern struct ras *pkrast();
X    struct pkp *pk_read();
X    register int i, len;
X    int chcount;
X
X    progname = argv[0];
X    while((c = getopt(argc, argv, "fD:v")) != EOF)
X	switch(c) {
X	    case 'D':
X#ifdef	DEBUG
X		setdebug(optarg, "diagnostics");
X		break;
X#else
X		fprintf(stderr, "%s: debug not supported recompile with DEBUG\n",
X		    progname);
X		exit(1);
X#endif
X	    case 'v':
X		verbose = 1;
X		break;
X	    case 'f':
X		fontonly = 1;
X		break;
X	    default:
X		fprintf(stderr, "Usage: %s pk_files\n", progname);
X		exit(1);
X	}
X    for (; optind < argc; optind++) {
X	char *filebuf = mustmalloc(strlen(argv[optind]) + 10);
X	register char *cp;
X
X	printf("%%FILE: %s\n", argv[optind]);
X
X	highest = 0;
X
X	cp = strrchr(argv[optind], '/');
X
X	if (cp)
X	    strcpy(filebuf, cp+1);
X	else
X	    strcpy(filebuf, argv[optind]);
X	cp = strchr(filebuf, '.');
X	if (cp)
X	    *cp = '\0';
X
X	if (!fontonly) {
X	    printf("/saveobj save def\n");
X	}
X
X	printf("10 dict dup begin\n");
X	printf("/FontType 3 def\n");
X	printf("/FontMatrix [1 0 0 1 0 0] def\n");
X	printf("/FontBBox [1.28 1.2 -0.16 -.024] def\n");
X	printf("/FontInfo 5 dict def\n");
X	printf("FontInfo begin\n");
X	printf("    /isFixedPitch false def\n");
X	printf("end\n");
X	printf("/Encoding 256 array def\n");
X	printf("0 1 255 {Encoding exch /.notdef put} for\n");
X	printf("Encoding\n");
X
X	p = pk_read(argv[optind]);
X
X	chcount = 0;
X	for (pc = p->pkp_chars; pc; pc = pc->pkc_next) {
X	    if (pc->pkc_next)
X		printf("dup ");
X	    printf("%d /ch%d put\n", pc->pkc_char, pc->pkc_char);
X	    highest = max(highest, pc->pkc_char);
X	    chcount++;
X	}
X
X	if (verbose) {
X	    fprintf(stderr, "Emitting %s, %d codes\n", filebuf, chcount);
X	}
X
X	if (highest <= 127)
X	    highest = 128;
X	else
X	    highest = 256;
X
X	printf("/BuildChar\n");
X	printf("    { 0 begin\n");
X	printf("	/char exch def\n");
X	printf("	/fontdict exch def\n");
X	printf("	/charname fontdict /Encoding get char get def\n");
X	printf("	/charinfo fontdict /CharData get charname\n");
X	printf("	    get def\n");
X	printf("	/wx charinfo 0 get def\n");
X	printf("	/charbbox charinfo 1 4 getinterval def\n");
X	printf("	wx 0 charbbox aload pop setcachedevice\n");
X	printf("	charinfo 5 get charinfo 6 get true\n");
X	printf("	fontdict /imagemaskmatrix get\n");
X	printf("	    dup 4 charinfo 7 get put\n");
X	printf("	    dup 5 charinfo 8 get put\n");
X	printf("	charinfo 9 1 getinterval cvx\n");
X	printf("	imagemask\n");
X	printf("    end\n");
X	printf("} def\n");
X	printf("\n");
X	printf("/BuildChar load 0 6 dict put\n");
X
X#define	DOTS2UNITS(x)	((x) / ((p->pkp_npts / POINT) * 300))
X
X	printf("/imagemaskmatrix [%.2f 0 0 -%.2f 0 0] def\n",
X	    1 / DOTS2UNITS((double) 1),
X	    1 / DOTS2UNITS((double) 1)
X	    );
X	printf("/CharData %d dict def\n", chcount+1);
X	printf("CharData begin\n");
X
X	for (pc = p->pkp_chars; pc; pc = pc->pkc_next) {
X	    register struct ras *r;
X	    r = pkrast(pc);
X	    if (!r) {
X		fprintf(stderr, "%0: no raster image for %02x\n",
X		    progname, pc->pkc_char);
X		continue;
X	    }
X	    printf(
X	    "    /ch%d [ %.2f %.2f %.2f %.2f %.2f %d %d %.2f %.2f\n\t<",
X		pc->pkc_char,
X
X		DOTS2UNITS((double) pc->pkc_dx / pow2(16)),	/* width */
X
X		DOTS2UNITS((double) -pc->pkc_x_off),		/* bblx */
X		DOTS2UNITS((double) pc->pkc_y_off -
X		    pc->pkc_height + 1),			/* bbly */
X		DOTS2UNITS((double) -pc->pkc_x_off + pc->pkc_width),/* bbux */
X		DOTS2UNITS((double) pc->pkc_height + pc->pkc_y_off),/* bbuy */
X
X		r->ras_width,
X		r->ras_height,
X		(double) pc->pkc_x_off - .5,			/* shift x */
X		(double) pc->pkc_y_off - .5			/* shift y */
X	    );
X	    len = r->ras_height * r->ras_bline;
X	    for (i = 0; i < len; i++) {
X		printf("%02x", r->ras_raster[i]);
X		if (i % 30 == 29)
X		    putchar('\n');
X	    }
X	    printf(">]\n    def\n");
X	    free(r->ras_raster);
X	    free(r);
X	}
X	printf("    /.notdef [ .24 0 0 0 0 1 0 0 0 <>] def\n");
X
X	printf("    end\n");
X	/*	Should be unique enough between Postscript runs	*/
X	printf("    /UniqueID %ld def\n", (long) getpid() + (optind << 16));
X	printf("end\n");
X	printf("/%s exch definefont pop\n", filebuf);
X
X	/* end of font definition */
X	if (!fontonly) {
X
X	    printf("36 %d moveto\n", 11 * 72 - 36);
X	    printf("/%s findfont 18 scalefont setfont\n", filebuf);
X	    printf("(%s) show\n", argv[optind]);
X	    printf("36 %d moveto\n", 11 * 72 - 54);
X	    printf("/Courier findfont 18 scalefont setfont\n");
X	    printf("(%s) show\n", argv[optind]);
X
X#ifdef	NEVER
X	    printf("/%s findfont 10 scalefont setfont\n", filebuf);
X	    printf("72 500 moveto (ABCDEFGHIJKLMNOPQRSTUVWXYZ) show\n");
X	    printf("72 400 moveto (abcdefghijklmnopqrstuvwxyz) show\n");
X#endif
X
X#define	XPOS(i)	(((i) % 16) * 30 + 72)
X#define	YPOS(i) (680 - ((i) / 16) * 44)
X#define	PSIZE	7
X#define	PSEP	8
X
X	    printf("/%s findfont 18 scalefont setfont\n", filebuf);
X	    for (i = 0; i < highest; i++) {
X		printf("%d %d moveto\n", XPOS(i), YPOS(i) + 3 * PSEP + 3);
X		printf("(\\%03o) show\n", i);
X	    }
X	    printf("/Courier findfont %d scalefont setfont\n", PSIZE);
X	    for (i = 0; i < highest; i++) {
X		if ((i % 16) == 0) {
X		    printf("%d %d moveto\n", 36, YPOS(i) + 2 * PSEP);
X		    printf("(DEC:) show\n");
X		    printf("%d %d moveto\n", 36, YPOS(i) + PSEP);
X		    printf("(HEX:) show\n");
X		    printf("%d %d moveto\n", 36, YPOS(i));
X		    printf("(OCT:) show\n");
X		}
X		printf("%d %d moveto\n", XPOS(i), YPOS(i) + 2 * PSEP);
X		printf("(%3d) show\n", i);
X		printf("%d %d moveto\n", XPOS(i), YPOS(i) + PSEP);
X		printf("( %02x) show\n", i);
X		printf("%d %d moveto\n", XPOS(i), YPOS(i));
X		printf("(%03o) show\n", i);
X	    }
X	    printf("showpage\n");
X	    printf("saveobj restore\004");
X	}
X
X	pk_destroy(p);
X	free(filebuf);
X    }
X    exit(0);
X}
END_OF_FILE
  if test 6667 -ne `wc -c <'utils/pk2ps.c'`; then
    echo shar: \"'utils/pk2ps.c'\" unpacked with wrong size!
  fi
  # end of 'utils/pk2ps.c'
fi
if test -f 'utils/showfont.S' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'utils/showfont.S'\"
else
  echo shar: Extracting \"'utils/showfont.S'\" \(4512 characters\)
  sed "s/^X//" >'utils/showfont.S' <<'END_OF_FILE'
X%%STARTSHELL%%
X#@(#)showfont 2.1 90/07/18
X# Shell script to dump postscript fonts with widths into a pretty table
X# usage: showfont <fontname>
X# emits postscript to display the font called <fontname> along with
X# interesting font metrics.  If a file exists called <fontname>,
X# the file is merged with the postscript, and a second argument is
X# used for the font name.
X#
X#	Cell format:
X# octal    decimal    hex
X# height   CHARACTER
X# widthps
X# lbear    catwidth   rbear
X#
X# widthps is suitable for the widths/widthps/entries (unitwidth 10, res 720)
X# cat width is same scale as CAT: (unitwidth 6, res 432)
X# the Character is displayed at 18 point.
X
Xcopies=1
Xif [ $# = 0 ]
Xthen
X    echo "usage: showfont <fontname>" >&2
X    exit 1
Xfi
X(
Xcat << !END!
X%! PS-Adobe 1.0
X%%Title: showfont -- displays the font metrics in a pretty one page table
X%%Creator: Ken Marchant & Chris Lewis
X%%CreationDate: March 1989
X%%Pages: atend
X%%
X/SAVEOBJ save def
X!END!
X
Xif [ -r "$1" ]
Xthen
X    cat $1
X    shift
Xfi
Xfont=$1
Xcase $font in
X    /*)
X	font=`echo $font | sed -e 's/^.//'`
X	;;
Xesac
Xcat << !ENDTHING!
X
X(START showfont display $font `date`\n) print
Xflush
X/FONTname ($font) def
X
X%%  Setup functions used and etc...
X
X/rowmove {
X    /I exch def
X    I 16 mod 30 mul 72 add
X    680 I 16 idiv 30 mul sub
X    moveto
X} def
X
X/widths 259 array def
X/widthps 259 array def
X/heights 259 array def
X/lbear 259 array def
X/rbear 259 array def
X/tmp 1 string def
X.5 setlinewidth
X
X/Helvetica findfont 9 scalefont setfont
X
X%% Draw the grid around the cells
X%% and add the hex labels to the outside of the box
X
X0 1 16
X{
X    /i exch def
X    /j i 30 mul def
X    %% vertical lines
X    j 62 add dup 220 moveto
X    700 lineto
X    stroke
X
X    %% horizontal lines
X    j 220 add dup 62 exch moveto
X    542 exch lineto
X    stroke
X
X    i 16 ge { clear exit } if
X
X    %% hex across the top
X    j 77 add dup 705 moveto
X    i 16 (   ) cvrs show
X
X    %% hex along the sides
X    50 670 j sub 12 add moveto
X    i 16 (   ) cvrs show
X}
Xfor
X
X%	scale width in points at 18pts to width in 1/720'nds at 10 point.
X/myscaleps {
X    720 mul 72 div 10 mul 18 div round cvi
X} def
X
X
X%	scale width in points at 18 pts, to width in 1/432'nds at 6 point.
X/myscale {
X    2 mul
X    % 10 mul round cvi 10 div
X    round cvi
X} def
X
X/irmove {
X    CY add exch
X    CX add exch moveto
X} def
X
X%% Print out the headings in the font to be displayed and Times-Roman
X
X/Times-Roman findfont 18 scalefont setfont
X295 FONTname stringwidth pop .5 mul sub 750 moveto FONTname show
X
XFONTname findfont 18 scalefont setfont
X295 FONTname stringwidth pop .5 mul sub 730 moveto FONTname show
X
X%% loop thru all the charcters and display in 18 point
X%% insert the character widths into the widths array
X0 1 258
X{
X    newpath
X    /i exch def
X    i rowmove
X    i 255 gt {
X	i 256 eq { /tmp (ff) def } if
X	i 257 eq { /tmp (ffi) def } if
X	i 258 eq { /tmp (ffl) def } if
X    } {
X	/tmp 1 string def
X		 tmp 0 i put
X    } ifelse
X    tmp show
X
X    widths i tmp stringwidth pop dup /width exch def
X    myscale put
X
X    widthps i tmp stringwidth pop myscaleps put
X
X    %	Set current point again.
X    i rowmove
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 i llx curx sub myscale put
X
X    % calc height as upper y - lower y
X
X    heights i ury lly sub myscale put
X
X    % calc right bearing as width - upper x
X
X    rbear i width urx curx sub sub myscale put
X
X}
Xfor
X
X%%display the widths in the widths array
X
X/Helvetica-Narrow findfont 5 scalefont setfont
X
X0 1 258
X{
X    /i exch def
X
X    i rowmove
X
X    currentpoint /CY exch def /CX exch def
X
X    2 -8 irmove
X    widths i get (       ) cvs show
X
X    -9 8 irmove
X    heights i get (       ) cvs show
X
X    -9 0 irmove
X    widthps i get (       ) cvs show
X
X    -9 -8 irmove
X    lbear i get (       ) cvs show
X
X    12 -8 irmove
X    rbear i get (       ) cvs show
X
X    -9 15 irmove
X    i 8 (   ) cvrs show
X
X    1 15 irmove
X    i 10 (   ) cvrs show
X
X    12 15 irmove
X    i 16 (   ) cvrs show
X}
Xfor
X
XFONTname findfont 18 scalefont setfont
X72 144 moveto (This is a test of this font.) show
X72 124 moveto (ABCDEFGHIJKLMNOPQRSTUVWXYZ) show
X72 104 moveto (abcdefghijklmnopqrstuvwxyz) show
X72 84 moveto (0123456789!@#\$\\%^&*\\(\\)_+=) show
X72 64 moveto ({}[]\\\\|;:'",.<>?/&~\`) show
X
Xshowpage
X(END showfont display $font `date`\n) print
Xflush
XSAVEOBJ restore
X%%Pages: 1
X!ENDTHING!
Xecho "\004\c"
X)
END_OF_FILE
  if test 4512 -ne `wc -c <'utils/showfont.S'`; then
    echo shar: \"'utils/showfont.S'\" unpacked with wrong size!
  fi
  # end of 'utils/showfont.S'
fi
if test -f 'widths/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'widths/Makefile'\"
else
  echo shar: Extracting \"'widths/Makefile'\" \(6562 characters\)
  sed "s/^X//" >'widths/Makefile' <<'END_OF_FILE'
X#2.4 90/08/08
XSCRIPTS	= gfnttab
XTD	= testdir
XPSW	= \
X	widthps/DESC \
X	widthps/AB widthps/BR widthps/HB widthps/I  widthps/PX \
X	widthps/AI widthps/BX widthps/HO widthps/NB widthps/R \
X	widthps/AR widthps/C  widthps/NI widthps/S \
X	widthps/AX widthps/CB widthps/HX widthps/NR widthps/S2 \
X	widthps/B  widthps/CO widthps/Hb widthps/NX widthps/ZC \
X	widthps/BB widthps/CX widthps/Hi widthps/PB widthps/ZD \
X	widthps/BI widthps/Hr widthps/PI widthps/BO widthps/H \
X	widthps/Hx widthps/PR
X
Xinclude ../makeincl
X
Xall:	subst.done $(PSW) dit2catwid $(SCRIPTS) ljwidths widths
X
X$(PSW):
X	@eval `echo $@ | sed -e 's/\(.*\)\/\([^\/]*\)$$/d=\1 f=s.\2/'` ; \
X	    cd $$d ; $(GET) $(GFLAGS) $$f
X
Xwidths:	gfnttab dit2catwid
X	-rm -f gfnttab.log
X	for i in width* ; \
X	do \
X	    echo "Processing $$i" ; \
X	    ./gfnttab $$i >> gfnttab.log ; \
X	done
X
Xsubst.done:	../makeincl ../sedscript
X	rm -f $(SCRIPTS)
X	touch subst.done
X
X../utils/pk2ditwid:
X	cd ../utils ; make pk2ditwid
X
X# The "for ps in" list below is sort of monotonic increasing ratios
X# away from point size 10, further, the larger fonts are the ones
X# most likely to not be EXACTLY what pointsize they say they are
X# (eg: my PK 36 is actually closer to 32)
Xsepwidths: ../utils/pk2ditwid
X	rm -f pk2sep.log pk2sep.err
X	@$(IGNORESH) if [ -d $(LJF) ] ; \
X	then \
X	    fontlist=`find $(LJF) -type f \
X		'(' -name '*.*.pk' -o -name '*.*.sfp' ')' -print | \
X		sed -e 's/^\.\///' -e 's/\..*$$//' -e 's/.*\///' | sort -u` ; \
X	    for font in $$fontlist ; \
X	    do \
X		case $$font in \
X		?) ;; \
X		??) ;; \
X		*) \
X		    echo "$$font can't be a psroff/troff font!" \
X			>> pk2dit.err ; \
X		    continue ; \
X		    ;; \
X		esac ; \
X		file= ; \
X		for ps in 10 11 9 12 8 7 14 6 16 18 20 22 24 28 36 ; \
X		do \
X		    file= ; \
X		    if [ -r $(LJF)/$$font.$$ps.pk ] ; \
X		    then \
X			file=$(LJF)/$$font.$$ps.pk ; \
X		    elif [ -r $(LJF)/$$font.$$ps.sfp ] ; \
X		    then \
X			file=$(LJF)/$$font.$$ps.sfp ; \
X		    fi ; \
X		    if [ -n "$$file" ] ; \
X		    then \
X			if [ "$$font" = S ] ; \
X			then \
X			    args=-S ; \
X			else \
X			    args= ; \
X			fi ; \
X			echo "pk2ditwid: $$file" >> pk2sep.log ; \
X			../utils/pk2ditwid $$args $$file >> pk2sep.log \
X			    2>> pk2sep.err ; \
X			if [ $$? != 0 ] ; \
X			then \
X			    echo "pk2ditwid (on $$font) failed - check pk2sep.log" \
X				>> pk2sep.err ; \
X			else \
X			    mv $$font widthlj/$$font.$$ps ; \
X			fi ; \
X		    fi ; \
X		done ; \
X	    done ; \
X	    for ps in 10 11 9 12 8 7 14 6 16 18 20 22 24 28 36 ; \
X	    do \
X		for i in $$fontlist ; \
X		do \
X		    if [ ! -r widthlj/$$i.$$ps ] ; \
X		    then \
X			continue ; \
X		    fi ; \
X		    case $$i in \
X			S) \
X			    args="-s widthlj/R.$$ps widthlj/S.$$ps" ; \
X			    if [ ! -r widthlj/R.$$ps ] ; \
X			    then \
X				continue ; \
X			    fi ; \
X			    ;; \
X			*) \
X			    args="widthlj/S.$$ps widthlj/$$i.$$ps" ; \
X			    ;; \
X		    esac ; \
X		    echo "dit2catwid: $$i.$$ps" >> pk2sep.log ; \
X		    ./dit2catwid $$args widthlj/ft$$i.$$ps >> pk2sep.log \
X			2>> pk2sep.err ; \
X		done ; \
X	    done ; \
X	fi
X
X# The "for ps in" list below is sort of monotonic increasing ratios
X# away from point size 10, further, the larger fonts are the ones
X# most likely to not be EXACTLY what pointsize they say they are
X# (eg: my PK 36 is actually closer to 32)
Xljwidths: ../utils/pk2ditwid
X	rm -f pk2dit.log pk2dit.err
X	@$(IGNORESH) if [ -d $(LJF) ] ; \
X	then \
X	    fontlist=`find $(LJF) -type f \
X		'(' -name '*.*.pk' -o -name '*.*.sfp' ')' -print | \
X		sed -e 's/^\.\///' -e 's/\..*$$//' -e 's/.*\///' | sort -u` ; \
X	    for font in $$fontlist ; \
X	    do \
X		case $$font in \
X		?) ;; \
X		??) ;; \
X		*) \
X		    echo "$$font can't be a psroff/troff font!" \
X			>> pk2dit.err ; \
X		    continue ; \
X		    ;; \
X		esac ; \
X		file= ; \
X		for ps in 10 11 9 12 8 7 14 6 16 18 20 22 24 28 36 ; \
X		do \
X		    if [ -r $(LJF)/$$font.$$ps.pk ] ; \
X		    then \
X			file=$(LJF)/$$font.$$ps.pk ; \
X			break ; \
X		    elif [ -r $(LJF)/$$font.$$ps.sfp ] ; \
X		    then \
X			file=$(LJF)/$$font.$$ps.sfp ; \
X			break ; \
X		    fi ; \
X		done ; \
X		if [ -n "$$file" ] ; \
X		then \
X		    echo "Best fit for $$font is $$file" >> pk2dit.log ; \
X		    if [ "$$font" = S ] ; \
X		    then \
X			args=-S ; \
X		    else \
X			args= ; \
X		    fi ; \
X		    echo "Creating widthlj/$$font from $$file" ; \
X		    ../utils/pk2ditwid $$args $$file >> pk2dit.log \
X			2>> pk2dit.err ; \
X		    if [ $$? != 0 ] ; \
X		    then \
X			echo "pk2ditwid (on $$font) failed - check pk2dit.log" \
X			    >> pk2dit.err ; \
X		    else \
X			mv $$font widthlj/$$font ; \
X		    fi ; \
X		fi ; \
X	    done ; \
X	fi
X	@test ! -s pk2dit.err || (cat pk2dit.err ; exit 1)
X	@rm -f pk2dit.err
X
Xinstall:
X
Xinstallwidths:
X	@$(IGNORESH) \
X	test -w $(FONTDIR) || (echo "Install as root" ; exit 1 ; ) ; \
X	for i in width* ; \
X	do \
X	    base=`echo $$i | sed -e 's/.*width//'` ; \
X	    test -d $(FONTDIR)/$$base || mkdir $(FONTDIR)/$$base ; \
X	    test -w $(FONTDIR)/$$base || \
X		(echo "Install as root" ; exit 1 ; ) ; \
X	    files=`echo width$$base/ft*` ; \
X	    if [ "$$files" = "width$$base"'/ft*' ] ; \
X	    then \
X		echo "No $$base widths to install" ; \
X		continue ; \
X	    fi ; \
X	    echo "Installing $$base widths" ; \
X	    mv width$$base/ft* $(FONTDIR)/$$base ; \
X	done
X
Xcmp:
X	test -d $(TD) || mkdir $(TD)
X	@$(IGNORESH) for i in width* ; \
X	do \
X	    base=`echo $$i | sed -e 's/.*width//'` ; \
X	    cd $$i ; \
X	    for j in ft* ; \
X	    do \
X		if [ ! -f $$j ] ; \
X		then \
X		    continue ; \
X		fi ; \
X		echo "Comparing $$j to $(FONTDIR)/$$base/$$j" ; \
X		set +e ; \
X		cmp -l $$j $(FONTDIR)/$$base/$$j ; \
X		set -e ; \
X	    done ; \
X	    cd ../ ; \
X	done > $(TD)/widthdiff 2>&1
X
Xtest:	dit2catwid $(SCRIPTS)
X	test -d $(TD) || mkdir $(TD)
X	cp widthps/S $(TD)/S
X	sed -e '1,/charset/d' widthps/S2 >> $(TD)/S
X	./dit2catwid -v $(TD)/S widthps/R $(TD)/ftR > $(TD)/ftR.nout
X	@echo "Comparing $(TD)/ftR and $(FONTDIR)/ps/ftR"
X	-cmp -l $(TD)/ftR $(FONTDIR)/ps/ftR
X	./dit2catwid -vc $(TD)/S widthps/R $(TD)/ftR.c > $(TD)/ftR.c.nout
X	./dit2catwid -sv widthps/R $(TD)/S $(TD)/ftS > $(TD)/ftS.nout
X	@echo "Comparing $(TD)/ftS and $(FONTDIR)/ps/ftS"
X	-cmp -l $(TD)/ftS $(FONTDIR)/ps/ftS
X	./dit2catwid -svc widthps/R $(TD)/S $(TD)/ftS.c > $(TD)/ftS.c.nout
X
Xclean:
X	rm -rf dit2catwid $(SCRIPTS) */ft* *.o $(TD) *.fonts.new
X	rm -f gfnttab.log pk2dit.log pk2sep.log pk2dit.err pk2sep.err
X
Xdit2catwid.o:	../defs.h
X
X../cattab.o:	../defs.h
X	@echo "cattab.o is out of date, please run make troff2ps in top level first"
X	exit
X
Xdit2catwid:	../cattab.o dit2catwid.o
X	$(CC) $(CFLAGS) -o dit2catwid dit2catwid.o ../cattab.o $(LIBFLAGS)
END_OF_FILE
  if test 6562 -ne `wc -c <'widths/Makefile'`; then
    echo shar: \"'widths/Makefile'\" unpacked with wrong size!
  fi
  # end of 'widths/Makefile'
fi
echo shar: End of archive 11 \(of 16\).
cp /dev/null ark11isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 16 archives.
    echo "Read the README to get started with psroff installation"
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still must unpack the following archives:
    echo "        " ${MISSING}
fi
exit 0
-- 
Chris Lewis, Phone: TBA
UUCP: uunet!utai!lsuc!ecicrl!clewis
Moderator of the Ferret Mailing List (ferret-request@eci386)
Psroff mailing list (psroff-request@eci386)