Path: utzoo!attcan!lsuc!ecicrl!clewis From: clewis@ecicrl.UUCP (Chris Lewis) Newsgroups: alt.sources Subject: Psroff 2.0 Part 12 of 16 Message-ID: <949@ecicrl.UUCP> Date: 17 Nov 90 05:00:15 GMT Reply-To: clewis@ecicrl.UUCP (Chris Lewis) Distribution: alt Organization: Me... Lines: 1554 Submitted-by: Chris Lewis Archive-name: psroff2.0/Part12 #! /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: debug.c fonts.lj/B.10.pk.UU fonts.lj/R.10.pk.UU # fonts.lj/S.10.pk.UU fonts.lj/S.11.pk.UU pkc.c # utils/fonts/cmtt10.pk.UU utils/pktype.c utils/psxlate.c # Wrapped by clewis@ecicrl on Fri Nov 16 23:37:04 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 12 (of 16)."' if test -f 'debug.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'debug.c'\" else echo shar: Extracting \"'debug.c'\" \(2293 characters\) sed "s/^X//" >'debug.c' <<'END_OF_FILE' X#include "defs.h" X X#ifndef lint Xstatic char SCCSid[] = X "@(#)debug.c: 2.4 Copyright 90/10/22 14:53:06 Chris Lewis"; X#endif X X#ifdef DEBUG X Xint debug = 0; X X#define D_CAT 1 X#define D_SPEC 2 X#define D_CHAR 4 X#define D_FONT 8 X#define D_BEND 0x10 X#define D_PK 0x20 X#define D_VERB 0x40 X#define D_FLSH 0x80 X Xstruct dbm { X char req; X int bit; X} dbm[] = { X {'c', D_CAT}, X {'s', D_SPEC}, X {'C', D_CHAR}, X {'f', D_FONT}, X {'F', D_FLSH}, X {'b', D_BEND}, X {'p', D_PK}, X {'v', D_VERB}, X {'A', ~0}, X {0, 0} X}; X Xsetdebug(str, df) Xchar *str, *df; { X register struct dbm *d; X for(;*str; str++) { X for(d = dbm; d->req; d++) X if (d->req == *str) { X debug |= d->bit; X break; X } X if (!d->req) { X fprintf(stderr, "%s: don't understand %c debug flag\n", X progname, *str); X exit(1); X } X } X X if (debug) { X if (!(diagFile = fopen(df, "w"))) { X fprintf(stderr, "%s: Cannot open diagnostics file (%s)\n", X progname, df); X exit(1); X } X fprintf(diagFile, "Debug flags: %x\n", debug); X } X} X X#ifdef VFPRINTF X#include X/* VARARGS */ Xdprintf(level, va_alist) Xint level; Xva_dcl X{ X va_list args; X char *fmt; X X if (!(debug&level)) X return; X X va_start(args); X fmt = va_arg(args, char *); X VFPRINTF(diagFile, fmt, args); X va_end(args); X if (debug&D_FLSH) X fflush(diagFile); X} X#else X/* VARARGS1 ARGSUSED */ Xdprintf(level, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Xint level; Xchar *fmt; Xint a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; { X char buf[BUFSIZ]; X X if (!(debug&level)) X return; X X sprintf(buf, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); X fprintf(diagFile, buf); X if (debug&D_FLSH) X fflush(diagFile); X} X#endif X#endif X Xchar * Xmustmalloc(n, msg) Xint n; Xchar *msg; { X extern char *malloc(); X register char *p = malloc((unsigned) n); X if (!p) { X fprintf(stderr, "%s: Out of space! (requesting %d bytes, key: %s)\n", X progname, n, msg); X exit(1); X } X clrarray(p, n); X return(p); X} X X#ifdef BCOPY X#ifndef BCOPYLIB X/* "slowish" routines when you don't have memcpy and friends X */ Xbcopy(from, to, len) Xregister char *from, *to; Xregister int len; X{ X while(len--) X *to++ = *from++; X} X Xbzero(array, len) Xregister char *array; Xregister int len; X{ X while(len--) X *array++ = '\0'; X} X#endif BCOPYLIB X#endif END_OF_FILE if test 2293 -ne `wc -c <'debug.c'`; then echo shar: \"'debug.c'\" unpacked with wrong size! fi # end of 'debug.c' fi if test -f 'fonts.lj/B.10.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fonts.lj/B.10.pk.UU'\" else echo shar: Extracting \"'fonts.lj/B.10.pk.UU'\" \(6381 characters\) sed "s/^X//" >'fonts.lj/B.10.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/B.10.pk XM]UD``*``````````!":N``0FKM`0J0```!@)"/P<%%4W-D955'+0$:@````8 XM"@CV'$151S8V-51B@.`0LP```"0)!_,#P;&/BP$R$````/!AW\'!0= XMCG%#XRST',%!T!\B````&1$._AP49"]D8?+5"(C,T)"(E)"$U(W]2*4(J,C,7$HI\;&QL XM>I(6(5(E$T(Y\R1T)%8D(B4C,C0C)#,A1:EM'R?`RL2:2HR:"HT9RE%92I&8RI6<2M7C&=Y(EEH(F:D XM-<.X>73`%2<````-!P[]'!0O8=$4$?8?45\4)!70)B@````3"RG\'J&1@H." XM@H-_-T?S?B1E;H1U?B2/.$CSDY*BDY*QL=@F*0```!,+*?T>&QLI.2HI.?.$ XMCSCB1UZ'1EXF1_-T?S(]\]XCWB/>(]\]XCWB/?/>(]\P$" XM`1#0(S`````8$QO^&F>D-'-S5'1#DSXDE!ZUE?%)0SDT1T4W-T-*=L`3,0`` XM`!@1&_T:DM!*=K9"7.UE?]/`,C(````8$QO^&EB<8U*T%*,D XMDT5D7*=@P#0Y````&!,;_AIGJW145'0TA#24'UE!XUE12&(X8D815#0A5E-= XM%?T4,X4E=#5S1'135(JG@+`0.@````T&$OT1%!S!3:0`T]```` XM)1X-_1"T&5![T=`AN0```!<0'?T45+XVM`3^0M/?+3P\2TM7,?5J=!2",V-9 XM0-`A/P```!<0'?T<2&)D,H04>O91-UI;2SP\/?+>0@3TOC:T<+!,0````"4> XM'?T( XM;&==-&7416U35=8T;7)%V"/E;=]KTA749&TV5=-E;29ETF==%H;&IWC-$DTI XM8C#(%T@````E(!S^&_T4T>E&QH_;CK;&3]%-$+@-20```!(0'/\;U.RU9=3` XM&TH````9%!S_&U_2[4ME)V1&8_96-E5457-%J(#(1TL````E(!S^&_T7M&T3 XMEM`Z;#MK+0:BT6@])G/39CU&4]5D358VU&)]21;3@GTG1M)F;19GT&=M!H;& XMEK:7IJ:FMI:W3]%-$,@=3````!T8'/X;_3SM%M7B;"]<:R5J-6E%9V']H0 XMR$!-````+2@<_ANM?8U;1]5XXB%=,A6/(ET2)8\C7"-8\D6B18XB58)5CR96 XM)ECR=4)UCRA2*%CB*7E8\J6E3Z1K;T:U5J5FAGU9ZFU/T=#`1E$````D'23]&ZG455T$E*6U?UT%5=)3 XM;28O744>=M1O%=12;28UTE16-E54$R-74A4A6D$6709%U+<=8G'6-2_6K]>- XMEMM#R#12````)"$<_AO7T-K1:&T&I<:UOD:VIK6VI<:%T=/49UTFA=%H;0Y6 XMEL]I9B1J9=-U0AT9@L`W4P```!L4'/T;6%%,$S1V)*0CPQ3#'TT"%=)]"ZT7 XMT6TGT7T:K2;273;]%M$Q/0,4LR:$(QQ!6&#`'U0````A'!S^&Q_=)&9D(W9S XM(H:"$X:%XY:2[2MM/]50R!]5````)2`<_AO]&*[51M,I73*5TBM=`\6ST6=- XM/1V)L,@Z5@```"0A'/\;_1FD;4*?;2*GT#MM`L>ST&LM%Z+2]I+4]G+5=3UF XM4M=S/88RV7(MKV$MSB?>]0$//2#(6E<````Q+AS_&_T3T5I&MM`H:WPH>VLY XM:VLJ:HHK]IB2QW(F<]!G(F*C8]Z?:]<7;313<\]$]#`0E@````D(1S_&Q_13'>RT7D])W/4 XM9RU74M=S/88CV7$MN-WWWGWGW(VZVB)]@D;7-'U39]0H;3*7T3I]`L>RT'7\ XM;2#(+UD````D(1S_&_T9I'TCE]$K?#M\+0>BTG@])X+4=BUG0]9T+8EMK]&<`X6@```!T7'/T;']@FAC27,Z8_.F0J92EU*6TVTWTVT_;3;3>" XM9I)6HD>B1J,VLS:C-K,GI":6']D0N`Q;````#0````&`T'^QQALY5S$T0T$W,1D1#`%6`````-!P[^'%%"3Q7Q XM7Q810='Q8D'`*6$````7%1+_$4FS5(55961E96-UTUR88E9554=45U/B6%1' XM$454$G1T8,@F8@```!L7'?\<^-7H754GF$1V@V647UI$Y5I?-:1%E%:#9!)4 XM4 XM4V.#1),DHR2I^M_BTDTELB2R-))48Y=0T!MF````#Q(=`!R7E#-T-51%145% XM4UY%G]GM6OQ0P#1G````&!4;_Q%G-%-4(S14(S-S(CXT='-SA%234Y(7L=?R XMUM"-)])=0DJN+003T#)+1$=(M<@<:````!L8'?\<^-;H765&E2(TA1%D?V=6 XMZEA3^RN0$FD````."Q[_'31N-F3<^&ZC4ZS`&VH````/#B8#'92>-I0$[X[4 XME1-:2D05-#-#9E#(+&L````9%AW_'/C4Z%U/5)16.%4Y5"M3+%$]"LNV%+4E XMI3651)5%A55U93^CD,@-;`````X+'?\<^&[;4]G8(&T````H)1+_$81G9H(C XM1"-(419"%D?V=G5NI86%/[*RL-@8;@```!L8$O\1A&:"(TA1%D?V=6ZEA3^R XML-`?;P```!@5$O\1=[145;7Q2T-)14='14MW#()W`````;%QK_ XM$8)VM$=G1EE%651:1.5:4UI$651916=&=4=2:N5=+[S`*7$````9%AK^$692 XM=$(C9&94A46%1)4^595$E46%5(5C=G-7EB74Y5T?L-@7<@```!01$O\1-4)$060B=BV!9U````&Q@2_Q'X6&ZU XMA65V=':$0AAV.,@B=@```!D6$O\1^EGU2P```!4.*?T>I(.CLK[#LK.3A-/3 XMPL[#PL/#U-@;?0```!4.*?T>33T\+.P\+#P]2#H[*^P[*SDX2L`WNP```"`9 XM'?PA6:%"18%15T-1 X',SB$=8#U]M,V X` Xend END_OF_FILE if test 6381 -ne `wc -c <'fonts.lj/B.10.pk.UU'`; then echo shar: \"'fonts.lj/B.10.pk.UU'\" unpacked with wrong size! fi # end of 'fonts.lj/B.10.pk.UU' fi if test -f 'fonts.lj/R.10.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fonts.lj/R.10.pk.UU'\" else echo shar: Extracting \"'fonts.lj/R.10.pk.UU'\" \(6323 characters\) sed "s/^X//" >'fonts.lj/R.10.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/R.10.pk XM]UD``*``````````!":N``0FKM@.J0```!4&!_L<\S0S0U)1X`ZH````%08' XM]QP<<\YS"`#@#[,````?"`?U'3Q"@8&!0CS`$2$````,!![\'1(=_L$MDA@2 XM$.`<(@```!4-#/\<8&>'OC[0T("$!"`B`A`1`1`1`0"P/",````C'B7^',+B XM)RQC8\;B)RQC8\;C)RQC8XT!TN*BD8&!@8)_)_)_)S?B XM)^LXXB@X\I\I\I*1H:&AV",I````$`HJ_AX:&AH9*?*?*?*#CB*.L^)RPL`X[-+`X`XL````#`0,_`-O]Q$1(DC("2T````."P(` XM"=G@"BX````,!`3\`V_VT"XO````%1`I_AX!#RT_TM/2T]\M/?+3WRT]\M/2 XMT]\M/?+3WRT]\M/2T]\M/?(!`-`D,````!40'?X;9*)")X@R&308-24I90 XMP"XT````%1(<_QO/+2/1]-`1/"$\$CL3.B,Z%#D5."4X%C<7-B:SN]`N-0```!40'?X;(H)+6FB.40$1-7$A0F$18E)S09/3WB02F.*%LR&4 XM(9-!0Z/Q*C$Y(R@S*"4F)R0J50P",]#E31*0T#0X````%1`=_AMEDD)Q@5&20:(N(J(CDB1R XM15%7$GBGF&(V0E8BA"*6M>/"$K$BH4*"4U&64-`W.0```!40'?X;9*)"#+WAW!#0(;D````4#QW^%&+/ XM3"!;\=XQTM'2PL.SL\XCAY,2H3)R9T#0'S\````4#QW^'$=B8S&3$Y?B@\+# XMLL+"T=+>406BSTPGP%)`````(!L=_ARGU2'> XM'>+22"ELI\`R00```!\<'?\)$8; XM12N[12OC1AOF0!1=V=-9!/6,O340SU#1-)%/2-ST#D[.SD]$U/5 XM>L@B4````!P7'/X;U*2#A)1DI%2S7D2T1+-4I%249(.-"NM-++#`4%$````@ XM&R7^'*?5-3T3D[.SD]`W/2-4TD0]0S]-1"/6,>=-9!/6,O340SU#1&-D4U$Q XM4W,Q43.3(6$3LQ%DT40W&I<=0G'5)2U3,_U8UVV4,,@X4@```!\<'?X;T]-' XM3024M*2DLZXTM)2SI*2DE+1TT,TT9-%(/02$SE24OTE&%$HV%$I$$<_AQ644-2(C*1$B.C(L(3PAXCT!%-%=%=":N,BZG07171323B XMT5_0(3LB(1H3(B8D%77`(%0````>&QS_&QW".$Q.V%PK@,70````P'*0`>PNV%Q.`/7@```!4*!?L;#`2"$0*`0.`08``` XM``P%#/T<"(B$0A"WWF#`*F$````5$A+^$3>B4W139&-B<]+SMX0S8V-30```!83&O\1A6)(-?.1 XM?S<9XC4;\S'$$M#S$=+B/4\=3QI$&D,;0BPB+130T"AZ````$@X2_Q$=$V,B XMPL`X XMZM+`.,!4T@```"`;'/X7I]4G+1*RL=(9'4%QU!$5'4$Q0=,4$QTQ82'2%Q$= XM(9+1&BT!LOP<*QT"H=$I'2$1<=(2%ATQ,4'3%!,=05$1U!<=09'2&RLM$G+5 XM>L`??@```"`;"?X.5=,3C2$KT!%%2UA86T5!'0LATH,=-5#`3/L````J)1S^ XM%]HJ+82$UDA-'fonts.lj/S.10.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/S.10.pk XM]UD``*``````````!":N``0FKL!#(0```"`?*?X>`1$!`OWRW_+?XBW_+?\M XM_RW_+?\M\M`M$L/1*TT"L2/"H3.RTSHM/SDM7STT347-"`P$1$````(QX=_AS1\M[TW&VQ%-H279$TV!1= XM<536%EU1=-0873&4TAI=$;30'%P=!+'16ATDD=-8'41QU58=9%\=A#WQ`O#` XM1D@````@&Q[^'*?5-3T3D[.SD]`W/2-4TD0]0S]-1"/6,4UH,;$XXCT#@QL3 XMC]9!/6,O340SU#1-)%/2-ST#D[.SD]$U/5>@P#%+````'1H=_QS.(MKB38;7 XM\136$EU?$TU"-=/Q5-(E71XA=-#B&4OB&TD=!(+$=*8Y7)@:3@```!P7'/X; XMW..K'?\:,8XJ6/&C$";C&KW`R`]0````'QH<_AO=[<1*1,+`R$%2````'AD< XM_AO;)-%272,UTB1-,472)%TA5-(571%EV$V%V$V?39+:':':'2%QTQ8=06'3 XM)1U"0=0D'4,QTU+:';'0'E,````/#Q;_$8=B4D+"PM'?+.(]/%MJ>FM-\\+1 XMLV#`*%0````@&QW^'#6U6(5'1D%&14,V134U XM1#)+5T9?)&147F141'-4 XM1']$0TDT0SLS0DPR0CT3%]5]GB39;4T6P#Q8````'AD=_AR7TD5+.3@]`U30 XM1#TC--)"/4,>1-1!/4,O320STC7ST#<[.?*R45*24O89%A$5)R42XH>!R#59 XM````(QX=_AL"\=\_/9%?/7%_/5&?/3&_/1'0\\'2\Z'4\X'6\V'8-!V4,=HR XM';01W/3>\M'00EH````6%!_^':720K&!D9*"DF2"9(-BHN(!0H8S8U$C4H$3 XM0I$3,K0CLS+#(\,CLR\\,CPC.S,[)/.B8I*"H+UX````@ XM&2+]&2O$O$O$O$O$O$O$O$O$O$O$O#N4N$N$N$N$N$N$N$N$N$N$NB";UY@) XM7P```!45`P#WU<`P80```!L6$OX1A-,D+#8F$S(=7B+4XR XMU/+5&M`R9````!(/'?X(](]%=![BXQM!='RH4'$4-`D;P```!01$OX1A:)",=7QTVPR$B@S%#4E%20F%3(V%B XM\3877W%F87;V%C(F%3,E%34D%"@R$CMM/C'5XQT`P$%V````&A8:_Q$TT1(3 XM.Q,32A@Y&3@:1APU'0-!T4,=(R'3,1U$UO/53573$CTA,]$4/0%4OQ(S88%#48%347%C46%S45&205&S(3+1?6'8XQV.(='`,'@````: XM%Q(`$4'3%/'3/R'5(1UQ$:&1$9*2^B@1&2@A&2@2*" XMWV)@@!JB````*B4._A"D&L\:P:P:P3T:@:H:H:KQJA?0&Z,````5#B7]'&X! XMXF%241(R,D$B(7$2$92_+1:0&J0````J)`[]$&&X\;@;@;@;?>(;H;H;KQNA XML\@JI@```!42%/\3+331;"([(TDE1R=%*30J0O+&I"*30G125'(TDB.VQ-$M XM,,`JJ````!42%/\3TRT4QK,BE#)T4E1R0Y(DIOPB2B0Y)40MH]HMH]HMH]H]H]I-K5G3"C_;#(++\````@&2+]&=.=7:3:/:/: XM/:+:/:+:/DVBV3V2V3V2V3V#V#UT75?3"K_;$*@,R````!P7"_X.T^BZ(,`5 XMS````!40$/X15HI0]'D*A,J,BHC*Q(M XM`\#0/-@````5$"/^'[\I02)RW"DMHK+8+0/4/2303524V=#=G1"X#=H````9 XM%!7^%-[L3$W@F`O@````)0PI\!W7ZY>8#.$````E#"GP'^N5?2#`&>(````E XM#2GP';*4A(2$A(6$CTA82.)7[<6`T!OC````)0XK^1^>U864E85UA6:#MK6E XMM:6DI:[5R!CD````)0TI\!_MQ9XEE)6?2DE92DI*2DL@F`SP````)0TI^!W7 XMZYA0D`OQ````)0TI^!^.N=S(&?(````E#BGY'2Q+2TM+2TM*6DI:2N):2NVU XMV!OS````)0TK\!_M65E)65E:6EHX5E975UA(5^U8P!KT````)0XI^1^>VUE) XMXEE)64E924E)24E)2BS8"O4````E!2OP'PV0N`GV````*BD!``O=L"G[```` XM*B48_A7!\M;RUBUBUL^=%CU3TTTTUTUSV"V#U]&<^RV"V/+8\LH8"OP````9 XM%!7^%`\@L"G]````*B48_A7*\MCRV"V"O/G1V#USV$UTTTU#U2U3?1G/UBUB X'fonts.lj/S.11.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fonts.lj/S.11.pk XM]UD``+``````````!":N``0FKK!+(0```",B+?XAU1U"_3+3\M/B+3\M/RT_ XM+3\M/RT_+3+#+#+"/#+!3"+!$4P2LB3`+%2RQ4HL=)+'](+)]&++]$+-XD(L XM_VT?33\L@,!*)````"TF%/T39=-:JY\];\;/`0"8````C'!3]$U711(HV%4@G XMG&C0H&D(H*S(9'061T$H=$Z'2.1TD@=%8'1$C@<(D<;)#@9)CW"324ETS-=,D34%%TR1=(E33%5TA XM9-(7397939797939/;+;';';'2&!TQ<=06'4)1U20=85'5)!U3,=12VQW!#0 XM'E,````0#QC^$X9R4D+!TL+1WC+?/4MJ:VM;3>(L*D;`(E0````C'"#]'S7% XM6(@_IJ$U1$570D<_DR.1XK;:[53:;4TVP$!5````(1H?_1Y=/2;8XTUXTD%! XM2D-#1T1$145%0U5%4D9&0>161E%&1D)515-%145$1$=#0TI!04THU^--AM+3 XM4,`T5P```",<'_T>;3U&VN),5T=?)&1D7H145'-44X1$1)-$0Z0T-+,T,]`R XM0CTLU8V>--IM33;`1E@````A'"#^'ZC5-CT3H[/#E,1TT45=%4330^9=-333 XM1%T57TT4<]$X3$D\.RPL.CT"HG%BHF)QH7$18H)A(7&!<2F)/XB"N%!9```` XM)B$@_A[5\=,TS!1````(QHD_!PKU+U+U+U+U+U+ XMT[U+U+U+U+U+T[I+E+E+E+E+H[I+E+E+E+E+E+L@H]F8"5\````7%P,`]MO0 XM.&$````=&!3^$Y4!,T+3(=!&'$8L-Q$:1Q$:.!(8.!0D.A9<\=GC'9 XMXAV@P#%C````&!8>_Q-EH4B!2G$[84)S43&B42*Q03'!0=3Q(=7B$1UN(M?B XM'7XBUN,M;B+7&L`Z9````!01(/X?M+)!DF%R<7+1/1+2\]%-%=!=!:>#0V-3 XM5&)3_A,T95$R,D)! XM,Q%R(42"+Q0Y1#DVXCDUXSDUXSDU.3:0```!`,%/X34J..,XXCCC.#<1-A$W$383)10C)D8,`S XM:@```!H6%/X34J-S=E-Q%&-2,G-!T3,=$S'2,ATUU*LV2?.#@Y-!XA.302.B XM,2.R,3+$,,`\:P```!L5(/T?4]<];SU4U?/535\]5-7SU4U?/535/432(4T" XM,\)#LT238X-S"TRU!U"T^(M/B/4/372;1C0C1;2 XM73/4*A8K%"T%8-`H;P```!83%/X3E<-"DG)C@T2#0Y0DE.(4J.*D%)0DDT.$ XM0X-B_Q/%T3,L)BHG.#([-O.C,=GQUWT3,2.C05*" XM86)B<6-#<7(S<8,B@8/Q.!AO@8,3@8(C@7,R<7-#87)B86*"44.C(3/1?7\= XMGC'9XATPP$QV````'!D=_Q-$TQ,230$Q0]`82QHZ&T@=`W'1-ATD0=0T'4,Q XMU4$==-CSVCV$UQ$]8234%#TQ4](631%ST!@\&4H;.1Q#$QT3,2'40\!2=P`` XM`!X;*?X?UN(=SC'(=SC'<\=3`.7@````<&Q0` XM$U'4)AU$0=53'63R'8,AV1(;&Q+QHK$1LJ$AL;$BH:(BDI(R@X)#96-+&FDI XMAT>D=)!X"7D````-`BW[(=+`(7H````7$"W](<2CPM`\[1/#P[25T4T3T3T> XMT3T3T2TCTD#((7L````7$"W](5T4T3T3T>T3T3T2TCTDH\+0/.T3P\.TE;#` XM)7P````C'!3]%%74$XTQ*]$114PA*$M+2"$L14$=&R'3@QU%#8`K"`U]```` XM(QP4_11'TT?31\@N?@```!<0+?TAXBTN(M+B+2XBTN(M+B+2XBTN(M+B+2XB XMTN(M+B+2XBTN(M+RTA#`27\````C'"+](%6%B4E34R-3,W9S+RE)(3HJ7[*T XMY-M=DQ+9(CUS,M XM%QS]&H?0T(5U4]`S/2,BU"$]1>U]8L`KMP```!X5'/P8G'T533/4/4/5+5/5 XM\M4]7RU@'_UCUO+6/6+6/6/6/636T9S`*KH````C&AS\&)U'UE38/9/9/:+: XM/:\MH]KE+;/;\ML]LML]L]L]M-O6G4#(*KL````C&AS\&-2=;;3;/;/;/;+; XM/;\ML^7;+:/]HMH]HMH]D]D]A%UGU)#`++X````C&B3\')U'UE38/9/9/:+: XM/:+:/:YBVSVRVSVRVSVSVSVTV]:=0*K]P,@LOP```",:)/P0M'D/1+1YCT2T>0]'D+1.B(J]! XM*C(<$BT#P-!.V````!<2)_XBWRF8)#@F)RM[;1"("^`` XM```H#2WO(-OJUX@,X0```"@-+>\BZM9]4,`;X@```"@.+>\@PJ24E)24E925 XMCUAH6.)H6.WF@,`=XP```"@/+_@BGM%OAH:&AH65=I/&Q;6VIJ:O:NT6R!KD XM````*`XM[R+MYI6>)I66GUI:2EI+2TM+3""(#/`````H#BWW(-OJV&"P#/$` XM```H#BWW(H[:`^#8&O(````H#RWX("U,3$Q,3$M;];];]:]J6N`=8,@=\P`` XM`"@.+^\B[1:?:6E:6EM;6SE75UA86&?V?M%HT!OT````*`\M^"*>`=:5GVGU XMGUGUE:2DI*2DI++0N`KU````*`8O[R(/X*@)]@```"TL`0`,T;`M^P```"TF XM&OT7PQV/+7+7\M`0+0.NS2T#KU]O;V X` Xend END_OF_FILE if test 6107 -ne `wc -c <'fonts.lj/S.11.pk.UU'`; then echo shar: \"'fonts.lj/S.11.pk.UU'\" unpacked with wrong size! fi # end of 'fonts.lj/S.11.pk.UU' fi if test -f 'pkc.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pkc.c'\" else echo shar: Extracting \"'pkc.c'\" \(5765 characters\) sed "s/^X//" >'pkc.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: pkc.c X Author: Chris Lewis X Specs: PK Cache X X*/ X X#include "defs.h" X X#if defined(PARTIAL) || defined(INCR) X X#ifndef lint Xstatic char SCCSid[] = X "@(#)pkc.c: 2.1 Copyright 90/07/18 16:52:50 Chris Lewis"; X#endif X X#include "pk.h" X X#include "pkc.h" X Xextern int fontCount; X X/* Does the font *need* this character? */ Xextern struct needmaps *needmaps; X Xneedchar(font, ch) Xregister int font; Xregister long ch; { X register struct needmaps *nbp; X X ch &= 0xff; X X if (ch <= ' ' || (ch > 0x7f && ch <= (0x80 + ' '))) X return(0); X ch -= ' '; X if (ch >= 0x80 - ' ') X ch -= ' '; X X if (font >= 0 && font <= 2) /* redirections to NORM fonts */ X font = N; X else if (font == 3) /* redirections to SYMBOL font */ X font = S; X X for (nbp = needmaps; nbp; nbp = nbp->next) X if (nbp->fontnum == font) { X return(nbp->NMAP(ch / ELEN) & (1 << (ch % ELEN))); X } X return(0); X} X X Xaddneedchar(font, ch) Xregister int font, ch; { X register struct needmaps *nbp, *onbp = (struct needmaps *) NULL; X ch &= 0xff; X X if (ch <= ' ' || (ch > 0x7f && ch <= (0x80 + ' '))) X return; X ch -= ' '; X if (ch >= 0x80 - ' ') X ch -= ' '; X X if (font >= 0 && font <= 2) /* redirections to NORM fonts */ X font = N; X else if (font == 3) /* redirections to SYMBOL font */ X font = S; X X for (onbp = (struct needmaps *) NULL, nbp = needmaps; X nbp; onbp = nbp, nbp = nbp->next) X X if (nbp->fontnum == font) X break; X X if (!nbp) { X nbp = (struct needmaps *) mustmalloc(sizeof(struct needmaps), X "needmaps"); X nbp->fontnum = font; X if (!onbp) X needmaps = nbp; X else X onbp->next = nbp; X } X if (ch == -1) X return; X nbp->NMAP(ch / ELEN) |= (1 << (ch % ELEN)); X} X X#endif X X#ifdef INCR Xdownchar(font, ch, pointidx) Xint font, ch, pointidx; { X ch &= 0xff; X if (ch <= ' ' || (ch > 0x7f && ch <= (0x80 + ' '))) X return(0); X ch -= ' '; X if (ch >= 0x80 - ' ') X ch -= ' '; X return(fonttable[font].map->DMAP(ch / ELEN, pointidx) & X (1 << (ch % ELEN))); X} X Xsetdown(font, ch, pointidx) Xint font, ch, pointidx; { X ch &= 0xff; X if (ch <= ' ' || (ch > 0x7f && ch <= (0x80 + ' '))) X return; X ch -= ' '; X if (ch >= 0x80 - ' ') X ch -= ' '; X fonttable[font].map->DMAP(ch / ELEN, pointidx) |= (1 << (ch % ELEN)); X fonttable[font].map->lastpage[pointidx] = currentPage; X} X#endif X X#if defined(DEBUG) && defined(PARTIAL) Xdumppartmaps() { X register struct needmaps *nbp; X register int c; X fprintf(diagFile,"MASKLEN: %d, ELEN: %d\n", MASKLEN, ELEN); X for (nbp = needmaps; nbp; nbp = nbp->next) { X fprintf(diagFile,"Font: %02x, needmap:", nbp->fontnum); X for (c = 0; c < MASKLEN; c++) X fprintf(diagFile," %08x", nbp->NMAP(c)); X fprintf(diagFile,"\n"); X } X} X X#ifdef INCR Xdumpincrmaps() { X static char ptsizes[] = X {6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, 36}; X register struct downmaps *dbp; X register int c, p, fn; X fprintf(diagFile,"MASKLEN: %d, ELEN: %d\n", MASKLEN, ELEN); X for (fn = 0; fonttable[fn].troffName; fn++) { X dbp = fonttable[fn].map; X if (!dbp) X continue; X fprintf(diagFile,"Font: %02x, troffname: %s, downloadedmaps:\n", X fn, fonttable[fn].troffName); X for (p = 0; p < NPTSIZE; p++) { X if (!dbp->nm[p]) X continue; X fprintf(diagFile,"f%02d p%02d:%02d lp%d %s:", fn, p, X ptsizes[p], dbp->lastpage[p], dbp->pkfont[p] ? "load": "unlo"); X for (c = 0; c < MASKLEN; c++) X fprintf(diagFile," %08x", dbp->DMAP(c,p)); X fprintf(diagFile,"\n"); X } X } X} X#endif X Xdumpmaps(which) Xint which; { X DBP((D_FONT,"dumpmaps: %d\n", which)); X if (diagFile && (debug&D_FONT)) { X switch(which) { X case 0: dumppartmaps(); break; X#ifdef INCR X case 1: dumpincrmaps(); break; X#endif X } X } X} X X#endif X X#ifdef INCR X/* Go find "oldest" font and delete it, both internally *and* X on the printer. It cannot already be in use on this page. X */ Xpkflush(needfont, needpoint) Xint needfont, needpoint; { X register int oldestpage = 32767, p; X int bestpoints, bestfont; X register struct downmaps *dbp; X int font; X X DBP((D_FONT, "Flushing font - avoid font %d, ps: %d\n", X needfont, needpoint)); X X for (font = 0; fonttable[font].troffName; font++) { X X if (!(dbp = fonttable[font].map)) X continue; X X for (p = 0; p < NPTSIZE; p++) { X if (!dbp->pkfont[p] || (font == needfont && needpoint == p)) X continue; X X /* if font in use, and less than oldest page */ X DBP((D_FONT, "Checking font %d, point: %d, lastpage: %d\n", X font, p, dbp->lastpage[p])); X X if (dbp->lastpage[p] && dbp->lastpage[p] < oldestpage) { X oldestpage = dbp->lastpage[p]; X bestpoints = p; X bestfont = font; X } X } X } X X /* oh-oh! */ X if (oldestpage >= currentPage) { X X fprintf(stderr, "Too many fonts on page %d, SIMPLIFY!\n", currentPage); X X } else { X dbp = fonttable[bestfont].map; X X DBP((D_FONT, "Dismembering font %d, pointidx: %d, p: %x\n", bestfont, X bestpoints, dbp->pkfont[bestpoints])); X X /* Clobber PK */ X pk_destroy(dbp->pkfont[bestpoints]); X X /* Clobber PK pointer */ X dbp->pkfont[bestpoints] = (struct pkp *) NULL; X X /* clear downloaded arrays */ X clrarray((char*) &dbp->DMAP(0,bestpoints), MASKLEN * sizeof(ETYP)); X X /* reset lastpage */ X dbp->lastpage[bestpoints] = 0; X X /* tell backend that this font isn't downloaded anymore */ X fonttable[bestfont].fontFlags[bestpoints] = X tolower(fonttable[bestfont].fontFlags[bestpoints]); X X fontCount--; X /* Select and nuke downloaded font */ X printf("\033*c%dd2F", (bestfont << 4) + bestpoints); X } X} X#endif END_OF_FILE if test 5765 -ne `wc -c <'pkc.c'`; then echo shar: \"'pkc.c'\" unpacked with wrong size! fi # end of 'pkc.c' fi if test -f 'utils/fonts/cmtt10.pk.UU' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utils/fonts/cmtt10.pk.UU'\" else echo shar: Extracting \"'utils/fonts/cmtt10.pk.UU'\" \(6254 characters\) sed "s/^X//" >'utils/fonts/cmtt10.pk.UU' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 utils/fonts/cmtt10.pk XM]UD11T9T;U!+(#$N,B!O=71P=70`H```W^H\>``$)JX`!":NT"9!"&9B%A,9 XM_QB#`1]0$/(2WB,3PC*^0S.?-3C[?6XC8P$$`0.C\4DR1T-41;>:5<`G1`AF8A83&0`8'&TE XMTF-D8W13A$\Y-#E.IIZ#`)U$(9F(6$1_^&#M=`](D=!27[+93-D0W1!04 XM1RTCT%O1/131/131\Q#0*U((9F(6%!G_&!J=C9-4@V1^,W-S9'-4BYJKDU.> XM,V.#8S%/-C(Q=6&48G9"P"I3"&9B%A$9_AA6,DT"TB1E%(0?.C$]%-%-"+FI XMM]%-%/T6^WF70=(M$R-UT!14"&9B%A,9_Q@0/>-34^`0@]F;F5#`&E4(9F(6 XM%1D`&!=7&3D75T[2.3?S,W-^,U XM.24JXS,[(RSB,3T"$M'UTCC8,%<(9F(6$QG_&&?5UVXA.S,K).(Y-#,S-/,E XM(T,B$B->4B(2(F(A,2)B$C(2?T-(-33`-%@(9F(6$QG_&!YMV#0)EH(9F(6$1G^&!`WHQ.4$X0C@]3$ XMT]3$T]3$T]3$TPT5"1R,\3.,]33DQ2#)50\ XM6H9`P"QD"&9B%A09_QBFT'T6U.,Z0SB!-M%D551T3TDTXSHT231(14955&;4 XM21=5-A#`'F4(9F(6$!+]$669:T14)',CEJ`I_1.3%(,D9#Q:AD#`&V8(9F(6 XM$1G_&+6HB70D,]4S2S&)T(5$CT8XZ#=`AF8A81%_\6 XM8M'C.M(?TVYCT3<6\V-35%1$:GFE0,`;=0AF8A85$@`1%D9'-U9&CI-S@V2$ XM18TVTV4V$-`?=@AF8A83$O\1%S<8.!`AF8A83$O\1 XM%S0AF8A83&_\1 XM%S<9*!@AF XM8A82$O\1(!+Q`3$Y0CA#-TU-3%Q<34U(,DDQ2@.PJ!(`"&9B%A,9_QC>XS.C XMZS,[+BJ0P"4!"&9B%A(9_AAST?70(2SS$[(RKB,SCC-3;B-S3B.3))03LQXM XM0=`?`@AF8A81&?X8.UTP$21T%)?DMN0U-N2WE!1T(!$]6S#`(P,(9F(6$QG_ XM&(/2]='R$M#B,3PC*^0S.>,U-^,W-'-Q@X%S<;`;!`AF8A83&?\8+$+\4O.S XM`U-3CBN#4P6O/!W1QL`7!0AF8A83&?\8'4'6'43M4W-'-QD9%S<0H"8&"&9B XM%A$9_A@=<3H_(Y,S@S2S.T\[3B.R\[([)+(X/R.3$Z,<8;7`'`<(9F(6$1G^ XM&#-31C8C$Q,3'S,A(V0T/M)SOBE`P"(("&9B%A$9_AA.*;XSQXM-(D(R0>(T XM-#%",D+22X?.,[XI0-`D"0AF8A81&?X83BF_."0T9#1S,TY!,S,S,C(T03%% XMMYI=XSOBE-`E"@AF8A83&?\8=8DQ5E+13(9@T"8A!5E+16I9@T"XV"&9B%A$9_AB%J6Q%1#54-&0D@C/4U"=#&R`1)70?27M_ XMHQ.C%(04=#153&FE8-@;-PAF8A81&OX9,!`#B4$X33T]33WSWB/>,]YCD-`I XM.`AF8A81&?X85XM=-544E^*S$Y,E54N'BU14,Y,4E^*WE!.3)54]6X=0T"XY XM"&9B%A$9_AAEJ6Q%5#1T%),3HQ\Z>W^4%'4@$2L31S/4TS*$)',T9#1%3&FE XM@,`V)`AF8A81(/X<@M'B/'BUT243)!0S-^)#.#-")".)J:FHDR2#..(S1D,X XM,S04(Q4]!;AM#STB<,`Y)@AF8A83&?\88])L>T(ZXC,Z,S%C,C)C,4)D8S=3 XM.$0W139C-G,V,C(U,W8T9O-4,R,V(RU#/PAF8A8/&?T81VL]%'CX XM,2A)65E96DOC/"!++/3"<-`?#PAF8A8/&?T/8L],($LM.TOSOTI)6DI((?.( XM=!T[9T"P$!`(9F(6$!+]$1XIP>LWTQPPP!01"&9B%@T;_A$^*NU:,28Q1$&S XME73`,QD(9F(6$QG_&(:Z?15&13@U-T4V4F*"!XC/CPP#8#1((9F(6"`7[ȥ%4PX`T3"&9B%@@%^!@' XM'W[XX,@.%`AF8A8-!?P6-Y'6-Y%@L`P5"&9B%@\$_1@2G5*RN`L6"&9B%@\# XM_1;2'"#0#1<(9F(6!P7Y&!49.140P!(8"&9B%@L+^@)2@X1V9N*#'7)ST!%> XM"&9B%@T&_!ABE6DF&E01D1#`$'X(9F(6#07\&#-"-AV!8R0SX`Y_"&9B%@L$ XM^QE@W!^#L&"H"2T(9F(6$0/^#=C`&0P(9F(6$1G^&'[2-S0T@C*Q,6.WF7M= XM`](GP!D+"&9B%A$9_AB"T3T%MYE[-A,;(RA#0^TG-]`B/`AF8A81%?X6`1+4 XMMJ6EM:6UI::TUM4!!=4!!=4!!=;4`1+8(CX(9F(6$17^%B`136U0$%U0$%U0 XM$%UM2VI:6UI;6EIK32`1J`E?"&9B%A$#_O[8R"A<"&9B%A$@_APM+STO/2\] XM+STO/2\]+STO/2\]+STO/2\]+STO/2\](G@)?`AF8A8#(/<PAF8A81 XM(/XTM`F#P#VED96YT:69I97(@0TU45/`@8V]D:6YG7!E=W)I=&5R('1E>'3P#&9O;G1F86-E8GET9?0`Z@``]?;V X!]FUE X` Xend END_OF_FILE if test 6254 -ne `wc -c <'utils/fonts/cmtt10.pk.UU'`; then echo shar: \"'utils/fonts/cmtt10.pk.UU'\" unpacked with wrong size! fi # end of 'utils/fonts/cmtt10.pk.UU' fi if test -f 'utils/pktype.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utils/pktype.c'\" else echo shar: Extracting \"'utils/pktype.c'\" \(5812 characters\) sed "s/^X//" >'utils/pktype.c' <<'END_OF_FILE' X/* Copyright 1985, 1986, 1987, 1988 16:49:49 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: pk2sfp.c X Author: Chris Lewis X Specs: prints header info from PK's and SFP's X */ X X#ifndef lint Xstatic char SCCSID[] = X "@(#)pk2sfp.c 2.1 Copyright 90/07/18 16:49:49 Chris Lewis"; X#endif X#include "defs.h" X#include "pk.h" X Xint firstchar = 0, lastchar = 0xff; Xint verbose = 0; Xchar *progname; Xextern char *mustmalloc(); Xlong pks_malloc; 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 pkp *p; X struct pkp *pk_read(); X X progname = argv[0]; X while((c = getopt(argc, argv, "D:vf:l:")) != 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 firstchar = *optarg; X break; X case 'l': X lastchar = *optarg; X break; X default: X fprintf(stderr, "Usage: %s [-f] [-l] pk_files\n", progname); X exit(1); X } X#ifdef DEBUG2 X { X struct pkc p; X static int8 raster[] = { X 0xd9, 0xe2, 0x97, 0x2b, 0x1e, 0x22, X 0x93, 0x24, 0xe3, 0x97, 0x4e, 0x22, X 0x93, 0x2c, 0x5e, 0x22, 0x97, 0xd9}; X X struct ras *r; X X p.pkc_flag = 0x88; X p.pkc_dyn_f = 8; X p.pkc_pl = 0x1a; X p.pkc_char = 4; X p.pkc_tfm = 0x09c61c; X p.pkc_dx = 0x19; X p.pkc_dy = 0; X p.pkc_x_off = 0xFE; X p.pkc_y_off = 0; X p.pkc_height = 0x1d; X p.pkc_width = 0x14; X p.pkc_pkr = raster; X p.pkc_rlen = sizeof(raster); X r = pkrast(&p); X dumpr(r, p.pkc_height); X } X#endif X for (; optind < argc; optind++) { X char *filebuf = mustmalloc(strlen(argv[optind]) + 10); X register char *cp; X X cp = strrchr(argv[optind], '/'); X X if (cp) X strcpy(filebuf, cp+1); X else X strcpy(filebuf, argv[optind]); X X strcat(filebuf, ".D"); X X if (diagFile) X fclose(diagFile); X X if (!(diagFile = fopen(filebuf, "w"))) { X fprintf(stderr, "%s: cannot open filebuf\n"); X exit(1); X } X p = pk_read(argv[optind]); X pk_dump(p, argv[optind]); X pk_destroy(p); X free(filebuf); X } X exit(0); X} X Xpk_dump(p, file) Xstruct pkp *p; Xchar *file; { X struct pkc *pc; X X fprintf(diagFile, "**********************************************\n"); X fprintf(diagFile, "File %s:\n", file); X fprintf(diagFile, " Font file type: %s\n", X p->pkp_flags&1 ? "PK" : "SFP"); X fprintf(diagFile, " Number of characters: %d\n", p->pkp_num); X fprintf(diagFile, " Approximately %d bytes used\n", pks_malloc); X fprintf(diagFile, " Design size: %ld, Native point size: %ld\n", X p->pkp_ds, p->pkp_ds / pow2(20)); X fprintf(diagFile, " Pointsize normalized to %d DPI: %ld\n", X OUTRES, p->pkp_npts); X fprintf(diagFile, " Checksum: %ld\n", p->pkp_cs); X fprintf(diagFile, " hppp: %ld, vppp: %ld\n", p->pkp_hppp, p->pkp_vppp); X fprintf(diagFile, " hor. pixels/point: %f, ver. pixels/point: %f\n", X (double) p->pkp_hppp / pow2(16), (double) p->pkp_vppp / pow2(16)); X fprintf(diagFile, X " Hor. font resolution: %ld, Ver. font resolution: %ld\n", X p->pkp_res, (long) ((p->pkp_vppp * POINT / pow2(16)) + .5)); X fprintf(diagFile, X " Max y offset: %ld, Max descender: %ld, ", p->pkp_bmax, p->pkp_dmax); X fprintf(diagFile, "Max width: %ld, Max X offset: %ld\n", X p->pkp_wmax, p->pkp_xomax); X fprintf(diagFile, X " Kern high: %ld, Kern low: %ld\n", p->pkp_kh, p->pkp_kl); X fprintf(diagFile, X " SFP Info: symset: %d%c, style: %d, stroke: %d, typeface: %d\n", X (p->pkp_symset & 0x01e0) >> 5, (p->pkp_symset & 0x1f) + '@', X p->pkp_style, p->pkp_sw, p->pkp_typeface); X X for (pc = p->pkp_chars; pc; pc = pc->pkc_next) { X register int i; X if (pc->pkc_char < firstchar || pc->pkc_char > lastchar) X continue; X fprintf(diagFile, "\nCharacter: %lx (%c), (0%03o), Packet length: %d\n", X pc->pkc_char, (char) (isprint(pc->pkc_char) ? pc->pkc_char : '?'), X pc->pkc_char, pc->pkc_pl); X fprintf(diagFile, " Flag byte: %d\n", pc->pkc_flag); X fprintf(diagFile, " Dynamic packing variable: %d\n", pc->pkc_dyn_f); X fprintf(diagFile, " TFM width: %d, dx: %d", pc->pkc_tfm, pc->pkc_dx); X if (pc->pkc_dy) X fprintf(diagFile, " dy: %d\n", pc->pkc_dy); X else X putc('\n', diagFile); X fprintf(diagFile, X " Height: %d, Width: %d, X-offset: %d, Y-offset: %d\n", X pc->pkc_height, pc->pkc_width, pc->pkc_x_off, pc->pkc_y_off); X if (pc->pkc_rlen) { X fprintf(diagFile, X " Raster length: %d, width in pixels: %ld\n", pc->pkc_rlen, X pc->pkc_dx / pow2(16)); X fprintf(diagFile, " "); X for (i = 0; i < 32; i++) X if (i >= pc->pkc_rlen) X break; X else X fprintf(diagFile, "%02x", 0xff & pc->pkc_pkr[i]); X putc('\n', diagFile); X } X X if (pc->pkc_sfpr) X fprintf(diagFile, " SFP length: %d\n", pc->pkc_sfpr->ras_bytes); X if (p->pkp_flags&PK_PK) { X if (pc->pkc_dyn_f == 14) X fprintf(diagFile, " Bit map character, "); X else X fprintf(diagFile, " Packed character, "); X switch(pc->pkc_flag & 0x7) { X case 7: X fprintf(diagFile, "Long form\n"); X break; X case 4: case 5: case 6: X fprintf(diagFile, "Extended short form\n"); X break; X default: X fprintf(diagFile, "Short form\n"); X } X } X if (verbose) X rasterdump(pc); X } X} X Xrasterdump(pc) Xstruct pkc *pc; { X struct ras *r; X register int x, y; X extern struct ras *pkrast(); X r = pkrast(pc); X if (r) { X fprintf(diagFile, "Character image:\n"); X dumpr(r, r->ras_height); X free(r->ras_raster); X free(r); X } else X fprintf(diagFile, "NULL character image\n"); X} END_OF_FILE if test 5812 -ne `wc -c <'utils/pktype.c'`; then echo shar: \"'utils/pktype.c'\" unpacked with wrong size! fi # end of 'utils/pktype.c' fi if test -f 'utils/psxlate.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utils/psxlate.c'\" else echo shar: Extracting \"'utils/psxlate.c'\" \(6204 characters\) sed "s/^X//" >'utils/psxlate.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: psxlate.c X Author: Chris Lewis X Specs: Generic Postscript filter (page reversal etc.) X */ X X#ifndef lint Xstatic char SCCSid[] = X "@(#)psxlate.c: 2.2 Copyright 90/10/12 13:12:11 Chris Lewis"; X#endif X X#include "defs.h" X Xint xlate = 0; X#define MAXPAGE 1000 X#define BUFFERSIZE 512 X X/* define if you want to page flip %! documents (eg: some TeX out stuff) X not recommended.... X */ X#undef TRYPERBANG X Xstruct headers { X char *hptr; X struct headers *next; X}; X Xstruct pagedesc { X unsigned long start; X unsigned long end; X char *type; X struct headers *comments; X} pageidx[MAXPAGE]; X Xchar tmp[] = {"/tmp/psxXXXXXX"}; Xint page = 0; Xchar *progname; Xint debug, verbose; X X Xmain(argc, argv) Xint argc; char **argv; { X extern int optind; X char buffer[BUFFERSIZE]; X int c; X progname = argv[0]; X while ((c = getopt(argc, argv, "drxv")) != EOF) X switch(c) { X case 'r': xlate = 0; break; X case 'x': xlate = 1; break; X case 'd': debug = 1; break; X case 'v': verbose = 1; break; X default: X usage(); X exit(1); X } X if (fgets(buffer, BUFFERSIZE, stdin)) { X if (strncmp(buffer, "%!PS-Adobe-", 11) == 0) { X if (verbose) X fprintf(stderr, "DEBUG: conformant file %s\n", buffer); X mktemp(tmp); X scan(stdin, tmp, buffer); X transform(); X emit(tmp); X#ifdef TRYPERBANG X } else if (strncmp(buffer, "%!", 2) == 0) { X if (verbose) X fprintf(stderr, "DEBUG: hopefully conformant file %s\n", buffer); X mktemp(tmp); X scan(stdin, tmp, buffer); X transform(); X emit(tmp); X#endif X } else { X if (verbose) X fprintf(stderr, "DEBUG: nonconformant file %s\n", buffer); X fputs(buffer, stdout); X while ((c = fread(buffer, 1, sizeof(buffer), stdin)) > 0) X fwrite(buffer, 1, c, stdout); X } X } X if (!debug) X cleanup(); X exit(0); X} X Xscan(f, file, buffer) XFILE *f; Xchar *file, *buffer; { X FILE *t; X extern char *malloc(); X int state = 1; X long ind = 0; X int c; X X if ((t = fopen(file, "w")) == NULL) { X fprintf(stderr, "Cannot open temporary file %s\n", file); X exit(1); X } X fputs(buffer, t); X ind += strlen(buffer); X pageidx[page].start = 0; X strcpy(pageidx[page].type = malloc(strlen(buffer)+1), buffer); X add(page, buffer); X page = 1; X while((c = getc(f)) != EOF) { X putc(c, t); X ind++; X switch(state) { X case 0: X if (c == '\n') { X state = 1; X } X break; X case 1: /* seen \n */ X if (c == '%') { X fgets(buffer, BUFFERSIZE, f); X fputs(buffer, t); X if (0 == strncmp(buffer, "%Page:", 6) || X 0 == strncmp(buffer, "%Page ", 6) || X 0 == strncmp(buffer, "%Trailer", 8)) { X pageidx[page-1].end = ind - 2; X pageidx[page].start = ind - 1; X strcpy(pageidx[page].type = malloc(strlen(buffer)+1), X buffer); X add(page, buffer); X page++; X } else X add(page, buffer); X ind += strlen(buffer); X break; X } X state = 0; X break; X } X } X if (page) X pageidx[page-1].end = ind - 1; X fclose(t); X} X Xcleanup() { X unlink(tmp); X} X Xemit(file) Xchar *file; { X FILE *t; X register int i; X if ((t = fopen(file, "r")) == NULL) { X fprintf(stderr, "Panic\n"); X exit(1); X } X for(i = 0; i < page; i++) { X register long start, end, cnt; X register int c; X X start = pageidx[i].start; X end = pageidx[i].end; X cnt = end - start + 1; X fseek(t, start, 0); X while(cnt--) X putchar(getc(t)); X } X} X X Xusage() { X fprintf(stderr, "Usage: %s [-r|-x] < file > file\n", progname); X} X Xdumppg() { X register int i; X register struct headers *h; X if (debug) { X for (i = 0; i < page; i++) { X fprintf(stderr, "Page: %d %d %d %s\n", i, pageidx[i].start, X pageidx[i].end, pageidx[i].type); X for (h = pageidx[i].comments; h; h=h->next) X fprintf(stderr, " %s", h->hptr); X } X } X} X Xtransform() { X dumppg(); X switch(xlate) { X case 0: X revpages(); X break; X case 1: X xpages(); X break; X } X dumppg(); X} X Xfstart() { X register int i; X for (i = 0; i < page; i++) X if (0 == strncmp(pageidx[i].type, "%Page", 5)) X break; X return(i); X} Xfend() { X register int i; X for (i = page-1; i >= 0; i--) X if (0 == strncmp(pageidx[i].type, "%Page:", 5)) X break; X return(i); X} X Xrevpages() { X register int i, j; X struct pagedesc t; X i = fstart(); X X if (i == page) X return; X X j = fend(); X X while(i < j) { X t = pageidx[i]; X pageidx[i] = pageidx[j]; X pageidx[j] = t; X i++;j--; X } X} X Xxpages() { X register int i, j, mid, first, last; X struct pagedesc t; X struct pagedesc *p = X (struct pagedesc *) malloc(sizeof(struct pagedesc) * page); X revpages(); X first = fstart(); X X if (first == page) X return; X X last = fend(); X X if (debug) X fprintf(stderr, "first: %d, last: %d, page: %d\n", first, last, page); X if ((last - first + 1) < 3) X return; X X if (first) X memcpy(p, pageidx, sizeof(struct pagedesc) * first); /* prolog */ X if (page - last) /* copy epilog */ X memcpy(p+last+1, X &pageidx[last+1], sizeof(struct pagedesc) * (page - last - 1)); X mid = (last + first + 1) / 2 ; /* offset of middle */ X for (i = first; i < mid; i++) X p[first + (i - first) * 2] = pageidx[i]; X for (i = mid; i <= last; i++) X p[first + (i - mid) * 2 + 1] = pageidx[i]; X memcpy(pageidx, p, sizeof(struct pagedesc) * page); X free(p); X} X Xadd(page, buf) Xint page; char *buf; { X struct headers *hdr, *hp, *ohp; X extern char *malloc(); X char *p; X if (debug) X fprintf(stderr, "Adding %s\n", buf); X hdr = (struct headers *) malloc(sizeof(struct headers)); X if (hdr == 0 || !(hdr->hptr = malloc(strlen(buf) + 2))) { X fprintf(stderr, "psxlate: Out of space\n"); X exit(1); X } X strcpy(hdr->hptr, "%"); X strcat(hdr->hptr, buf); X hdr->next = NULL; X for (ohp = hp = pageidx[page].comments; ; hp = hp->next) { X if (!hp) { X if (ohp == pageidx[page].comments) X pageidx[page].comments = hdr; X else X ohp->next = hdr; X break; X } X ohp = hp; X } X return; X} END_OF_FILE if test 6204 -ne `wc -c <'utils/psxlate.c'`; then echo shar: \"'utils/psxlate.c'\" unpacked with wrong size! fi # end of 'utils/psxlate.c' fi echo shar: End of archive 12 \(of 16\). cp /dev/null ark12isdone 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)