Mercurial > kinput2.yaz
diff lib/Xatoklib/if.c @ 0:92745d501b9a
initial import from kinput2-v3.1
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Mar 2010 04:44:30 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/Xatoklib/if.c Mon Mar 08 04:44:30 2010 +0900 @@ -0,0 +1,564 @@ +/* + * Copyright 1999 Justsystem Corporation, Japan. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation, and that the name of Justsystem Corporation + * not be used in advertising or publicity pertaining to distribution + * of the software without specific, written prior permission. Justsystem + * Corporation makes no representations about the suitability of this + * software for any purpose. It is provided "as is" without express + * or implied warranty. + * + * Author: Atsushi Irisawa + */ + +#ifndef lint +static char rcsid[] = "$Id: if.c,v 1.3 1999/08/24 09:05:26 ishisone Exp $" ; +#endif /* !lint */ + +#include <stdio.h> +#include <X11/IntrinsicP.h> +#include <X11/StringDefs.h> +#include <X11/Xmu/Atoms.h> +#include <X11/keysym.h> + +#include <Xatoklib.h> +#include <key_def.h> + +/* Page */ +/* + * [$B4X?tL>(B] + * atokModeSet( ) + * [$BI=Bj(B] + * $B%b!<%I$N@_Dj(B + * [$B8F=P7A<0(B] + * int atokModeSet( _XatokRecPtr acomm, WORD ceCmd, WORD value ) + * + * [$B0z?t(B] + * $B7?(B : $BL>(B $B>N(B : IO : $B@b(B $BL@(B + * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B + * WORD : ceCmd : i : CE $B%3%^%s%IHV9f(B + * WORD : value : i : $BCM(B + * + * + * [$BJV$jCM(B] + * CE$B$N=hM}7k2L(B + * [$B;HMQ4X?t(B] + * AtokClntCommunicate( ) + * [$B5!G=(B] + * CE$B$N%b!<%I$r9T$J$&(BAPI$B$r8F$S=P$9!#(B + * value $B$,(BATCEPRVAPI_READCMD $B$N;~$O!"(B + * $B8=:_$N@_DjCM$NFI$_9~$_$G$"$k!#(B + */ +WORD atokModeSet(acomm, ceCmd, value) +_XatokRecPtr acomm; +WORD ceCmd; +WORD value; +{ + if ( value == ATCEPRVAPI_READCMD ) { + acomm->NETrqst.AtCEPrvAPIOutinf = ATCEPRVAPI_READCMD ; + } + else { + acomm->NETrqst.AtCEPrvAPIOutinf = value ; + } + acomm->NETrqst.ceCmd = ceCmd ; ; + AtokClntCommunicate( acomm->sock, &acomm->NETrqst, &acomm->NETrslt ) ; + + return acomm->NETrslt.header.CEOutinf ; +} + +/* Page */ +/* + * [$B4X?tL>(B] + * atokConnect( ) + * [$BI=Bj(B] + * ATOK12X $B%5!<%P$H$N@\B3(B + * [$B8F=P7A<0(B] + * int atokConnect( char *server, char *port, char *conf, char *style, + * _XatokRecPtr acomm ) + * + * [$B0z?t(B] + * $B7?(B : $BL>(B $B>N(B : IO : $B@b(B $BL@(B + * char : *server : i : ATOK12x $B2TF/%[%9%HL>(B + * char : *port : i : $B@\B3%5!<%S%9L>(B + * char : *conf : i : conf $B%U%!%$%kL>(B + * char : *style : i : style $B%U%!%$%kL>(B + * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B + * + * + * [$BJV$jCM(B] + * 0 $BL$K~(B : $B@\B3%(%i!<(B + * $B#00J>e(B :$B@\B3$7$?(BSOCKET$B5-=R;R(B + * + * [$B;HMQ4X?t(B] + * AtokClntConnect( ) + * XatokBufferConvert( ) + * [$B5!G=(B] + * $B?75,$K(B ATO$B#1#2(Bx$B$H$N@\B3$r9T$J$&!#(B + * $B@\B3$O%W%m%;%9$G#1$D$G$h$$!#(B + * $B@\B3$,=PMh$?>l9g$K$O!"3F%b!<%I$N8=:_$N@_DjCM$r<hF@$9$k!#(B + */ +int atokConnect(server, port, conf, style, acomm) +char *server; +char *port; +char *conf; +char *style; +_XatokRecPtr acomm; +{ + wchar dummy[128] ; + int status ; + int sock ; + + sock = AtokClntConnect( server, port, conf, style, + &acomm->NETrqst, &acomm->NETrslt ) ; + if ( sock < 0 ) { + return sock ; + } + + /* + * $B@\B3$K@.8y$7$?$i8=:_$N%b!<%I$r<hF@$9$k!#(B + *$B%b!<%IJ8;zNs$K4X$7$F$O!"@\B3;~$K%j%?!<%s$5$l$k!#(B + */ + XatokBufferConvert( acomm, ( WORD ) -1, &acomm->NETrslt, + dummy, &status, &status, &status, &status ) ; + + acomm->sock = sock ; + + /* + * $B8=:_$N@_DjCM$r<hF@$9$k!#(B + */ + acomm->mode.modeKANDSP = atokModeSet( acomm, + IME_PRV_SETKANDSP, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeHEN = atokModeSet( acomm, + IME_PRV_SETHENMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeGAKU = atokModeSet( acomm, + IME_PRV_SETGAKUMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeKOTE = atokModeSet( acomm, + IME_PRV_SETKOTEMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeOKURI = atokModeSet( acomm, + IME_PRV_SETOKURIMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeROT = atokModeSet( acomm, + IME_PRV_SETROTMODEF, ATCEPRVAPI_READCMD ) ; + + return sock ; +} +/* Page */ +/* + * [$B4X?tL>(B] + * atokCEOpen( ) + * [$BI=Bj(B] + * CONTEXT$B$N:n@.(B + * [$B8F=P7A<0(B] + * int atokCEOpen( int sock, int clntid, _XatokRecPtr acomm ) + * + * [$B0z?t(B] + * $B7?(B : $BL>(B $B>N(B : IO : $B@b(B $BL@(B + * int : sock : i : ATOK12X $B$H$N@\B3(BSOCKET + * int : clntid : i : $B%/%i%$%"%s%H(BID + * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B + * + * [$BJV$jCM(B] + * -1 : CONTEXT$B:n@.%(%i!<(B + * 1 : CONTEXT $B:n@.@.8y(B + * + * [$B;HMQ4X?t(B] + * AtokClntCEOpen( ) + * XatokBufferConvert( ) + * [$B5!G=(B] + * $B4{$K@\B3$5$l$F$$$F!"%/%i%$%"%s%H(BID$B$,3d$jEv$F$i$l$F$$$k(B + * $B%;%C%7%g%s$KBP$7!"(BATOK12CE $B$H$N(BCONTEXT$B$rDI2C:n@.$9$k!#(B + */ + +int atokCEOpen(sock, clntid, acomm) +int sock; +int clntid; +_XatokRecPtr acomm; +{ + wchar dummy[128] ; /* BufferConvert $B$N$?$a$N(B TMP */ + int status ; /* BufferConvert $B$N$?$a$N(B TMP */ + + if ( AtokClntCEOpen( sock, clntid, &acomm->NETrqst, &acomm->NETrslt ) < 0 ) { + return -1 ; + } + + XatokBufferConvert( acomm, ( WORD ) -1, &acomm->NETrslt, + dummy, &status, &status, &status, &status ) ; + + acomm->mode.modeKANDSP = atokModeSet( acomm, + IME_PRV_SETKANDSP, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeHEN = atokModeSet( acomm, + IME_PRV_SETHENMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeGAKU = atokModeSet( acomm, + IME_PRV_SETGAKUMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeKOTE = atokModeSet( acomm, + IME_PRV_SETKOTEMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeOKURI = atokModeSet( acomm, + IME_PRV_SETOKURIMODE, ATCEPRVAPI_READCMD ) ; + acomm->mode.modeROT = atokModeSet( acomm, + IME_PRV_SETROTMODEF, ATCEPRVAPI_READCMD ) ; + + return 1 ; +} + + +/* Page */ +/* + * [$B4X?tL>(B] + * atokKanjiOn + * [$BI=Bj(B] + * $B4A;z(BON + * [$B8F=P7A<0(B] + * int atokKanjiOn( _XatokRecPtr acomm ) + * [$B0z?t(B] + * $B7?(B : $BL>(B $B>N(B : IO : $B@b(B $BL@(B + * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B + * + * [$BJV$jCM(B] + * 0 $BL$K~(B : $B%(%i!<(B + * 0 : OK + * + * [$B;HMQ4X?t(B] + * atokClntCommunicate( ) + * [$B5!G=(B] + * CE $B$N%b!<%I$r4A;z(BON$B$H$9$k!#(B + * + */ +int atokKanjiOn(acomm) +_XatokRecPtr acomm; +{ + int status ; + + acomm->convStatus = M_KEYCONV ; + acomm->convStatus = acomm->oldStatus ; + acomm->NETrqst.ceCmd = IME_PRV_KANJION ; + acomm->curAux = acomm->menuAux ; + + status = AtokClntCommunicate( acomm->sock, + &acomm->NETrqst, &acomm->NETrslt ) ; + + return status ; +} + +int atokKanjiOff(acomm) +_XatokRecPtr acomm; +{ + int status ; + + acomm->oldStatus = acomm->convStatus ; + acomm->convStatus = M_NOKEYCONV ; + acomm->NETrqst.ceCmd = IME_PRV_KANJIOFF ; + acomm->curAux = acomm->menuAux ; + + status = AtokClntCommunicate( acomm->sock, + &acomm->NETrqst, &acomm->NETrslt ) ; + + return status ; +} + +/* Page */ +/* + * [$B4X?tL>(B] + * atokWordStyleList( ) + * [$BI=Bj(B] + * $BIJ;l%j%9%H$N<hF@(B + * [$B8F=P7A<0(B] + * int atokWordStyleList( _XatokRecPtr acomm ) + * + * [$B0z?t(B] + * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B + * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B + * + * [$BJV$jCM(B] + * -1 : $BAw?.%(%i!<(B + * N : $BIJ;l$N8D?t(B + * + * [$B;HMQ4X?t(B] + * atokClntCommunicate( ) + * [$B5!G=(B] + * $B<-=q$KEPO?$9$k$?$a$NIJ;l%j%9%H$r<hF@$9$k!#(B + * $BIJ;l%j%9%H$O(B S-JIS $B$GAw$i$l$FMh$k!#(Bkinput2 $BFbIt$G$O(B + * EUC $B$G4IM}$7$F$$$k$?$a!"$3$3$G%3!<%IJQ49$r9T$J$&!#(B + * $BIJ;l%j%9%H$O!"8uJd%j%9%H$r4IM}$9$k$N$HF1$8%P%C%U%!$G(B + * $B4IM}$9$k!#$=$N%P%C%U%!$,<hF@$5$l$F$$$J$$>l9g$K$O!"(B + * $B?7$?$K<hF@$9$k!#(B + */ +int atokWordStyleList(acomm) +_XatokRecPtr acomm; +{ + int size ; + int i, j, n ; + int len ; + ATOKDEHINSTR *sptr ; + char euc[BUFSIZ] ; + + if ( acomm->hinsiPtr ) { + goto make_cand ; + } + + acomm->NETrqst.ceCmd = IME_PRV_WORDSYLECOUNT ; + if ( AtokClntCommunicate( acomm->sock, &acomm->NETrqst, &acomm->NETrslt ) < 0 ) { + return -1 ; + } + +#ifdef ATOK_DEBUG + printf( "CHECK %d\n", acomm->NETrslt.header.CEOutinf ) ; +#endif /* ATOK_DEBUG */ + acomm->hinsiNum = acomm->NETrslt.header.CEOutinf ; + acomm->NETrqst.ceCmd = IME_PRV_WORDSTYLELIST ; + acomm->NETrqst.AtCEIncode = acomm->hinsiNum ; +#ifdef ATOK_DEBUG +printf( "\311\312\273\354\301\355\277\364 %d\n"/*=$BIJ;lAm?t(B %d\n=*/, acomm->hinsiNum ) ; +#endif /* ATOK_DEBUG */ + AtokClntCommunicate( acomm->sock, &acomm->NETrqst, &acomm->NETrslt ) ; + + size = sizeof( ATOKDEHINSTR ) * acomm->hinsiNum ; + acomm->hinsiPtr = ( ATOKDEHINSTR * )malloc( size ) ; + sptr = acomm->NETrslt.header.wordPtr ; + memcpy( acomm->hinsiPtr, sptr, size ) ; +make_cand: + size = 0 ; + /* + * S-JIS $B$GAw$i$l$F$-$?IJ;l%j%9%H%G!<%?$r(B kinput2$BB&$G07$($k$h$&$K(B + * EUC $B$KJQ49$9$k!#(B + */ + for( i = 0 ; i < acomm->hinsiNum ; i++ ) { + size += s2e( acomm->hinsiPtr[i].szHinsiStr, + strlen( acomm->hinsiPtr[i].szHinsiStr ), + euc, sizeof( euc )) ; + } + /* + * $BIJ;l%j%9%H$r4IM}$9$k%P%C%U%!$O8uJd%j%9%H$r4IM}$9$k%P%C%U%!$H(B + * $BF1$8NN0h$H$7!"4{$K3NJ]$5$l$F$$$k>l9g$K$O$=$NNN0h$O3NJ]$7$J$$!#(B + * $B%P%C%U%!$r6&M-=PMh$k$N$O!"8uJd$r=PNOCf$K!"IJ;l%j%9%H$r(B + * $B=PNO$9$k;v$,$J$$$+$i$G$"$j!"F1;~$K=PNO$9$k;v$,$"$k>l9g$K$O(B + * $BNN0h$rJL$K$H$k$h$&$K=$@5$9$kI,MW$,$"$k!#(B + */ + if ( acomm->kohoSize == 0 ) { + acomm->kohoStrPtr = ( WCHAR * )malloc( size * sizeof( WCHAR )) ; + acomm->kohoLenPtr = ( BYTE * )malloc( acomm->hinsiNum * sizeof( BYTE )) ; + acomm->kohoSfxPtr = ( BYTE * )malloc( acomm->hinsiNum * sizeof( BYTE )) ; + acomm->kohoSize = acomm->hinsiNum ; + acomm->kohoStrLen = size ; + } + if ( acomm->kohoSize < acomm->hinsiNum ) { + acomm->kohoLenPtr = ( BYTE * )realloc( acomm->kohoLenPtr, + acomm->hinsiNum * sizeof( BYTE )) ; + acomm->kohoSfxPtr = ( BYTE * )realloc( acomm->kohoSfxPtr, + acomm->hinsiNum * sizeof( BYTE )) ; + acomm->kohoSize = n ; + } + if ( acomm->kohoStrLen < size ) { + acomm->kohoStrPtr = ( WCHAR * )realloc( acomm->kohoStrPtr, + size * sizeof( WCHAR )) ; + acomm->kohoStrLen = size ; + } + len = 0 ; + for( i = 0 ; i < acomm->hinsiNum ; i++ ) { + n = strlen( acomm->hinsiPtr[i].szHinsiStr ) ; + n = sjis2ucs( acomm->hinsiPtr[i].szHinsiStr, n, + &acomm->kohoStrPtr[len], size -len, 0 ) ; + acomm->kohoLenPtr[i] = n ; + len += n ; + } + acomm->kohoNum2 = acomm->hinsiNum ; + acomm->kohoPos = 0 ; + + return acomm->hinsiNum ; +} + +/* Page */ +/* + * [$B4X?tL>(B] + * atokCandidate( ) + * [$BI=Bj(B] + * $B8uJd%j%9%H$N<hF@!?@_Dj(B + * [$B8F=P7A<0(B] + * int atokCandidate( _XatokRecPtr acomm, int nbr ) + * + * [$B0z?t(B] + * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B + * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B + * int : nbr : i : $B@_Dj$9$kHV9f(B + * + * [$BJV$jCM(B] + * 0 $BL$K~(B : $BAw?.%(%i!<(B + * 0 : OK + * + * [$B;HMQ4X?t(B] + * atokClntCommunicate( ) + * [$B5!G=(B] + * $B8uJd%j%9%H$h$j!"8=:_A*Br$5$l$F$$$k8uJdHV9f$r@_Dj$9$k!#(B + */ +int atokCandidate(acomm, nbr) +_XatokRecPtr acomm; +int nbr; +{ + int status ; + /* + * if $BJ8I,MW$J$7(B + */ + if ( nbr != ATCEPRVAPI_READCMD ) { + acomm->NETrqst.AtCEIncode = nbr ; + } + else { + acomm->NETrqst.AtCEIncode = ATCEPRVAPI_READCMD ; + } + acomm->NETrqst.ceCmd = IME_PRV_CANDLIST ; + + status = AtokClntCommunicate( acomm->sock, &acomm->NETrqst, &acomm->NETrslt ) ; + + return status ; +} + +/* Page */ +/* + * [$B4X?tL>(B] + * atokWordRegister( ) + * [$BI=Bj(B] + * $BC18l$NEPO?(B + * [$B8F=P7A<0(B] + * atokWordRegister( _XatokRecPtr acomm, wchar *word, + * int wlen, wchar *yomi, int ylen, int hinshi ) + * + * [$B0z?t(B] + * $B7?(B : $BL>(B $B>N(B : I O : $B@b(B $BL@(B + * _XatokRecPtr : acomm : i/o : kinput2$BMQJQ49%P%C%U%!(B + * wchar : *word : i : $BEPO?C18l(B + * int : wlen : i : $BEPO?C18lD9$5(B + * wchar : *yomi : i : $BC18l$h$_(B + * int : ylen : i : $BC18l$h$_$J$,$5(B + * int : hinshi : i : $BIJ;lHV9f(B + * + * + * [$BJV$jCM(B] + * -1 : $BAw?.$G$-$J$$!#(B + * 0 : $B@5>o=*N;(B + * 1 : $B$3$NFI$_$G$O$3$l0J>eEPO?IT2D(B + * 2 : $B$3$l0J>eEPO?IT2D(B + * 3 : $B<-=q@_DjIT@5(B + * 4 : $BI=5-$KITE,@Z$JJ8;z$r4^$`(B + * 5 : $BEPO?$G$-$J$$!#(B + * 6 : $BFI$_$KITE,@Z$JJ8;z$r4^$`(B + * 7 : $B4{$KEPO?$5$l$F$$$k!#(B + * + * [$B;HMQ4X?t(B] + * atokClntCommunicate( ) + * wcs2euc( ) + * euc2ucs( ) + * [$B5!G=(B] + * $BC18lEPO?$r9T$J$&!#(B + * $BC18lI=5-!"$h$_$O(B $B$=$l$>$F(B UCS$B%3!<%I$GEPO?$9$k!#(B + * kinput2 $B$G4IM}$7$F$$$k;~$O(B + * $BC18lI=5-$O(B WCHAR, $BFI$_%3!<%I$O(BEUC$B$G$"$k$N$G$=$l$>$l(B + * UCS $B$X$NJQ49$r0lEY9T$J$&!#(B + * $BIJ;lHV9f$O!"#1$+$i;O$^$kJ*$G$"$k!#(B + */ + +int atokWordRegister(acomm, word, wlen, yomi, ylen, hinshi) +_XatokRecPtr acomm; +wchar *word; +int wlen; +wchar *yomi; +int ylen; +int hinshi; +{ + AtokReqPacket *req ; + unsigned char *eucp ; + WCHAR *ucs_wp ; /* $BC18l(B UCS $BJ8;zNs(B */ + WCHAR *ucs_yp ; /* $BFI$_(B UCS $BJ8;zNs(B */ + unsigned char *sjp ; + int len ; + int alen ; +int i ; + + if ( wlen > ylen ) alen = wlen ; + else alen = ylen ; + + acomm->NETrqst.ceCmd = IME_PRV_REGISTERWORDEX ; + req = &acomm->NETrqst ; +/* printf( "wlen %d, ylen %d\n", wlen, ylen ) ; */ + + eucp = ( unsigned char * )malloc( alen * sizeof( WCHAR ) + 1 ) ; + sjp = ( unsigned char * )malloc( ylen * sizeof( WCHAR ) + 1 ) ; + + /* + * $BC18lJ8;zNs$r(B WCS -> EUC -> UCS $BJQ49$9$k!#(B + */ + bzero( eucp, alen ) ; + wcs2euc( word, wlen, eucp ) ; + len = strlen( eucp ) ; + ucs_wp = ( WCHAR * )malloc(( len + 1 ) * sizeof( WCHAR )) ; + euc2ucs( eucp, strlen( eucp ), ucs_wp, len, 0x3013 ) ; + +#if 0 +printf( "\303\261\270\354 WCS CODE -> "/*=$BC18l(B WCS CODE -> =*/ ) ; +for( i = 0 ; i <= wlen ; i++ ) { + printf( "0x%x ", word[i] ) ; +} +printf( "\303\261\270\354 EUC CODE -> "/*=$BC18l(B EUC CODE -> =*/ ) ; +for( i = 0 ; i <= len ; i++ ) { + printf( "0x%x ", eucp[i] ) ; +} +printf( "\n" ) ; +printf( "\303\261\270\354 EUC [%s]\n"/*=$BC18l(B EUC [%s]\n=*/, eucp ) ; +printf( "\303\261\270\354 UCS CODE -> "/*=$BC18l(B UCS CODE -> =*/ ) ; +for( i = 0 ; i <= wlen ; i++ ) { + /* printf( "0x%x ", ucs_wp[i] ) ; */ +} +printf( "\n" ) ; +#endif + + + /* + * $BFI$_J8;zNs$r(B WCS -> EUC -> UCS $BJQ49$9$k!#(B + */ + bzero( eucp, alen ) ; + wcs2euc( yomi, ylen, eucp ) ; + len = strlen( eucp ) ; + ucs_yp = ( WCHAR * )malloc(( len + 1 ) * sizeof( WCHAR )) ; + euc2ucs( eucp, strlen( eucp ), ucs_yp, len, 0x3013 ) ; + +#if 0 +printf( "\306\311\244\337 EUC CODE -->"/*=$BFI$_(B EUC CODE -->=*/ ) ; +for( i = 0 ; i <= len ; i++ ) { + printf( "0x%x ", eucp[i] ) ; +} +printf( "\n" ) ; +printf( "\306\311\244\337 EUC [%s]\n"/*=$BFI$_(B EUC [%s]\n=*/, eucp ) ; +for( i = 0 ; i <= strlen( eucp ) ; i++ ) { + printf( "0x%0x ", eucp[i] ) ; +} +printf( "\n" ) ; +printf( "\306\311\244\337 UCS CODE -> "/*=$BFI$_(B UCS CODE -> =*/ ) ; +for( i = 0 ; i <= ylen ; i++ ) { + printf( "0x%x ", ucs_yp[i] ) ; +} +printf( "\n" ) ; +#endif + + /* + * $BAw?.%Q%i%a!<%?$N:n@.(B + */ + req->Kind[0] = T_WCHAR ; + req->Size[0] = wlen ; + req->ArgPtr[0] = ucs_wp ; + + req->Kind[1] = T_WCHAR ; + req->Size[1] = ylen ; + req->ArgPtr[1] = ucs_yp ; + + req->Ctr[0] = hinshi ; + + AtokClntCommunicate( acomm->sock, &acomm->NETrqst, &acomm->NETrslt ) ; + + free( ucs_wp ) ; + free( ucs_yp ) ; + free( eucp ) ; + +/* printf( "$BEPO?7k2L(B %d\n", acomm->NETrslt.header.CEOutinf ) ; */ + return acomm->NETrslt.header.CEOutinf ; +} +/* End of if.c */