int m17n_ccx_filter(M17nCCX *m17n,FILE *in,FILE *out){ int rcode = -1; int ecode; m17n->m_mtext = 0; m17n->m_dec = mconv_stream_converter(m17n->m_icode,in); if( m17n->m_dec == 0 ){ m17n_ccx_freeconv(m17n); return -1; } m17n->m_enc = mconv_stream_converter(m17n->m_ocode,out); if( m17n->m_enc == 0 ){ m17n_ccx_freeconv(m17n); return -2; } LAP("converter-set"); m17n->m_mtext = mtext(); m17n->m_dec->lenient = 1; mconv_decode(m17n->m_dec,m17n->m_mtext); LAP("decoded"); m17n->m_enc->lenient = 1; m17n->m_enc->last_block = 1; ecode = mconv_encode(m17n->m_enc,m17n->m_mtext); rcode = 0; LAP("encoded"); m17n_ccx_freeconv(m17n); LAP("filter-done"); return rcode; }
static char * convert_mtext2str(MText *mtext) { mconv_rebind_buffer(converter, (unsigned char *)buffer_for_converter, sizeof(buffer_for_converter)); mconv_encode(converter, mtext); buffer_for_converter[converter->nbytes] = 0; return uim_strdup(buffer_for_converter); }
static ssize_t mtext_to_utf8 (TableContext *context, MText *mt, unsigned char *buf, size_t size) { ssize_t nbytes; mconv_reset_converter (context->converter); mconv_rebind_buffer (context->converter, (const unsigned char *)buf, size); nbytes = mconv_encode (context->converter, mt); buf[nbytes] = '\0'; return nbytes; }
static char * mtext_to_utf8 (MText *mt) { char *buf; size_t cap; mconv_reset_converter (utf8_converter); cap = (mtext_len (mt) + 1) * 6; buf = (char *) malloc (cap); mconv_rebind_buffer (utf8_converter, buf, cap); mconv_encode (utf8_converter, mt); buf[utf8_converter->nbytes] = '\0'; return buf; }
static gchar * nimf_m17n_mtext_to_utf8 (NimfM17n *m17n, MText *mt) { g_debug (G_STRLOC ": %s", G_STRFUNC); g_return_val_if_fail (mt != NULL, NULL); gint buf_len = (mtext_len (mt) + 1) * 6; gchar *buf = g_malloc0 (buf_len); mconv_reset_converter (m17n->converter); mconv_rebind_buffer (m17n->converter, (unsigned char *) buf, buf_len); mconv_encode (m17n->converter, mt); buf[m17n->converter->nbytes] = '\0'; return buf; }
int m17n_ccx_string(M17nCCX *m17n,const char *istr,int len,char *ostr,int siz){ const unsigned char *uistr = (const unsigned char*)istr; const unsigned char *uostr = (const unsigned char*)ostr; int rcode = -1; int ecode; int oleng = 1; m17n->m_mtext = 0; m17n->m_dec = mconv_buffer_converter(m17n->m_icode,uistr,len); if( m17n->m_dec == 0 ){ m17n_ccx_freeconv(m17n); return -1; } m17n->m_enc = mconv_buffer_converter(m17n->m_ocode,uostr,siz-1); if( m17n->m_enc == 0 ){ m17n_ccx_freeconv(m17n); return -2; } LAP("converter-set"); m17n->m_mtext = mtext(); m17n->m_dec->lenient = 1; mconv_decode(m17n->m_dec,m17n->m_mtext); LAP("decoded"); m17n->m_enc->lenient = 1; m17n->m_enc->last_block = 1; ecode = mconv_encode(m17n->m_enc,m17n->m_mtext); oleng = m17n->m_enc->nbytes; ostr[oleng] = 0; rcode = oleng; LAP("encoded"); m17n_ccx_freeconv(m17n); LAP("filter-done"); return rcode; }