v12i092: kterm - kanji xterm, Part11/18

mleisher at NMSU.Edu mleisher at NMSU.Edu
Sat May 11 10:51:04 AEST 1991


Submitted-by: mleisher at 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 at 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_ at 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+ at 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 at 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 at +>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 at 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+ at 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 at 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 at Z%]KiX5_ca- at XhqBLW;!f8jfo03bbsC(\?4)mn&2K09s\$2[&9V*hmR^1Gc,2W
D$gV:7R8aO6:OF5$EI.6Up!.iE5FlHfVq-4A?2K6IC+ at 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 at 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 at 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 at 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 at 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 at 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 at 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, at 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 at BAl(V*h9TZ?`B:V1#JFWcQ#$Yg9XIVQn"qWI;`f[-J&+6T@@d+ at A+X71-!iYkc:<^$MS/Yj(te
`HL[iXECB=ZE146V#71U$H,rJb0<bt at B4=b::b#M<3s$CaLH<!9ts])<30->HO@\q`+-_e`Vm`q_HO
gb[o9s5UsPp at 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 at WHSk
dX0mZb]8E7DMEsWNKM6[qrIQ]4/&;XnKS6]"YAa_Wn,K[dp7gV5C,.[dXV26UO-o+ at 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 at 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]+ at 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 at C
+Xf`Pc2igSMsu$:HU70d&k=7R[[!n&9aZFLA]jFhsuia/.Y!\#/8neDe9N@&C-;h[6_b\YZ74Y3r1*
YZ at 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 at _^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 at 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 at aAEjYbUY-t:)WNK4$6G$(0XK:]aFLuf*VU20]YjA<^Xf&$p\Os3oY&:Lc[oK^3]"=ng`B
ah<6o71a+ at J%U71-4dZq at jR\TbgE[_KUsZ<+0bUq!J.YY2+b[&Lml$F]3$qmPe!iO?M6FM##a at _+h*
kcfH1lE'fi<lIJH?OEd2\7VQ&Y-,KDYL')Fi2EHh\SJ"O\O+6:_;D_G_u0q=V57S'Hc#Q\ii at 7$@BN
tIr2)cW@]Q@!j1NINfu68b`MU/J^-oe<`co at u[)]&G^Ab?)`4WgoZ[&KdW*d@*$F=9WgoG,'6+H0[k
Iam/W3j=WfVIQ6jg=EO^8gT.$:Ha;0d&kA7R[[Pe at B7rGH>)]?E$eu7BEo*6Foh,:8W3<[^O/clO(M
)^t-$Tf&*K?\+m5]_:,sbY%bl.[*5 at X^=9?r[-n at 5m(CQK\[hXLF0TGdGe0cMqP7/s at _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 at 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 at T
tI)3TtI)3TtC^>6o[Ie+ at 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 at 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 at tb2U:[6/jA"ge
kLdJs^"_`*^!saK^Y?NLl__GJl_hMN^YHTX$GXj#eEa0Pe&H7mU@,8%`5:+"<q?.*f>H,6WPl<d5RO
3tcEEqSb#YD(W5, at Jc.U@qX$Enbd)+:%gnD'^[]9bAZJ9o;Wo2Cpou^1T<:NW(;;eFsW6Ni:euJDXo
*Pgm6:!=K6pa at 3$EE^Bf at 0K@]?n4Vf:fk(^"cH'Ycr/sr6tPlqUb0CfBBY\gf!3K]>EWB^.INf_;4b
Bp0+ZdX1.0^VcV#Z$E3I at 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 at tjj^jKTtI)3X0Se.d7h"B
ZhiJ<d7r"de?Yd\e at 2[PTtC^>6pj6p+ at 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 at 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."^+ at RtR71-0fYh[`Je8h7qYiaG_YiE(Mgt&gmZg
FI!fP]>]$FAp%mbHRLB!^*tfX]#o6*oOVnY*V+aL:<Cb-p3Gfa=FcgsWXcgsFj*[c4aYgtf]Wgs"R1
[b7 at 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 at X0CpS8$l at 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 at Z[mQk%iM5LD]P>:'m+TEua\8VYb]TuE$E
N0eiN[L0E3XPm at GPJ,Gj0 at ir1Ucs]ZI%n6c+)A]F)hlb at 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 at CVF$:Vtn9p
V@)Z\lq=%blqHb at 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+ at S+V71-,oXJi4IY=R at 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 at 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 at bXe^OWGAJCeCD3Ac=ck+X1J_>\Y6[=>HV5<7D
*!1:p*p'<NuJPdBQ*hd'5j at 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+ at S7Z71-G1g7c">
\*Vt[\)k*a_"G:T]g0>7`9k6(k,.:8$G?>P>ep'KoBg8/HH"8'Dt0XpV8N5S6E!/Iqo_ at d=UOe$W_0
9mW^t at 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 at 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 at 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+ at 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 at c$JC;cgf`8TtJ_;X at 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 at Q$DG,fB=VQ]HFA(R at 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 at Zr5W1g=Ec=\69
4H7PI+_+@\%S71/2*]jARS_FVR<p at t`=ZECTThUV"<d_)l6W+if?$G5fkl+VS]D"I/l\*U*\Y/ThtH
hYAFIda#NIIY\[cO.Qon_*\Vn^#-JTtJ<>oBjIiomHG1TtI)3TtJ?Sp9Y1HGf at Po](fe1C\V`@Atcl
W:W at 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 at -V^E8\IKb]]s=uF8#7kEU at keIHkaE]Ys63]F+.#
_L9DsTtJtMg>'rLWlEBade9lRZG=D$\6e2hj%9[DZKB]2][3h1e?DZrf<@s#[DU2BbM11ocgGi2o^_
JYnCcjr]6303]6**0j?UK&kK(?X_7 at 8%`3@"u_7/iT$M;O;9;U.?7H3:6Eie5seBh1DB!U?g]V3!3]
Y1',k6gM:^TO9C[D:%ef0ck'oWkm at n9i&h[J/IXi8EPM$496X5qsKO1.F\>^1G#kTtKU!^f\KC_aaI
)ohY1X`E&\F`^ul:YWrQ?aRI at 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 at -_In>3fJ/^qm;F_<tUs?brn][ID6)DS`F^_6!'=n at 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 at 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 at J7\i5E=KD at 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 at .peuYJn<OX2VoK]V3!WmD\Dd=8:AS]AC0W`O;JQlrM,?nU/4PTtI)3
jP%63^30.^TtI)3$G^8k:@Ym6>k>eO at 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 at 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 at 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 at 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 at 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 at june.cs.washington.edu)
X *	Fung F. Lee (lee at 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 at 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 at 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 at june.cs.washington.edu)
X *	Fung F. Lee (lee at 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 at 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 at 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 at uunet.uu.net
argv at ora.com                 argv at zipcode.com



More information about the Comp.sources.x mailing list