if(_xudc_vgi_to_gi(lcd,locale,vglyph,&glyph,charset,charsetname)==False){
if(_xudc_vgi_to_gi(lcd,locale,vglyph,&glyph,charset,charsetname, sizeof(charsetname))==False){
_xudc_code_to_glyph(locale,codepoint,gi,num_gi)char 		*locale;unsigned long 	codepoint;_XUDCGIInf 	**gi;int 		*num_gi;{    XLCd        lcd;    unsigned char *from; int    from_left;    unsigned char *to  ; int    to_left = 10;    unsigned char *dst;    unsigned char byte;    unsigned int from32[25];    unsigned int to32[25];    int      i,j;    char tmp[256],charsetname[256],src[10];    XlcConv     conv;    XlcCharSet  charset;    XPointer args[2];    unsigned long glyph,vglyph;    from = (unsigned char *)from32;    to   = (unsigned char *)to32;    dst  = (unsigned char *)to32;    memset(dst,0,25);    lcd = (XLCd)_XlcGenericLoader(locale);    for(i=0,j=0;i<4;i++){	byte = getbyte(codepoint,i);	if(byte){	    src[j] = byte;            j ++;	}    }    src[j] = 0;    sprintf((char *)from,"%s\0",src);    /* multi byte -> vgi */    conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet);    from_left = strlen((char *)from);    args[0] = (XPointer) &charset;    _XlcConvert(conv,(XPointer *)&from,&from_left,                     (XPointer *)&to,  &to_left,args,1);    /* vgi -> gi */    vglyph = 0;    for(i=0;dst[i];i++){        vglyph = ((vglyph << 8) | dst[i]) ;    }    if(_xudc_vgi_to_gi(lcd,locale,vglyph,&glyph,charset,charsetname)==False){        _XlcCloseConverter(conv);	_XlcDestroyLC(lcd);        *num_gi = 0;	return(0);    }    _XlcCloseConverter(conv);    _XlcDestroyLC(lcd);    *gi = (_XUDCGIInf *)Xmalloc(sizeof(_XUDCGIInf));    (*gi)->charset_str = (char *)Xmalloc(strlen(charsetname)+1);    strcpy((*gi)->charset_str,charsetname);    (*gi)->glyph_index = glyph;    if(*gi == NULL){	_xudc_utyerrno = 0x03 ;        return(_XUDC_ERROR);    }    *num_gi = 1;    return(0);}