mleisher@NMSU.Edu (05/11/91)
Submitted-by: mleisher@NMSU.Edu Posting-number: Volume 12, Issue 92 Archive-name: kterm/part11 #!/bin/sh # this is kt412.11 (part 11 of kterm-4.1.2) # do not concatenate these parts, unpack them in order with /bin/sh # file kterm-4.1.2/g2b continued # if test ! -r _shar_seq_.tmp; then echo 'Please unpack part 1 first!' exit 1 fi (read Scheck if test "$Scheck" != 11; then echo Please unpack part "$Scheck" next! exit 1 else exit 0 fi ) < _shar_seq_.tmp || exit 1 if test ! -f _shar_wnt_.tmp; then echo 'x - still skipping kterm-4.1.2/g2b' else echo 'x - continuing file kterm-4.1.2/g2b' sed 's/^X//' << 'SHAR_EOF' >> 'kterm-4.1.2/g2b' && lI>a[<9=OXDu*a$GCVen#&acUq,s,>J@SagU+2qH)GqrGHBZ3:t9X47gc,,\_PJ3\GE)3\G!5oW:.* /]NVh[Y&D3]X'!8+ZX4'B>-qe8bbsL39=AWMC9FG2e#;3%e[i9&kH'',7g]Si2aK/@68qA&$FWX9Dn A9BXekK_7_@6OCUI6]^SZCdB#;6oeAQD8Z`CoPUft7SUsH(1X])Q9V8p$UWd(FgWnO94Wn")q$E1\: XX/5'e=KfB:n[7>V7'P=G\>miVlFkoLE2q0qD[NL][SNp_fCYtSWa;L:YK=FZ[7R;uYIhNeV>$t*]W2 CU<2?@kb."I^_6.ak=08sC`j0EeHa^Z)?bb6m?G#_7VXgWlUscop]r/F&Vr+K+^ZVt'XE:beV=CTaW ^-t!69%7c+@8%W71-4bZ=UVu[J$H%W+ruZ]<\QTY^*5=ZK&@4WNs-+$E\HT`kp*9iP!7;`MH/+qP<k qTriFD8Zd$5ril=8UC*tm^;%5!\C7AE\#6ZV]3Ma/UjAl]Vu<]*XRW66]<DXO:pkVVZ,T,0UTNapql K[nHFidS?F8dkrkEQYDm65K]1K3M^O3M$_X>*@VeN:*\oGO%Uu9*ZYMQ:hZd,\Y$Fm:Bk-a]je[]G, bcT?k<OKB?g:6^WdAQT8Yf"*\$:6a=0d&eC7R[Ze8$CIJn>(3)n>0BmV8^KRdBI#S]rkk@ID06j71- *oY[41l\R2/N\%\tUWirJ,\mrS!YkPS:gS:`7j&?A_oVuN&FK&raWhjILgT[ZUVQ/%F8&\K-<4TE8m A7r4e82\ZZ+dhgW5P[rWQ2B`_tL'SX's"P]&(5.`V@#4$H228AYo79F0g;+^p@+>A(J6.CVY&(e#do "Xgm5hd0d&2cTo#7[Sa\*^-K8P[*leRZ_F\hW^j[@\P0&u$49*c5qsKK5t49M^h'RbY5GHoV<G'i^g a`jl$(D&_>:'OZ<O\,W94MogSf80X1m8i_Pct=dB9OUCSneVI`ZT06a,^hU;2'^];W##Y]6OXYLC"l Y=5DhZeVkagKgu5V;8+FVXpZe$F6nGke#9CA[5=JY._fn@^]+G9=D^CWiOpV]rUJ$o*VA\^@&bTX6m kqX.c^kX_GX@XE^YTV6I&oZgXqe[8dR3EN=&\e>?EK8YnqV^UN:1rOAr29"hd8Ye=hZnd5^j6:!=K6 :+.1$E:M7lEK?g5btKmXeapUiOhmmfXKkL`jKBT7ARp1\D4Z0X5:a-Z=1XZ`HT,iY1^YE]m$iaZ$3P >]#_DD$FeZq6*&#$gTU%S=15o\7(pCQY,p*V`3aNnf<3?,71-*[_8)qg[&:V3^p:$-[I0nu\$W<>]R $DaZt?T&\EjR>WOI8jmC(W]d(?'j\@AH9r38T#m^2qu<l)bVTr%&^V"MOoWQqk[^eV4J]%=a0Vk^Ke ^A#,)]j8Bj]&*i%6:4$n+@8Fb71,pFYc##$^I?&j_Y^K:_-4NmVG=Us[)TlE`-Jeq$DbtJk-&?p<i9 */qQIlR]qe?*iM:Y5Wi+^fXJp?aWsZ/G^9=fA^tGt`Yt;':YYV>mVp`32Vm=6iXS03DcUA2=W2S"E@ AR26o>"A9l_W%?>HkEH>J'^4>J>-dq8DJ(]#q8EVKoc2[\:1UXkg#+_0r1s]l:ls^rrf_`_aZO$FG, nhnl\2r34/Im]Z2uA];!hm_.VYUVZ$)@\rZ'$:7-H0d&eN7R[Zg\&>,U6bm$>V8@5bm]5!PpoCp0:; #J]^Vcq^YmS.o]_]IZVG"egXg#RQ[+)o^[7\-0V<4nV]]I,D]OD5d>/eaua2(*QY./n]^8Rj>jhn[; Z*qu`d(@35ijejmV/s&=[&1+9XO>\=[I^i'\k/f!\6uJpW_Th-\,3bl$G>H-ZFJ;]C8]b%a/\1$afW [\[]IcdI&Wg8H*s`Lk6e6`Up[:M_p#^_^d5EM_UQ#.i7b?V\5]Ku_KE$Y$49*g5qsKK77K]Q]#h!hY OK*4ZLkX&[(4+GW63*@]'Hk;\7_V<`3frZ]"h@^;Rt5bEPq"CI'm_"FL/QsG-YSYZaG7hWi0tGWlV, PXgFm.W+)PkY]I0VZ-U;(VVSbXWDg0!Wk#tA$E<?kY-2T>I_Km2ihsJh6a(aNI&_1u7B,"Tg81aHis N4u^%K/7XjNtj`8@Z%]KiX5_ca-@XhqBLW;!f8jfo03bbsC(\?4)mn&2K09s\$2[&9V*hmR^1Gc,2W D$gV:7R8aO6:OF5$EI.6Up!.iE5FlHfVq-4A?2K6IC+@1U9i+ODP^MDZh1KDVkU9SXPL-l\jF52VQ- QLUop_kVUDOEY>2f?$E7(.<ifZ8b.UlmqlK.khlD%!BsdW48uUsSaM$$%edAY7^;7UmVgPCIWl;-9U t)`TiS^MDVQ$giXB_n(\6THD=1cGSGJD1qC9+VbfXUOVj0nTi?b?35f">S$g87IL[A^$:Y1U[4ZF.S eWc5eTZENrC^N6obX1#Y-ZcEI\6SLe\+@@hP71/]i[p6T4WEZ@sY.:HTX?j^*\bO#0WE#qIZf8q"$H 'Ti[]n;igo/]:i53I;rP[j:AAi`/n\k+=C&#Qao*WG7_eI,,`9P.oZ?Nd+Y>hl3Xer8NY4fN8ZdPd^ VU5aLd&Xmk<3K*Zr345Sf"#b=9#778<O12kGJ[:mh58g3_u?rHfs/#eVbYM4Z2(\E^8/bNY?/U8\ot B*VtI"%$H#l\Vm?0&n"rm`ho&F*7_j;fFM@UL;5(Y$d]6FV$:?O60d&h<7R[ZlB;OLkahr>=oqYBrr iQ!ua2)`.XKuue8[h4&V@'o4WN!\O_0Nrb`QG[<]ktWmZ:(t\\7DOdW8bMc[W)Y]]rOZ:be1NmiOQ5 /pqK_;l+cc$j.o0'k4J,Qq6%^EVF.caY>D)e_KiOlW_C5r^eMXl^.-*.Z;8+3\F-8!$E<Nr_R8(-F2 ZY?@AcN!go]SU7^K85Xh3ShFJVdBa9o+T\nJCZ_aptA]L';$XEgm\Uq=E``MCFQ`M11A$49-U5qsKL 1.F\>[]./R_ed6b][O+]\kg.:\pUW_`2^R^`aH\r`,#dpgU"Z)\A!@/;n,N?;n2J0n$Bgon@2E3rNi `@Y/Y2`Ve3YBX&6%@]P4qG_-FX"[,S.DZ?F*'](*a[`QQ5>$H?YT>.2>RYd1(0_7fcKgSii3?b6*If >ZI[Zbs>mh?q8C``^8b]5kE[XJN^C[CE[DZbj;g]i`%dYc,6_\\JQ\goa5W;R=3Qk/#cThnNdA6cN< @TtRY6d^hfWW<ru"1I3`<6Sh2#$Lm)SI]r.=]W,87UU'R-hlTkoj.u7BfstalB!#5DX'`56];i;=Ug 0q,W`67sTtJ*I\'_-QXPC0M_;_C\$EX0,::*ZnB!ak(q6X_8bdH<>=MeRWq7l^1Ek0o'EsfTUm`!*@ _,IRN_7[RgVTc6OZW=)9]4J6?^9+cnYBC8apoqZ69<2g1=hSgWZ)q<=H+M29`iSR7q7L^FY._%H\%n iVWRmuuZ.$@`]@<hV^VRPN]?7!PWD^U`\kWS>6Sq(`+@@tT71-]4`2L>s]qiDW]W]:[WS+,]ZM)#/^ i?Ah\pCpL$E^MHdAG!d=fLP^A?TF@Br/VUe%E`3osW;]IAH5+fF#+cWiEgQY-Y80Vf0"dW4K-0YK*N PUdV&TX[&jnX)89CCW#qdDS3KhUU4sRGh)8^:VLV?]"-b&i2LA):T`:WWaqs(^qcj6Yg1"fY\(A_k? 4eBVLH3Z_HX:eWPGZ6$H>H>^8J`K]#)5#?LPYKBYs,>8[3TYB#*rNY.<^&$:?[:0d&h@7R[["^;/?r qkrD]F0EKtGJ?DR6)Vo&USh.nj.pJ"GRCQd]#:bd^p_1-^X]JP]\:?B]\^QC\\kY]icq]WX`k,PVQ$ YraL,<QkHW%7:pG&JqlHR1CV9,L9YFT1hlgDpVbjF6V;oI)Y/fhhX[K/GWCWpcXL>H7[U#nWWBmXU$ F'69E4t/8XfuoGfVhHU;68?PH)]c.BtW`<?G3_Qf*]#__,%hNW^=X#Z+%57bOX!G`DWVqWSG-P[9Te S$49-Y5qsKL2F^+BYi)q3Y@sc`UrTlZ]D&5;`3d3jYeHq/`(%\b\pXq#?*_,S9##&?pV9k:BWHTlFf ")s=2_/Ie"s1\bd)[)[JR#KWEHmn]A^"^YC4-2XeN,EXl[4%^/:]3ZTu%+$FS6m>-:Dn[B;s*[]]JE d)0b<EjWZigU,;3Xf5j,6OL,%\tc?Db>>.u[*bj[W`ud*YuJTU]C`[:XQZ\$_bCKB?a*_0?D[G%d]9 aVjM&1-n>N_!o;GWg?a*V^F:&@B2aK/@6T7J'$ENHnU9\^ZkFoQ!?)2#F7DlC,@DT[^Y/#(mqRK]8X (As,]=P:A`;[<tZqmLb\o>5q[cY!9Wli-H_54DO$Faldotfq)<j&C8oYEf!m('L"WPDKG^r!aeCTC4 IX9tc>X]VDdWPld'[+q]R^WWge[9g;kWo1VL\5p0,W(.2q6bB_26FP"<l`s7#]!T!#k-:Vd]Y2\)H, HDj@BAl(V*h9TZ?`B:V1#JFWcQ#$Yg9XIVQn"qWI;`f[-J&+6T@@d+@A+X71-!iYkc:<^$MS/Yj(te `HL[iXECB=ZE146V#71U$H,rJb0<bt@B4=b::b#M<3s$CaLH<!9ts])<30->HO@\q`+-_e`Vm`q_HO gb[o9s5UsPp@Ue%E5[^;n']6am\@]-Q6pSG9n[%ur`V6BF$<4ZMQ`4E7`]<5_QZ_Y;B[!\rWVUr$H` 36nQ^o=2MY[j]OVS&]s^W<a!W5$*U$Ff34<OR:fmB'NoHG$l9F2Gl*I)O==lbU]=<2<J#$:?g>0d&h D7R[Zjb-\IWiO7IHi4!L?bd"jj6+?!RikXHYbIO^[mg?/UZ2Ue5W(*u([`m6r\(SNBY0F&`cuZ,_Ui WG3]!MgHD6SAkU;#0r]"bGV]r&ZLYemfA]XH"fe%O\BcD4MKWI2<qZ0AEu[<]M^W1p(t]ATL9Xm`:\ ZI#iN]</D-$Du[[fs>G3iN?h3i3,GH^p@=MI\kMm7&KdYXg2?;<sl7_YH+Tm]Oo#[XN%Zg[oU)D_/? *o[:?;KUrgN`$49-d5qsKL5t49MXP'naZdH,.\9+lsV4tHWX@^4f\CRHrWp?HXV:u?Y6E\G+YcYIJC Ur`JdA;#_g8N>ubJ%qpCo3o&gn\TjV*M+^W5bn5]7%#.[ahHT[b\[2^-SSgW6N8r\Y>nk$Djf(m]4C 9ppekOXJFjX\u'V\fWi;tii)dg8&KehXU;_eY26>KVrthZW;F!JZ;Ip+Y0k4hYsl=t_5=TO^r?_kE4 EWj_7?Vbh5.]bHG8mHoVSP"h7;+AB"Z-pU^@Gr6:!=K6UF72$Eg2'lE*@`9X%*bc`>NtlE!@hpVQa3 DS=VsoX`<T[="lh_#CdN[ElIY]$mh1_gAbu]Xb[QX5p3uV/`oP$DtDEG,BMmi2(gupnmu"IAD+f;8I 7bUUbcVAZ*,G?4+;g[q`[b_Hj^h`2pCdX&Z@=ZZNUYi:OJE\%/b9[R:J1_Rmau>Irh1p9pj68@WHSk dX0mZb]8E7DMEsWNKM6[qrIQ]4/&;XnKS6]"YAa_Wn,K[dp7gV5C,.[dXV26UO-o+@ALc71-r+^=^9 J^%&3uX^S3tV0K09TtI2M\j<8jVgcU-$F=Baou23j_SF7%n@[o$e%O#*>.!4o;S(;][(4,VZjO26[d CP8Yk,6@]q__!^O<67^%Sa'^$EF3Z,aZ8\&o&fCpiB-kHJa-?F-uB;6EWs;o?MkbHG]t_m/F-kIp?l ^/),2_aM8uZeEC_[(sJNZ)=c!X(/D2UsZJ@[dg3@$F6D,n%2H)afIn8poSqL\%)+>9>sQ'X2\/YV:J <I$:@3I0d&hO7R[Z\`M^k_Z)^?sGcn]hV6b0EjP[,Tqkd3%af!CkUC+9ndC-H^ZHfjkYe?t#^fe!iV -0a;XRNdHY'[L(dTd-a:S_X#;Q/K[ppn\T^qa-c9XqmQ`is-S?)6/iG,ag8VQ7#b^h]tI\YQrV^@J2 /WSOoEX7`N>[HtKYX1b@Q$H2hCDP_fqgr4?S=/rO9GbeKn8uK509!5n5hmIF.HO?a!Yktq1[DSq:V# @)sW_g;!WO]##Z0%t3VJE6L$49-h5qsKL77K]Q`87ssVG42!\O`mfZgt?XZ)Oh/^u`0)\?!$uWFZF@ []m!6^qFW^]Y1AErN+)B8$h'i;5W]eoY9"_9Y@),]u.NP\&GR;Uuf3VYJ-oM_l^,WYhcbKYKkJH^>c i>$FKK;gS`c:=/slZUo7:k`O=gDl`X0__n15qcF$?\^'_.6Vd?93V!tBfUogf0Ur^/GV=(Bb[e6K'_ tpXrWiHK&`N[FdWOmVYot%K0;Pr[/[&UmJ\%G80CqondlO!td7R8aO6UjO6$FP;bVl.P>GeKrLBsFJ F[^'bZbGN+`;S^GoVlk.LZJW,VZerCBXF@*i]@ap/ZI?K]]tC7F_>(jp[s"oj$EHk(<MWX(8?PY%I^ -tf]VYS':r5N;euO#.jh&gDljC1MZ9tV"[en&(^e(hY`,38b\>$cH\8o=,Za?j:]la[`gU(2)?ELiQ A&5[^n@!2A^9YA\e@/;o<2dpI[B%[^^@SnAVH1,r^V.$u^0RdMXo62m^/2!-Y%4hJ^?#\/6ngn]+@I nQ71,i0VmW\XW-5gPYI^mT\"otC\$Eom^14,5Y-l4-$E1J>f<<lBe%B=unYl6#ahH6(DSg8,_QIRgI ]DJC:(""(W3<[Ob2];TX%;ljXAHER[8sYK^U'e*X/r5EW4*,2k.gPfYG_)nb,K6S;l%13h53cFUpdJ <[AEApf<X-<VR3en`5ANnZW"`N]N1o,]A9m[]M>oEY'mW]]2u>7$F/*XYc#OF@]T(-[^8B4r5A01@C +Xf`Pc2igSMsu$:HU70d&k=7R[[!n&9aZFLA]jFhsuia/.Y!\#/8neDe9N@&C-;h[6_b\YZ74Y3r1* YZ@u-]=FlH^n[mh^4*k8VfJS8Wnn)YqQNMq<k-,S:q!O2f;Qcs=gDeCI-aG6ca$Ni;8cTEXQ/@*WMQ T%W27C!^db>uWcb:LZ+I<KX_bRj`^-s*$GTEJ]sW*nXf_,ogU0\W@_^4-kH&TuTtkNKZ+$[=XU;#M] #CPmXEM%MY48@]epY8H]Z[m3_;)PGVm!\F$490V5qsKM1.F\>[r/PD]=Yaa_831fX)bE+_o/Zp`1sf =]MGXs\(qCtV5I%`?*1Q?ZaYCnXerD3`Mm.K8#/DVr5.R&V;ue,W6D+)VWYa!VJ3g9ZG*sEYLpG(W* ZHKX1Z;L[)g/)$E_IHGGIO'Dl$"B^o-S!p8GEsHFrjJd(sb2BXi8fbR130\Au'R]\U<K\8e]l\%&s% `3[/#`3utL_/-F5_mToUoY%E)?*<Xu[Bm-=_l%XhaKf*V8%-(+W2/:doEkpn1I3`<6o.;$$DpM!?Gt s@VT)BHZc1J-r4g.bkIS.?a/\UH\ZF<g]QV&.[<J]HZg#3TVZ+DQpZf"p\ST%@\@T*EWaW)#$DkYFG ,o>RcE#L2Fg65)I\bSldC*l%>d[M1Dm\W)]*bFAUs5`OVY7Q$];26$V66c%Z:^p"Wk5aC\@8qA_:As k7B9\(:U@aAEjYbUY-t:)WNK4$6G$(0XK:]aFLuf*VU20]YjA<^Xf&$p\Os3oY&:Lc[oK^3]"=ng`B ah<6o71a+@J%U71-4dZq@jR\TbgE[_KUsZ<+0bUq!J.YY2+b[&Lml$F]3$qmPe!iO?M6FM##a@_+h* kcfH1lE'fi<lIJH?OEd2\7VQ&Y-,KDYL')Fi2EHh\SJ"O\O+6:_;D_G_u0q=V57S'Hc#Q\ii@7$@BN tIr2)cW@]Q@!j1NINfu68b`MU/J^-oe<`co@u[)]&G^Ab?)`4WgoZ[&KdW*d@*$F=9WgoG,'6+H0[k Iam/W3j=WfVIQ6jg=EO^8gT.$:Ha;0d&kA7R[[Pe@B7rGH>)]?E$eu7BEo*6Foh,:8W3<[^O/clO(M )^t-$Tf&*K?\+m5]_:,sbY%bl.[*5@X^=9?r[-n@5m(CQK\[hXLF0TGdGe0cMqP7/s@_Lfu9sr'W@( Y)!WS=LJVrXjk]<A]m\8J/@]1/W5^-\a^XnD*q_VqN=$L?`cWO$NGrN*oGEj'Vs_QS:#ZE82PGHe]Z 7B^O971-b9Y-u47Y^O,hZ,=(=WOfBXWi)i6^>l:[V8'*$$490Z5qsKM2F^+BZrXAC^.5U0WnXOHUu\ Fp]5"@[Wm@m#V8T1-_R'Ze^8elRe$Ru9orZ<Y];L(Xr1rbeCSc0NY-5pEe%Dml_HEbkX\cNE]PX^qW :%%*YI(fA^$)JmZDkF0Wck\_$DaK!fVuU'_6?P;f=KVEI]]ZIo!5U!i2KPMH`VGZU^FN6[UQ1\WN)p f]h>>NZ/3JmY?e<p[I:!$^#$HM\D7LuG,EHula9Kef#D=@nYJX]gT4JS<O5-&9#\'CXpPM(2aK/@6o RS($E!3j@'?ZGDPuisp8e(q9ttG[i4QM7aLu2ucEd3P\BCeL]X"H5WiWSX^d,,?_UuM(](<V\XlHRr WTC)N$Ei<p>-2/9Fg0H)gSeMp6Eg-aFL^V:]!VIBA>clD[0ia&XRip4Uhlp_\pL;p_b[YX_VD,6]'d CB_-slOW2g9+[BtCdZDak'o!-oPWjY3nrNatnE5\H_9YO0+bd_QuZqS7%XAPgoVY.$'YdLAoVkgJ@T tI)3TtI)3TtC^>6o[Ie+@J1Y71..-a[W(7UnX[?UroN"V<+Q3YcQ5`^9sZIXQuRm$D^M?8#4Y1pn_W "_TBj#:=rCP[^\Vs]V3!=7Hj?b5mjILa\f(]Vms1liCp&Vc1nF.naEg8TtJA(`N70KV/cpmDn3Nbd. $Y*p<%EL]VNEA7a:GGdcC#+c`:[)l-SQ"XleZa[aDXtiBj6N^9F<DWl^sIUp8$?a\p5la_7B\$DgVT \u#,B\&r("Y-$!Uaee:"m\]Kr@AiXn8>eoa$:Hm?0d&kE7R[[,A#A^g]VbGH\BDF]h93C.e>V0$gSi f>X37i]q?kEc^8](e`7N8jX'3d.c/l!#X&H.=Xi7NOXk(kJYeLO=]WKhgg<eHR^9,;Td,=N"Z`q$j< Ns$Bc.otNCqcnVot]@t\Zb)Z\Zk#gi:+:ZjQkmpa_Allb%9AFX'>&$$DG-,5bu'";oWA:<VG(`gnDB ]D:#PlbM_cbB;jd_]F(]GXhD&:f>,52q*V[<\6H\eo%h3sTtJL[W92:K$490e5qsKM5t49MTtI)3[d U?UTtIU+YYq](nD2jMZWjj:[RR\m[Qk1n]\D?%7c6tu8%@0\g#,T7iOIgZf^#6h8@tb2U:[6/jA"ge kLdJs^"_`*^!saK^Y?NLl__GJl_hMN^YHTX$GXj#eEa0Pe&H7mU@,8%`5:+"<q?.*f>H,6WPl<d5RO 3tcEEqSb#YD(W5,@Jc.U@qX$Enbd)+:%gnD'^[]9bAZJ9o;Wo2Cpou^1T<:NW(;;eFsW6Ni:euJDXo *Pgm6:!=K6pa@3$EE^Bf@0K@]?n4Vf:fk(^"cH'Ycr/sr6tPlqUb0CfBBY\gf!3K]>EWB^.INf_;4b Bp0+ZdX1.0^VcV#Z$E3I@pn>@MD7i<>m_J&YGG2[C]V3!f8tinoYHMH_<sm*OYjS3t\^BY;^;Ia^VI l]9TtI71_G\LsVIdYTVksfp]W##,]Z^!<p8M<?qoh=KoZR$Qr7&R.;pJ@tjj^jKTtI)3X0Se.d7h"B ZhiJ<d7r"de?Yd\e@2[PTtC^>6pj6p+@JRd71.PSeB?@Le?m`3fV7#lTtI`/h!LfJiEP8ATtJ$<$H1 '*B>ntd]ZNsk:<Rt,U!:?qUW\&.IHse2gs*4+jU/$OWos#gTtIL-c*jY:c+:5I[HH^rc,%Z=c+p$cW o"/W]WG)V_pEV0>G8^VU%GkADQR<nFfeoB][1uOH`^fckAm9/X_5*:hK$u;cuIN_ds(*VkAJbFZM2h FYP#*s$J0+[9[g)Hp=$1JrpEUdqlfk5ajY@YEmo*@]&IN5$:I9J0d&kP7R[ZX][NYFYbA_A?Jj2)]V 3!Do&ITsZ*O8YD6iu2]F)8RZMpQ1f4W]KlVFhbZLP6if3?4&TtIebgMP\`gMdML]:lmFf%Y)Mi7iCJ ]X?eSHeWqUkdB[0H*u&-dbA(8gSM=.gL.dj[GBSXTtK9fhmhRShn/2?TtK:"lU9XK$Fm=M[^`^%XQO NZe[VTg[H"dW\`:BB>+rU@?b9g[<=7cjp[I4Gj0n!Wj/eremQfr?^L*\IkB6Irk>]C!$490i5qsKM7 7K]QlM0O:]sd*7^ULtf^U`Ys^VB2)l?g:XoY9ejmJI=-WPPP#p$P_q_82o7;8UKF\AH>*p7].ieF^< Eq"2B0p&(Mrp[b2-X4bV<\_YV4X0\s)Y"l4FUiFN,VnBgF$DG,;^Z"%n^!+$dl)F'NqW595hpK$_]@ ".=D:r7#\dG^deT&/teTnF=eS)51eU$3<fjLMdfj28.fk7"kfi8BdXL*E/AFIt&Y2-PB\D;Sm?JV[< ]&DiE9Y+3bY6kV)7R8aO6q0X7$G''N?LQLY_=c'H]]l<XV!RH`_X^.ih>$H7I*1"ITtIj+TtI4G]Mt _FV/N2WVHfh-VH]b,j[R4+b'EOJ$E%C-][6JJ]V3!3]Z]3+]W"?!9?Ze':;D4U7]B))k6doqTtJYJX *^PQkl%Q\X*E_$\]rDoTtKVUX/;qsTtC`s7%q9[_5jK7IA+<f]$:6":>npooXm\s6`p.1p"\%(TtIN rd/:%4e9AIFfPfD]TtJ=tYii7ITtJltTtC^>75."^+@RtR71-0fYh[`Je8h7qYiaG_YiE(Mgt&gmZg FI!fP]>]$FAp%mbHRLB!^*tfX]#o6*oOVnY*V+aL:<Cb-p3Gfa=FcgsWXcgsFj*[c4aYgtf]Wgs"R1 [b7@e[c,3/TtC`CbMc%O:;g8.]Xbbe^Yq\V]]B()8\@m]7%q9-^:pl[_GK=gTtKa0^:(bf^9aNGTtJ 0hm(f=-q!OigVI.Hb$Il/THHYiZWieh@X0CpS8$l@ADp3*uY3ap%ZFTZ9$:Q[80d&n>7R[ZhA(^@_p UTmh]Y&-[`6$WR^o,#Zo#ehPF.p7E_@!YHTtJTUb[mK\b[IKJWMdsMTtIA!l!^X>j_<"gYu_:oA(:C \?.Af&7'U"HoW_?"<PYf3]X1Pgk1rqfj0qD`iMbD`f\P@Z[mQk%iM5LD]P>:'m+TEua\8VYb]TuE$E N0eiN[L0E3XPm@GPJ,Gj0@ir1Ucs]ZI%n6c+)A]F)hlb@R]UTtJWYcbSgSXM!Dkd\X-Ld]1`ol<r&9 $493W5qsKN1.F\>d](f+Z?4'3en*EHemS,fg2Nau[8`j4TtK*!]"AC0bIm`7H0S`'AbFlVhmqFK\@L @f]V3",:U[n*XgYbIgoe*!\UM0SkeXuL^gEeJ_b'I)o<6)#TtL&"TtJKm$KZEQc)J(q\uXE48[2p5B [obhl/B;6[cMSpEp7MYF:+_Saa9n\`+$B]b1kn(b2(4s[p$&3[p,c_b1W]Eb^9bs`QW\.c)JS(WN"( ?bflgGIAt?"7I90DCq!csb6eSF1I3`<75ID%$EN^M5d%;nWo;"GVpVHjV66rJWjHEDU=ET#>d:.5Z) Fq.Z$a#`jefD"ZtQg`Zu`Tnh.YVW\k'K5]WAcB$DG,HcbjLs^%$$CXOotXo!Y=%He`r@CVF$:Vtn9p V@)Z\lq=%blqHb@lpgF5_=5>5_Y(e>ogPReTtIANTtC`SrQ4oXr:SO;8uPL`>c:Jt;5(Y$=K#E%=kW /cprr@;bk:O4_g/8(WcFfGWd^srn+Oupbjh]BWbe\^Y5&D375R:b+@S+V71-,oXJi4IY=R@Gc_o*5c ZlOnXKLg_XK/G(c[*HL$K?'<n]uC,:sr.il/l7!<Nc>)9;0#H=41:#7^?4':(":/Z;\VZZ=h_T^Ib_ Eeap(9_J[o_ea]qCg$uH@[6b5S8)@CV8)gN%9=3igkd9]a7/>3d9Xhn3eDd=nn$g+?\'3]*TtK5]k$ PUBhH8W(\%LQgk!S]G_fVTb\u=V`$G*7sTu:a8ot%6aFh2h[60:Gp6G2OE9YB;rlbdiP$:Qg<0d&nB 7R[[L6,,e%7__I-r4q:,jIs6%g;)R_G4K.\F7a&9>RL80`Uok:a`G[.bZCjeY%HCh`6,Yi\a@%?lZ0 _\m_9+sWhI)McHXb=IaGL)UVc#mHa@puUp+^bn(6U=h:L]pZZ*6ufB9SS[VFSlgeZk%\PD(2\OjM&] =>Jd]>))B$GZ#FfYQ=ZjMKrpje9>lCX0WGoZ;6VUonI^o<_$HU'e]:`:MB%WOT"_f3#CcpSX^tVK&J MVm*gB\`'Hg$493[5qsKN2F^+Bb-e3dfX7WYVm34@bXe^OWGAJCeCD3Ac=ck+X1J_>\Y6[=>HV5<7D *!1:p*p'<NuJPdBQ*hd'5j@6+gS4TtIi5Zp_8dfXSBfiGuCoku>Hrh"TcM\`E!Q\`10W$G#3UCV4!< ;<_3Ld(lTu>fkKh]Vi6_<jY>lD5;'n<=7s4^2L`-oj>]#^2`A^`Okkn^gkB1nZVJgn[A.=oj\?I7J; 0&@J+*K=n[4:I)]stZ_>%5qQ0=jps;\,k6_Pb2aK/@75m\)$EqIQ`7%c<k-EXFftXJkdB_2o]V3!lq mF)o=PmKnhcIDY](Y0%TtKE%]m.-fj)O*j]'[*-]m8c']mIG=$Li)ulfRQrmHW?dkeF%1VWuOCV<uX EI_VSpIDKL2B*uI\_-=`bp$'?&_RZAQoW@\io!J3XTtJ'*TtJWjY\slk7DE!^Zd!6bZ`:=WaM_tt^T >DU`1aiiajR<>XLWWaZ?Xg'd]fo^_kOX)k+f=d\*LG1[9L%Jg3hV#g3X/676!Rf+@S7Z71-G1g7c"> \*Vt[\)k*a_"G:T]g0>7`9k6(k,.:8$G?>P>ep'KoBg8/HH"8'Dt0XpV8N5S6E!/Iqo_@d=UOe$W_0 9mW^t@eTtIC(fsA?CZ21IgW_'3kcW.d*cU/'3;lj<,C%PH-C<oMRA'[iMCpE`\@B=%AC[tBKqs=%ad G3.*fs8?edHJ'=dHTXcZ1?<.TtJ,+Y3`sJY3#E:$DG,[gTKA;ld`f$^=C')lIEhkkHrmpaMVuYhR(N 7$:Qs@0d&nF7R[[Yin`JEb.Q!Te?mTU\_YQed^Q"-e$lO#<k#*&]F(@Fh;@&H\no;u_f=[%p!MU;\$ 3?D\n'el\n8Nd\n_Z4;W7Pb@,b/&@_,q;9]A\+e%j8Af]C?=kjha8g:m(al,:Bcl-\b:^@ppm_fEKV l,pa/nlY9I^sVNA^sJdf$Feod]W,5_A\?gEB&[F<eCE@=j5'ULD!Br`@^BpF]F))Upda+)[U\)`TtL ,2g]"_]\GkE3i-;l?^&,MB$493f5qsKN5t49M^%oA?^Zt>Y_r7<%bd$-YZ*(HV[pcaRh0%OsiRS@J: ;:,`^>?ZmEp[i88YNf=m`Fk=po48,kc.b/b,P=HWVaq<XAmL<cM">;cKidDYKtVG^?;ZGY04:seZ,= U$FIOVH/69Oa1>O?[-ubd@)QZqjL.h<lJ(O2:%7ebm0^Amp/8N(kNq8.TtKRV_9CZ]_7SbrpJ\iNmW uato(*47]qN*9ae?AK]%1-;?aWbbCu2"^]XkYVZINR?<!it$6:!=K77'I4$K:Eg]WD++]\2DU\)mA@ 5ed-d>NtAFkK/1ppWH,8b=^)s[,\=]e_drYTtIY\TtJ9j\)+dmXLRGBVFR>m$Hm[mGG2[nd\4=Rd&P O=Yc?3H]YnHV]V3!VUod;:>7.E=csP.4ct1N!X\[P>YL]o3YM-g=TtI)3YMu_6TtC`=@c*p39\2qh7 A7Af]X>qjbdG]h]V3!JGi*T"G+lPUj//N_TtK1Ch"eQS]1p/Y]^Y(^TtKdX_I;itmH=la770?q+@SX e71,a$lKQ0#e_&R/h=oau^A6j7]Apa*`'X0>TtI)3$Jf1-eF%al[.o*gj/MXtcdC.fd';B2h:[7g=g ur<D$n$OTtI)3TtJ^SXKTsTl:nHUekt!u^Jrojg0LDb\'tbogS)::F.p8'FJ6@@]]O7sBtX3&B#*j" :Vc,]qt8YM`d+8j_KNE>^JUuXbd,OCZ*1NXTtIDAXQHVIdc]'C$I\4CY4(GTXfn\7e^hFD;Sbraq<# l:8B%:Ff?2_Q$:R?K0d&nQ7R[[QaO,C_IF3MkTrrjIU#Enu?FO4QI(mkiG/1T(<XSZ6TtI8RbjOjog #p1@c$JC;cgf`8TtJ_;X@TOhTtC`9I%e3kEqSFqUnPH)U!hZCg!\lc]%Y9[`pKYS\^nA"TtJsdTtJ- V\5;&DhW3t"hX%i'ip3;Niq)<PTtKO1$GUBDWpQk'7IXFOIIa3)U%cjfYj\gfp!%^,ih=#dg'Xq>cf !7&daupteuGFVf!;Ti\,F1?g:O&khVG\1$493j5qsKN77K]Q\43tr]$9BM]$00s]hc=<^Lt;m_#<YH _P54jc#F)lb,ie4gX<plY27*j][0C%>d)?*i88;?]V3!QWQ"Z?mGkBj^L[*6TtJagd(ll3Y^"YafKl jCfDOt"Z_l@Q$DG,fB=VQ]HFA(R@bbqXDqnmYC>cATZFO&pZ_>%B=phfCi3hLTi4?I2`Sf[Y\ROL"\ RXR,\Ri`S^/F$=jE_0oIH7?jBZ.c]]Z!R<]]>dV>._uADreD"o=N9.V@!Z!7R8aO77Ka8$M/#nU;-] gUYrTQkI]($VtBfNjQL<qoV&q3=m0f3k]4C<k\d*,TtI)3k[Wgkk]Z:Ulf"PMlfOnRlfl2P$G]'']V 3"(hs9497D\-SddG]&mdAHl>f#d#]Yj?Ynd;)'TtKu1_XPN?TtKo%_XI"npLhD5_sPA0_t!>+_s7[$ @Dh@%m%M)aoqB%jkkS0LlCkl^B(YWfBuNj@?D5"=`S\Mrcfj*$\SfahddaNFdd<a@Zr5W1g=Ec=\69 4H7PI+_+@\%S71/2*]jARS_FVR<p@t`=ZECTThUV"<d_)l6W+if?$G5fkl+VS]D"I/l\*U*\Y/ThtH hYAFIda#NIIY\[cO.Qon_*\Vn^#-JTtJ<>oBjIiomHG1TtI)3TtJ?Sp9Y1HGf@Po](fe1C\V`@Atcl W:W@dU]ZY6_9>Z.X\"UGAXO+.bTtIRHTtI)3d_hckYAKuGZE:NK_"ZQgg9p<l$JM]?ag^lubd[9%ca WB1G2h<>Yi=R&YG&Vgh<(sL$:Za90d&q?7R[[M@-V^E8\IKb]]s=uF8#7kEU@keIHkaE]Ys63]F+.# _L9DsTtJtMg>'rLWlEBade9lRZG=D$\6e2hj%9[DZKB]2][3h1e?DZrf<@s#[DU2BbM11ocgGi2o^_ JYnCcjr]6303]6**0j?UK&kK(?X_7@8%`3@"u_7/iT$M;O;9;U.?7H3:6Eie5seBh1DB!U?g]V3!3] Y1',k6gM:^TO9C[D:%ef0ck'oWkm@n9i&h[J/IXi8EPM$496X5qsKO1.F\>^1G#kTtKU!^f\KC_aaI )ohY1X`E&\F`^ul:YWrQ?aRI@Cj/m+DW3'g`]$n=@_RRM4bgXY;8$G=a6a/udZUV8kZUi%/f;7)pZV .VuZVC#If;mZ=hr_f"[I*9q$FTE6]=%5%`O5$dZ.m%'_RR;:lF=L:`8C%@m,Q[/Ad[SQ]4g6Yj7;6i _6gggj6O<o]55)i]st[eTtL$;kI_/8]:lmN_<8>%]Y22FU;=.uUV4G*]'E\jB;)uSY6kV+1I3`<7Pd M&$Git4@-_In>3fJ/^qm;F_<tUs?brn][ID6)DS`F^_6!'=n@nD-_U"pgoZ?aH_ohQ5p-Q^n`V]GEV U!,S$GgKEiNMFEa/nj\7)*rp5e(=Q7Fp)>6e9K4gXal[`X9#mf%..Cf$;jof$a?jZH(\\mDIZ?]&DB &]&gG1\7,f=]V3!q9A`M);XM0[f=L,,ft-5;qr:eqYiANQ]Y^cX]k,'c]kG)olFQ8olFalYlG:;5_+ p]:mCW/'mD92;7PmCc+@\1W71/Nq_QWHB_m%+T_m?Aqdr;VXgK1T?e'QHUX\nZ,$DG,]ENeZ2l.8l. 7b:Vk<h[1`V;J)\;s-X;naN:F[L1L;\BV?V\B;>$_p6j*heh7g]mf,8^T+!?Y/Sj^TtC`+]\;T'kMK 8!@(PX>=J<CiiM!pHi9&q^amIEOiOW5#XSoH][D1aM]0bZU]qN3C_/#pmmG?lGj*'hCq*D`h$H,oGG 2)EBADgeiDmO/klI4Ur@BHQYrmX3_6/5cR$:Zm=0d&qC7R[[>@,,%]]X_&#Xi>;TETD2Q`oM68]]`S cg$@DYg'[8f_;=][o3]DunPSr>`4s8^W2TF3`4OrJjC#jXnO*`5jk&2;f!B2\^>&;7qR0Z'@('4mp9 n>:@,Pb:hnn4Wi,89r`C7<3jB(DHkWliM^%94GkP+03`N>iHlbK4,$GY`h`4t<JcKiHajMkHAg;222 ?,PL9g@J7\i5E=KD@6,EpL3l:pqt:N[Rn!li*,X?m^KIRf>b\UgXP.K$496\5qsKO2F^+Bhu2V,o(B NRnE9#>Zae"D[^*VR`O+j3^ehg>_taYZ8&WBc[I:NAeFgQK]>\I&BuS'1`l:s8n*dOWAZJ*(e47&di 75Hp_P?lljJg.=k]F`8mb[POmbFMKpr^<t$L$7>>G8^']Z,'.EU8%l:$d8$]^KUP6gnje>f&i!cjKP Mn]1IN`P;/Mp9"(p_cXfUn\`7F`(KXAo>pOSo?.KZ8YNfgc1B6!9;0#ic_8#ECW:G6ch22KG+lRB]F #!82aK/@7Q3e*$MUpH?hUYA@.peuYJn<OX2VoK]V3!WmD\Dd=8:AS]AC0W`O;JQlrM,?nU/4PTtI)3 jP%63^30.^TtI)3$G^8k:@Ym6>k>eO@eeHllFqQ-fu?_';X\>;;oN(^<slq-_b7tZpNG%X\Yd"*^3A ej^h:Grlu;L,TtJB<pf.[@A%V<GU[?mJW9geUYJNfJ;8_kAA]=,T9YsE=9>b!An_g+R`c^s_osFL;` FeSG_d::1`PhOum'so,TtC^4 xbtoa End N 16679 4127 E 21 S 29ce27 R 49ff31ab SHAR_EOF echo 'File kterm-4.1.2/g2b is complete' && chmod 0664 kterm-4.1.2/g2b || echo 'restore of kterm-4.1.2/g2b failed' Wc_c="`wc -c < 'kterm-4.1.2/g2b'`" test 21178 -eq "$Wc_c" || echo 'kterm-4.1.2/g2b: original size 21178, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= kterm-4.1.2/hgutil.c ============== if test -f 'kterm-4.1.2/hgutil.c' -a X"$1" != X"-c"; then echo 'x - skipping kterm-4.1.2/hgutil.c (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting kterm-4.1.2/hgutil.c (Text)' sed 's/^X//' << 'SHAR_EOF' > 'kterm-4.1.2/hgutil.c' && /* X * $Header: /usr/local/src/X11/contrib/clients/kterm-4.1.2/RCS/hgutil.c,v 1.0 1991/01/30 00:20:28 mleisher Exp $ X */ X /* X * X * File: hgutil.c X * Description: Convert from N-byte code to KS code. X * Author: mleisher@nmsu.edu (Mark Leisher) X * Created: Mon Jan 28 13:18:21 1991 X * Modified: X * X */ X /* X * Copyright (C) 1990 Mark Leisher. X * X * Author: Mark Leisher (mleisher@nmsu.edu) X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * A copy of the GNU General Public License can be obtained from this X * program's author (send electronic mail to mleisher@nmsu.edu) or from X * the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA X * 02139, USA. X * X */ X #include <stdio.h> #include "hgutil.h" X #define INITIAL 0 /* Initial(starting) state for N-byte parse. */ #define MIDDLE 1 /* Middle state for N-byte parse. */ #define FINAL 2 /* Final(ending) state for N-byte parse. */ X static int doing_ks = 1; /* Working on a KS string. */ X /* X * Hash table stuff. Make a table of 4000 slots for 2390 items. X */ X #define M 4000 X typedef struct { X unsigned char *key; X unsigned char *data; } hashnode; X static hashnode table[M]; X /* X * Use Horner's method for evaluating a polynomial at a point. X */ static int hash(key) unsigned char *key; { X int h; X X for (h = 0; *key != '\0'; key++) X h = (64*h + *key) % M; X X return(h); } X /* X * A second hash function for double hashing with linear probing. X * Uses the last 5 bits of the previously generated hash code. X */ static int hash2(h) int h; { X return(32 - (h % 32)); } X void hashinit() { X int i; X X for (i = 0; i < M; i++) X table[i].key = table[i].data = NULL; } X /* X * Insert with double hashing and linear probing. X */ static void hashinsert(key, data, keylength) unsigned char *key, *data; int keylength; { X int h = hash(key); X int nh = hash2(h); X X while(table[h].key != NULL && X strncmp((char *)table[h].key, (char *)key, keylength)) X h = (h + nh) % M; X table[h].key = key; X table[h].data = data; } X /* X * Search for key. X */ static unsigned char * hashlookup(key, keylength) unsigned char *key; int keylength; { X int h = hash(key); X int nh = hash2(h); X unsigned char *data = NULL; X X while(table[h].key != NULL && X strncmp((char *)table[h].key, (char *)key, keylength)) X h = (h + nh) % M; X data = table[h].data; X return(data); } X void load_hgconv_table(filename) char *filename; { X FILE *f; X unsigned char buf[5], *l, *k; X int c, i = 0, nsize = 0, kssize = 2; X X if (!(f = fopen(filename, "r"))) { X fprintf(stderr, "Problem with hgconv table file %s.\n", filename); X exit(-1); X } X X hashinit(); X while(!feof(f)) { X X if ((i >= 0 && i < 40) && nsize != 1) X nsize = 1; X else if ((i >= 40 && i < 389) && nsize != 2) X nsize = 2; X else if (i >= 389 && nsize != 3) X nsize = 3; X X if (fread(buf, 1, nsize+kssize, f) < (nsize+kssize)) { X fclose(f); X fprintf(stderr, "Problem reading table %s\n", filename); X exit(-1); X } X X l = (unsigned char *)malloc((nsize+1) * sizeof(unsigned char)); X k = (unsigned char *)malloc(3 * sizeof(unsigned char)); X l[nsize] = k[2] = '\0'; X strncpy(l, buf, nsize); X strncpy(k, (buf+nsize), 2); X X /* X * Insert by hashing on N-byte sequence. X */ X hashinsert(l, k, nsize); X X c = getc(f); X if (!feof(f) && c != EOL) X ungetc(c, f); X X i++; X } X fclose(f); } X static int vowelcombine(c1, c2) int c1, c2; { X switch(c1) { X case 'l': X switch(c2) { X case 'b': return('K'); break; X case 'c': return('H'); break; X case '|': return('L'); break; X } X break; X case 's': X switch(c2) { X case 'f': return('J'); break; X case 'g': return('N'); break; X case '|': return('B'); break; X } X break; X case 'z': X if (c2 == '|') return('M'); X break; X } X return(0); } X static int conscombine(c1, c2) int c1, c2; { X switch(c1) { X case 'A': X if (c2 == 'U') return('S'); break; X case 'D': X switch(c2) { X case 'X': return('J'); break; X case '^': return('H'); break; X } X break; X case 'I': X switch(c2) { X case 'A': return('G'); break; X case 'Q': return('M'); break; X case 'R': return('N'); break; X case 'U': return('A'); break; X case '\\': return('B'); break; X case ']': return('V'); break; X case '^': return('F'); break; X } X break; X case 'R': X if (c2 == 'U') return('C'); X break; X } X return(0); } X static int initcons(c) int c; { X switch(c) { X case 'A': return('r'); break; X case 'B': return('R'); break; X case 'D': return('s'); break; X case 'G': return('e'); break; X case 'H': return('E'); break; X case 'I': return('f'); break; X case 'Q': return('a'); break; X case 'R': return('q'); break; X case 'S': return('Q'); break; X case 'U': return('t'); break; X case 'V': return('T'); break; X case 'W': return('d'); break; X case 'X': return('w'); break; X case 'Y': return('W'); break; X case 'Z': return('c'); break; X case '[': return('z'); break; X case '\\': return('x'); break; X case ']': return('v'); break; X case '^': return('g'); break; X } X return(0); } X static int vowel(c) int c; { X switch (c) { X case 'b': return('k'); break; X case 'c': return('o'); break; X case 'd': return('i'); break; X case 'e': return('O'); break; X case 'f': return('j'); break; X case 'g': return('p'); break; X case 'j': return('u'); break; X case 'k': return('P'); break; X case 'l': return('h'); break; X case 'm': return('k'); break; X case 'n': return('o'); break; X case 'o': return('l'); break; X case 'r': return('y'); break; X case 's': return('n'); break; X case 't': return('j'); break; X case 'u': return('p'); break; X case 'v': return('l'); break; X case 'w': return('b'); break; X case 'z': return('m'); break; X case '{': return('M'); break; X case '|': return('l'); break; X } X return(0); } X static int finalcons(c) int c; { X switch(c) { X case 'A': return('r'); break; X case 'B': return('R'); break; X case 'C': return('S'); break; X case 'D': return('s'); break; X case 'E': return('J'); break; X case 'F': return('H'); break; X case 'G': return('e'); break; X case 'I': return('f'); break; X case 'J': return('G'); break; X case 'K': return('M'); break; X case 'L': return('N'); break; X case 'M': return('A'); break; X case 'N': return('B'); break; X case 'O': return('V'); break; X case 'P': return('F'); break; X case 'Q': return('a'); break; X case 'R': return('q'); break; X case 'S': return('t'); break; X case 'U': return('t'); break; X case 'V': return('T'); break; X case 'W': return('d'); break; X case 'X': return('w'); break; X case 'Z': return('c'); break; X case '[': return('z'); break; X case '\\': return('x'); break; X case ']': return('v'); break; X case '^': return('g'); break; X } X return(0); } X static int mapn2ks(c1, c2, c3, oc1, oc2) char c1, c2, c3; unsigned char *oc1, *oc2; { X unsigned char key[4]; X unsigned char *kscode; X int i = 0; X X if (!c1 && !c2 && !c3) { X *oc1 = *oc2 = '\0'; X return(0); X } X if (c1) key[i++] = c1; X if (c2) key[i++] = c2; X if (c3) key[i++] = c3; X X key[i] = '\0'; X /* X * Map unknown sequences to the space character because they probably X * don't have equivalents in the KSC5601 code set. X * The code position for a space in KS code is 0xa4a0. X */ X if (!(kscode = hashlookup(key, i))) { X *oc1 = 0xa4; X *oc2 = 0xa0; X } else { X *oc1 = kscode[0]; X *oc2 = kscode[1]; X } X X /* X * All N-byte sequences map to a two byte KS code. X */ X return(2); } X int hgconvert(nb, ks, nblength) char *nb; unsigned char **ks; int *nblength; { X register char c, res; X register char cho_sung = 0, jung_sung = 0, jong_sung = 0; X register char *ptr = nb; X register unsigned char *ptr1; X register int length = 0; X char state = INITIAL; X unsigned char c1, c2; X X c = *ptr++; X if (ks) X ptr1 = *ks; X while(c && c != CTL_O) { X switch(state) { X case INITIAL: X if ((cho_sung = initcons(c))) X state = MIDDLE; X else if ((jung_sung = vowel(c))) { X cho_sung = jong_sung = 0; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X } else if ((jong_sung = finalcons(c))) { X cho_sung = jung_sung = 0; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X } X break; X case MIDDLE: X if ((jung_sung = vowelcombine(c, *ptr))) { X state = FINAL; X ptr++; X } else if ((jung_sung = vowel(c))) X state = FINAL; X else if ((res = initcons(c))) { X jung_sung = jong_sung = 0; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X cho_sung = res; X } else if ((res = finalcons(c))) { X jung_sung = jong_sung = 0; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X cho_sung = 0; X jong_sung = res; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X jong_sung = 0; X state = INITIAL; X } X break; X case FINAL: X if ((res = initcons(c)) && vowel(*ptr)) { X jong_sung = 0; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X cho_sung = res; X state = MIDDLE; X } else if ((jong_sung = conscombine(c, *ptr)) && !vowel(ptr[1])) { X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X state = INITIAL; X cho_sung = jung_sung = jong_sung = 0; X } else if ((jong_sung = finalcons(c))) { X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X cho_sung = jung_sung = jong_sung = 0; X state = INITIAL; X } else if ((res = initcons(c))) { X jong_sung = 0; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X cho_sung = res; X state = MIDDLE; X } else if ((res = vowel(c))) { X jong_sung = 0; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X cho_sung = 0; X jung_sung = res; X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X } X jung_sung = 0; X state = INITIAL; X } X } X c = *ptr++; X } X length += mapn2ks(cho_sung, jung_sung, jong_sung, &c1, &c2); X if (ks && c1 && c2) { X *ptr1++ = c1; X *ptr1++ = c2; X *ptr1 = '\0'; X } X if (nblength) X *nblength = ptr - nb; X return(length); } SHAR_EOF chmod 0664 kterm-4.1.2/hgutil.c || echo 'restore of kterm-4.1.2/hgutil.c failed' Wc_c="`wc -c < 'kterm-4.1.2/hgutil.c'`" test 13217 -eq "$Wc_c" || echo 'kterm-4.1.2/hgutil.c: original size 13217, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= kterm-4.1.2/hgutil.h ============== if test -f 'kterm-4.1.2/hgutil.h' -a X"$1" != X"-c"; then echo 'x - skipping kterm-4.1.2/hgutil.h (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting kterm-4.1.2/hgutil.h (Text)' sed 's/^X//' << 'SHAR_EOF' > 'kterm-4.1.2/hgutil.h' && /* X * $Header: /usr/local/src/X11/contrib/clients/kterm-4.1.2/RCS/hgutil.h,v 1.0 1991/01/30 00:21:51 mleisher Exp $ X */ X /* X * X * File: hgutil.h X * Description: Convert from N-byte code to KS code. X * Author: mleisher@nmsu.edu (Mark Leisher) X * Created: Mon Jan 28 13:18:21 1991 X * Modified: X * X */ X #ifndef _hgutil_h #define _hgutil_h X #define CTL_N 0x0e /* N-byte string start indicator. */ #define CTL_O 0x0f /* N-byte string end indicator. */ #define EOL 0x0a /* Unix style ^J line feed. */ X /* X * The hgconvert function takes the original n-byte string and X * converts it to a KS code string. If a NULL is passed for ks, X * hgconvert will return the length of the KS code string. X * If a non-NULL pointer is passed for nblength, the length of the X * N-byte string is returned. X */ int hgconvert(); /* X char *nb; The N-byte string. X unsigned char **ks; RETURNED: The KS string. X int *nblength; RETURNED: The length of the N-byte string. */ X #endif /* _hgutil_h */ SHAR_EOF chmod 0664 kterm-4.1.2/hgutil.h || echo 'restore of kterm-4.1.2/hgutil.h failed' Wc_c="`wc -c < 'kterm-4.1.2/hgutil.h'`" test 1110 -eq "$Wc_c" || echo 'kterm-4.1.2/hgutil.h: original size 1110, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= kterm-4.1.2/hzutil.c ============== if test -f 'kterm-4.1.2/hzutil.c' -a X"$1" != X"-c"; then echo 'x - skipping kterm-4.1.2/hzutil.c (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting kterm-4.1.2/hzutil.c (Text)' sed 's/^X//' << 'SHAR_EOF' > 'kterm-4.1.2/hzutil.c' && /* X * $Header: /usr/local/src/X11/contrib/clients/kterm-4.1.2/RCS/hzutil.c,v 1.2 1991/01/30 00:16:20 mleisher Exp $ X */ X /* X * FILE NAME: hzutil.c X * See MODIFICATIONS entry below. X * X * NAME: X * HC - Hanzi Converter Version 1.2u X * Copyright @ 1988,1989,1990 by Fung F. Lee & Ricky Yeung X * X * SYNOPSIS: X * HC -m mode [-tabs t1 t2 ...] X * mode: can be BIGtoGB or GBtoBIG X * ti: conversion table filenames X * X * DESCRIPTION: X * `HC' converts BIG-5 codes into GB codes (with high bit set), X * and vice versa. BIG-5 is a popular hanzi code used in Taiwan, X * whereas GB (GuoBiao) is Mainland China's national standard. X * GB code (with high bit set) is adopted widely in many systems, X * such as CCDOS and Macintosh Chinese Operating System 6.0.3. X * X * FILES: X * GB0toBIG, GB1toBIG, GB2toBIG, BIG0toGB, BIG1toGB, YiTiZi X * are HC mapping table files. They are either GB or BIG-5 files. X * The format is simple and allows easy modification with a Chinese X * editor. X * X * AUTHORS: X * Ricky Yeung (yeung@june.cs.washington.edu) X * Fung F. Lee (lee@milo.stanford.edu) X * X * ACKNOWLEDGEMENT: X * Thanks to Edmund Lai for providing most of the data in `GB2toBIG'. X * X * DISTRIBUTION: X * This program and the data files are NOT in public domain. X * The source file and the related table files as listed X * in FILES can be freely distributed for non-commercial purposes only. X * X * Contact the authors before making any modification to the software X * and/or the table files. X * X * This software is provided "as is" and the authors disclaim all X * warranties with regard to this software and the correctness of the X * mapping table files. X * X * MODIFICATIONS: X * Modified Tue Sep 11 23:20:21 MDT 1990 by Mark Leisher X * mleisher@nmsu.edu with permission from Ricky Yeung. X * Modified file for use with kterm 4.3.0. X * X * 1. Consolidated GB[012]toBIG files into 'g2b.table' and X * BIG[01]toGB into 'b2g.table'. X * 2. Changed file name to 'hzutil.c'. X * 3. Moved defines and table variables into 'hzutil.h'. X * 4. Removed unneeded functions, modified converter X * function, modified function return types. X * 5. Made most functions static to avoid conflict with X * outside functions. X * 6. Added SGB<->GB,BIG5 abilities to converter(). X */ X /* X Copyright (C) 1989 Fung F. Lee X X sgb2hz: convert a Macintosh/CCDOS SGB file into a HZ file. X hz2sgb: convert a HZ file into a Macintosh/CCDOS SGB file. X X This program is free for general distribution. X X This program runs on UNIX. You are welcome to port it to other operating X systems. X X MODIFICATIONS: X Modified Fri Nov 9 02:35:22 1990 by Mark Leisher X mleisher@nmsu.edu for use with kterm 4.3.0 X X 1. Extracted functions mac2gb and gb2mac from files sgb2hz.c X and hz2sgb.c. X 2. Modified mac2gb and gb2mac function names to X sgb2gb and gb2sbg respectively. X 3. Slightly modified functions. */ X #include <stdio.h> #include <ctype.h> #include "hzutil.h" X static char tables_initialized = 0; X static int SkipSpaces(fp) FILE *fp; { X int c; X X for(;;) X { X c=fgetc(fp); X if ((c&0x80) || !isspace(c)) break; X } X return (c); } X static void fatal(s) char *s; { X fprintf(stderr, "%s\n", s); X exit(1); } X static FILE * openfile(fn) char *fn; { X FILE *fp = fopen(fn, "r"); X X if (!fp) X fprintf(stderr, "Unable to open file: %s\n", fn); X return(fp); } X static unsigned short int makeYiTi(fp) FILE *fp; { X unsigned int code1, code2, value; X int c1, c2; X unsigned short int total=0; X X for (;;) X { X if ((c1=SkipSpaces(fp))==EOF) break; X c2 = fgetc(fp); X code1 = DB(c1, c2); X value = BtoG[code1 - BIGstart]; X for (;;) X { X if ((c1=SkipSpaces(fp))==EOF) break; X c2 = fgetc(fp); X code2 = DB(c1, c2); X BtoG[code2 - BIGstart] = value; X total++; X if ((c1=fgetc(fp))=='\n') X break; X ungetc(c1, fp); X } X } X return total; } X static void init_tables() { X int i; X X if (tables_initialized) return; X GtoB = (unsigned short int *) malloc(sizeof(short int) * GBsize); X BtoG = (unsigned short int *) malloc(sizeof(short int) * BIGsize); X X for (i=0; i<GBsize; i++) X GtoB[i] = BIGbox; X for (i=0; i<BIGsize; i++) X BtoG[i] = GBbox; X tables_initialized = 1; } X int load_hzconv_table(fn) char *fn; { X unsigned int codeS, codeT, cfirst, clast; X int c1, c2, mode = GBtoBIG; X unsigned short int total = 0; X FILE *fp; X char buf[255]; X X init_tables(); X if (!(fp = openfile(fn))) X return(0); X X for (;;) X { X fgets(buf, 255, fp); /* no check for EOF */ X if (buf[0]!='\n' && (buf[0]!='#') && (buf[0]!=' ')) break; X } X X /* header in new HCF format: e.g. '%GB->BIG', '%BIG->GB', '%YITIZI' */ X if (buf[0] == '%') X { X switch(buf[1]) X { X case 'G': mode = GBtoBIG; break; X case 'B': mode = BIGtoGB; break; X case 'Y': mode = YITIZI; break; X default: fatal("unknown HCF format\n"); break; X } X } X X if (mode == YITIZI) { X total = makeYiTi(fp); X fclose(fp); X return total; X } X X for (;;) X { X if (fscanf(fp, "%x %x", &cfirst, &clast) != 2) X break; X for (codeS = cfirst; codeS <= clast; codeS++) X { X if ((c1=SkipSpaces(fp))==EOF) break; X c2 = fgetc(fp); X codeT = DB(c1, c2); X if (mode == GBtoBIG) X { X if (!inBIGrange(codeT)) X fatal("error: invalid code mapping table entry\n"); X if (codeT != BIGbox) X { X GtoB[codeS - GBstart] = codeT; X BtoG[codeT - BIGstart] = codeS; X total++; X } X } X else if (mode == BIGtoGB) X { X if (!inGBrange(codeT)) X fatal("error: invalid code mapping table entry\n"); X if (codeT != GBbox) X { X BtoG[codeS - BIGstart] = codeT; X GtoB[codeT - GBstart] = codeS; X total++; X } X } X } X } X fclose(fp); X return total; } X static void gb2sgb(hi, lo, hi1, lo1) unsigned char hi, lo, *hi1, *lo1; { X hi &= 0x7f; X lo &= 0x7f; X *hi1 = 0x81 + (hi - 0x21)/2; X if (hi%2 != 0) { X *lo1 = 0x40 + (lo - 0x21); X *lo1 += ((*lo1 >= 0x7f) ? 1 : 0); X } else X *lo1 = 0x9f + (lo - 0x21); } X static void sgb2gb(hi, lo, hi1, lo1) unsigned char hi, lo, *hi1, *lo1; { X if (lo >= 0x9f) { X *hi1 = 0x21 + (hi - 0x81) * 2 + 1; X *lo1 = 0x21 + (lo - 0x9f); X } else { X *hi1 = 0x21 + (hi - 0x81) * 2; X lo -= ((lo > 0x7f) ? 1 : 0); X *lo1 = 0x21 + (lo - 0x40); X } X *hi1 |= 0x80; X *lo1 |= 0x80; } X void hzconvert(mode, c1, c2, oc1, oc2) int mode; unsigned char c1, c2, *oc1, *oc2; { X unsigned short int codeS, codeT; X unsigned char ch1, ch2; X X codeS = DB(c1, c2); X codeT = codeS; X switch(mode) { X case GBtoBIG: X if (inGBrange(codeS)) X codeT = GtoB[codeS - GBstart]; X else X codeT = BIGbox; X break; X case BIGtoGB: X if (inBIGrange(codeS)) X codeT = BtoG[codeS - BIGstart]; X else X codeT = GBbox; X break; X case GBtoSGB: X if (inGBrange(codeS)) { X gb2sgb(c1, c2, &ch1, &ch2); X codeT = DB(ch1, ch2); X } X break; X case SGBtoGB: X if (inSGBrange(codeS)) { X sgb2gb(c1, c2, &ch1, &ch2); X codeT = DB(ch1, ch2); X } X break; X case BIGtoSGB: X if (inBIGrange(codeS)) X codeT = BtoG[codeS - BIGstart]; X else X codeT = GBbox; X c1 = HB(codeT); X c2 = LB(codeT); X gb2sgb(c1, c2, &ch1, &ch2); X codeT = DB(ch1, ch2); X break; X case SGBtoBIG: X if (inSGBrange(codeS)) { X sgb2gb(c1, c2, &ch1, &ch2); X ch1 |= 0x80; X ch2 |= 0x80; X codeS = DB(ch1, ch2); X } else X codeS = BIGbox; X codeT = codeS; X if (inGBrange(codeS)) X codeT = GtoB[codeS - GBstart]; X else X codeT = BIGbox; X break; X } X X *oc1 = HB(codeT); X *oc2 = LB(codeT); } SHAR_EOF chmod 0664 kterm-4.1.2/hzutil.c || echo 'restore of kterm-4.1.2/hzutil.c failed' Wc_c="`wc -c < 'kterm-4.1.2/hzutil.c'`" test 7921 -eq "$Wc_c" || echo 'kterm-4.1.2/hzutil.c: original size 7921, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= kterm-4.1.2/hzutil.h ============== if test -f 'kterm-4.1.2/hzutil.h' -a X"$1" != X"-c"; then echo 'x - skipping kterm-4.1.2/hzutil.h (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting kterm-4.1.2/hzutil.h (Text)' sed 's/^X//' << 'SHAR_EOF' > 'kterm-4.1.2/hzutil.h' && /* X * $Header: /usr/local/src/X11/contrib/clients/kterm-4.1.2/RCS/hzutil.h,v 1.2 1991/01/30 00:15:29 mleisher Exp $ X */ X /* X * FILE NAME: hzutil.h X * See MODIFICATIONS entry below. X * X * NAME: X * HC - Hanzi Converter Version 1.2u X * Copyright @ 1988,1989,1990 by Fung F. Lee & Ricky Yeung X * X * SYNOPSIS: X * HC -m mode [-tabs t1 t2 ...] X * mode: can be BIGtoGB or GBtoBIG X * ti: conversion table filenames X * X * DESCRIPTION: X * `HC' converts BIG-5 codes into GB codes (with high bit set), X * and vice versa. BIG-5 is a popular hanzi code used in Taiwan, X * whereas GB (GuoBiao) is Mainland China's national standard. X * GB code (with high bit set) is adopted widely in many systems, X * such as CCDOS and Macintosh Chinese Operating System 6.0.3. X * X * FILES: X * GB0toBIG, GB1toBIG, GB2toBIG, BIG0toGB, BIG1toGB, YiTiZi X * are HC mapping table files. They are either GB or BIG-5 files. X * The format is simple and allows easy modification with a Chinese X * editor. X * X * AUTHORS: X * Ricky Yeung (yeung@june.cs.washington.edu) X * Fung F. Lee (lee@milo.stanford.edu) X * X * ACKNOWLEDGEMENT: X * Thanks to Edmund Lai for providing most of the data in `GB2toBIG'. X * X * DISTRIBUTION: X * This program and the data files are NOT in public domain. X * The source file and the related table files as listed X * in FILES can be freely distributed for non-commercial purposes only. X * X * Contact the authors before making any modification to the software X * and/or the table files. X * X * This software is provided "as is" and the authors disclaim all X * warranties with regard to this software and the correctness of the X * mapping table files. X * X * MODIFICATIONS: X * Modified Tue Sep 11 23:20:21 MDT 1990 by Mark Leisher X * mleisher@nmsu.edu with permission from Ricky Yeung. X * Modified file for use with kterm 4.1.0. X * X * 1. Consolidated GB[012]toBIG files into 'g2b.table' and X * BIG[01]toGB into 'b2g.table'. X * 2. Changed file name to 'hzutil.h'. X * 3. Moved defines and table variables into 'hzutil.h'. X * 4. Added converter function prototype. X * 5. Added load_hzconv_table initialization function prototype. X * 6. Added SGB<->GB, BIG conversion(see note in hzutil.c). X */ X #ifndef _hzutil_h #define _hzutil_h X #define GBtoBIG 1 #define BIGtoGB 2 #define GBtoSGB 3 #define SGBtoGB 4 #define BIGtoSGB 5 #define SGBtoBIG 6 #define YITIZI 7 X #define GBstart 0xA1A1 /* first address of GtoB table */ #define GBend 0xFEFE /* last address of GtoB table */ #define GBsize 0x5E5E /* size of GtoB table */ #define SGBstart 0x8140 /* first address of Shift-GuoBiao code */ #define SGBend 0xAFFC /* last address of Shift-GuoBiao code */ #define BIGstart 0xA140 /* first address of BtoG table */ #define BIGend 0xF9FE /* last address of BtoG table */ #define BIGsize 0x58BF /* size of BtoG table */ X #define GBbox 0xA1F5 /* GB code of blank box, default value of BtoG table */ #define BIGbox 0xA1BC /* BIG code of blank box,default value of GtoB table */ X #define HB(x) ((x>>8) & 0xFF) #define LB(x) (x & 0xFF) #define DB(hi,lo) ((((hi)&0xFF) << 8) | ((lo)&0xFF)) #define isFirstByte(c) ((c)>=0xA1) #define inGBrange(x) (((x)>=GBstart) && ((x)<=GBend)) #define inSGBrange(x) (((x)>=SGBstart) && ((x)<=SGBend)) #define inBIGrange(x) (((x)>=BIGstart) && ((x)<=BIGend)) X unsigned short int *BtoG, *GtoB; /* Hanzi code mapping tables */ X int load_hzconv_table(); /* char *tbl_name; */ X void hzconvert(); /* int mode, See above X unsigned char c1, input HB char X unsigned char c2, input LB char X unsigned char *oc1, output HB char X unsigned char *oc2 output LB char */ X #endif /* _hzutil_h */ SHAR_EOF chmod 0664 kterm-4.1.2/hzutil.h || echo 'restore of kterm-4.1.2/hzutil.h failed' Wc_c="`wc -c < 'kterm-4.1.2/hzutil.h'`" test 3632 -eq "$Wc_c" || echo 'kterm-4.1.2/hzutil.h: original size 3632, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= kterm-4.1.2/input.c ============== if test -f 'kterm-4.1.2/input.c' -a X"$1" != X"-c"; then echo 'x - skipping kterm-4.1.2/input.c (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting kterm-4.1.2/input.c (Text)' sed 's/^X//' << 'SHAR_EOF' > 'kterm-4.1.2/input.c' && /* X * $XConsortium: input.c,v 1.8 89/12/10 20:44:48 jim Exp $ X * $Header: /usr/src.yoshi/X/KTerm/4.1.0/RCS/input.c,v 1.1 90/06/27 09:39:05 kagotani Rel $ X */ X #ifndef lint static char *rcsid_input_c = "$XConsortium: input.c,v 1.8 89/12/10 20:44:48 jim Exp $"; #endif /* lint */ X #include <X11/copyright.h> X /* X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. X * X * All Rights Reserved X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, X * provided that the above copyright notice appear in all copies and that X * both that copyright notice and this permission notice appear in X * supporting documentation, and that the name of Digital Equipment X * Corporation not be used in advertising or publicity pertaining to X * distribution of the software without specific, written prior permission. X * X * X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS X * SOFTWARE. X */ X /* input.c */ X #ifndef lint static char rcs_id[] = "$XConsortium: input.c,v 1.8 89/12/10 20:44:48 jim Exp $"; #endif /* lint */ X #include <X11/Xlib.h> #include <X11/keysym.h> #include <X11/DECkeysym.h> #include <X11/Intrinsic.h> #include <X11/Xutil.h> #include <stdio.h> #include "ptyx.h" X static XComposeStatus compose_status = {NULL, 0}; #ifdef ENBUG /* kagotani */ static char *kypd_num = " XXXXXXXX\tXXX\rXXXxxxxXXXXXXXXXXXXXXXXXXXXX*+,-.\\0123456789XXX="; #else static char *kypd_num = " XXXXXXXX\tXXX\rXXXxxxxXXXXXXXXXXXXXXXXXXXXX*+,-./0123456789XXX="; #endif static char *kypd_apl = " ABCDEFGHIJKLMNOPQRSTUVWXYZ??????abcdefghijklmnopqrstuvwxyzXXX"; static char *cur = "DACB"; X static int funcvalue(), sunfuncvalue(); extern Boolean sunFunctionKeys; X void AdjustAfterInput (screen) register TScreen *screen; { X if(screen->scrollkey && screen->topline != 0) X WindowScroll(screen, 0); X if(screen->marginbell) { X int col = screen->max_col - screen->nmarginbell; X if(screen->bellarmed >= 0) { X if(screen->bellarmed == screen->cur_row) { X if(screen->cur_col >= col) { X if(screen->cur_col == col) X Bell(); X screen->bellarmed = -1; X } X } else X screen->bellarmed = screen->cur_col < X col ? screen->cur_row : -1; X } else if(screen->cur_col < col) X screen->bellarmed = screen->cur_row; X } } X Input (keyboard, screen, event, eightbit) register TKeyboard *keyboard; register TScreen *screen; register XKeyPressedEvent *event; Bool eightbit; { X #define STRBUFSIZE 100 X X char strbuf[STRBUFSIZE]; X register char *string; X register int key = FALSE; X int pty = screen->respond; X int nbytes; X KeySym keysym; X ANSI reply; X #ifdef KTERM X extern XtermWidget term; X nbytes = XmuLookupKana ((XKeyEvent *)event, strbuf, STRBUFSIZE, X &keysym, &compose_status); # ifdef KTERM_KANJI SHAR_EOF true || echo 'restore of kterm-4.1.2/input.c failed' fi echo 'End of kterm-4.1.2 part 11' echo 'File kterm-4.1.2/input.c is continued in part 12' echo 12 > _shar_seq_.tmp exit 0 ----------------------------------------------------------------------------- mleisher@nmsu.edu "I laughed. Mark Leisher I cried. Computing Research Lab I fell down. New Mexico State University It changed my life." Las Cruces, NM - Rich [Cowboy Feng's Space Bar and Grille] -- Dan Heller O'Reilly && Associates Z-Code Software Comp-sources-x: Senior Writer President comp-sources.x@uunet.uu.net argv@ora.com argv@zipcode.com