[prev in list] [next in list] [prev in thread] [next in thread]
List: xfree-i18n
Subject: [I18n] XIM_STR_CONVERSION_REPLY message is strange
From: Choe Hwanjin <krisna () kldp ! org>
Date: 2003-12-26 16:10:31
[Download RAW message or body]
Hello,
I have a question about XIM_STR_CONVERSION_REPLY message.
On XIM spec, XIM_STR_CONVERSION_REPLY is defined as:
2 CARD16 input-method-ID
2 CARD16 input-context-ID
4 CARD32 XIMStringConversionFeedback
XIMSTRCONVTEXT XIMStringConversionText
but xfree86 source does not conform to this.
xc/lib/X11/imCallbk.c:394 is :
_XimSetHeader((XPointer)buf, XIM_STR_CONVERSION_REPLY, 0, &buf_len);
buf_len -= XIM_HEADER_SIZE; /* added by _XimSetHeader (HACK) */
p = XIM_HEADER_SIZE;
*(CARD16*)&buf[p] = (CARD16)im->private.proto.imid; p += sz_CARD16;
*(CARD16*)&buf[p] = (CARD16)ic->private.proto.icid; p += sz_CARD16;
*(CARD16*)&buf[p] = (CARD16)cbrec.text->length; p += sz_CARD16;
~~~~~~~~~~~~~~~~~
+----> this is not XIMStringConversionFeedback
memcpy(&buf[p],&cbrec.text->string.mbs,length_in_bytes);
p += length_in_bytes;
*(CARD16*)&buf[p] = (CARD16)(sz_CARD32*cbrec.text->length);
p += XIM_PAD(2);
for (i = 0; i < (int)cbrec.text->length; i++) {
*(CARD32*)&buf[p] = (CARD32)cbrec.text->feedback[i];
p += sz_CARD32;
}
On the other hand, IMdkit comform to XIM spec, it define structure for
XIM_STR_CONVERSION_REPLY as:
xim_externaldef XimFrameRec str_conversion_reply_fr[] =
{
_FRAME(BIT16), /* input-method-ID */
_FRAME(BIT16), /* input-context-ID */
_FRAME(BIT32), /* XIMStringConversionFeedback */
_FRAME(BIT16), /* length of the retrieved string */
_FRAME(BARRAY), /* retrieved string */
_PAD4(2),
_BYTE_COUNTER(BIT16, 2), /* number of feedback array */
_PAD4(1),
_FRAME(ITER), /* feedback array */
_FRAME(BIT32),
_FRAME(EOL),
};
Which is right?
_______________________________________________
I18n mailing list
I18n@XFree86.Org
http://XFree86.Org/mailman/listinfo/i18n
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic