_xudc_gi_to_vgi(lcd,locale,charset_str,codeset, glyph_index,&glyph_index,charsetname);
if (!_xudc_gi_to_vgi(lcd,locale,charset_str,codeset, glyph_index,&glyph_index,charsetname,sizeof(charsetname))) return(_XUDC_ERROR);
_xudc_glyph_to_code(locale,charset_str,codeset,glyph_index,codepoint)char 	*locale;char 	*charset_str;int 	codeset;unsigned long 	glyph_index;unsigned long 	*codepoint;{    XLCd 	lcd;    unsigned char *from; int	from_left;    unsigned char *to  ; int 	to_left = 10;    unsigned char *dst;    unsigned char byte;    unsigned long from32[25];    unsigned long to32[25];    int	     i,j;    char tmp[256],charsetname[256],src[10];    XlcConv 	conv;    XlcCharSet 	charset;    XPointer args[2];    from = (unsigned char *)from32;    to   = (unsigned char *)to32;    dst  = (unsigned char *)to32;    memset(dst,0,25);	    lcd = (XLCd)_XlcGenericLoader(locale);    _xudc_gi_to_vgi(lcd,locale,charset_str,codeset,	glyph_index,&glyph_index,charsetname);    for(i=0,j=0;i<4;i++){	byte = getbyte(glyph_index,i);	if(byte){	    src[j] = byte;            j ++;	}    }    src[j] = 0;    /* get charset *//*    sprintf(tmp,"%s%s",charset_str,":GL");    charset_name = strdup(tmp);*/    charset = _XlcGetCharSet(charsetname);    if(charset == NULL){	_xudc_utyerrno = 0x16 ;	return(_XUDC_ERROR);    }    /* make ct */    if( non_standard(lcd,charset)) {        make_none_standard(from,charset,src);    } else if(charset->ct_sequence){        sprintf((char *)from,"%s%s",charset->ct_sequence,src);    } else {        sprintf((char *)from,"%s\0",src);    }    /* compound text -> multi byte */    conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte);    from_left = strlen((char *)from);    _XlcConvert(conv,(XPointer *)&from,&from_left,                     (XPointer *)&to,  &to_left,args,0);    _XlcCloseConverter(conv);    _XlcDestroyLC(lcd);    *codepoint = 0;    for(i=0;dst[i];i++){        *codepoint = ((*codepoint << 8) | dst[i]) ;    }    return(0);}