diff options
| author | Sam Varshavchik | 2014-01-12 12:39:27 -0500 | 
|---|---|---|
| committer | Sam Varshavchik | 2014-01-12 12:39:27 -0500 | 
| commit | a307e734a37763fc25778adffc2cd5c0d0390555 (patch) | |
| tree | 6d3c1a6ab37626fbce8afa591f1054789582159b /unicode/unicode.c | |
| parent | 17317c25aecbf38f43bfcf8e7a63194cd345e696 (diff) | |
| download | courier-libs-a307e734a37763fc25778adffc2cd5c0d0390555.tar.bz2 | |
Refactor unicode library as a standalone package
Diffstat (limited to 'unicode/unicode.c')
| -rw-r--r-- | unicode/unicode.c | 283 | 
1 files changed, 141 insertions, 142 deletions
| diff --git a/unicode/unicode.c b/unicode/unicode.c index 4ca098b..ed909fe 100644 --- a/unicode/unicode.c +++ b/unicode/unicode.c @@ -6,7 +6,6 @@  #include	"unicode_config.h"  #include	"unicode.h" -#include	"../rfc822/rfc822hdr.h"  #include	<string.h>  #include	<ctype.h>  #include	<stdlib.h> @@ -118,7 +117,7 @@ const char *unicode_default_chset()  /*****************************************************************************/ -const char libmail_u_ucs4_native[]= +const char unicode_u_ucs4_native[]=  #if WORDS_BIGENDIAN  	"UCS-4BE"  #else @@ -126,7 +125,7 @@ const char libmail_u_ucs4_native[]=  #endif  	; -const char libmail_u_ucs2_native[]= +const char unicode_u_ucs2_native[]=  #if WORDS_BIGENDIAN  	"UCS-2BE"  #else @@ -136,14 +135,14 @@ const char libmail_u_ucs2_native[]=  /* A stack of conversion modules */ -struct libmail_u_convert_hdr { +struct unicode_convert_hdr {  	int (*convert_handler)(void *ptr,  			       const char *text, size_t cnt);  	int (*deinit_handler)(void *ptr, int *errptr);  	void *ptr; -	struct libmail_u_convert_hdr *next; +	struct unicode_convert_hdr *next;  };  /* Decoding table for modified UTF7-encoding as used in imap */ @@ -178,7 +177,7 @@ static const char mbase64[]=  ** init_nottoimaputf7() returns an opaque stack for converting to ucs2.  */ -static libmail_u_convert_handle_t +static unicode_convert_handle_t  init_nottoimaputf7(const char *src_chset,  		   const char *dst_chset,  		   int (*output_func)(const char *, size_t, void *), @@ -188,9 +187,9 @@ init_nottoimaputf7(const char *src_chset,  ** The to modified UTF7 module  */ -struct libmail_u_convert_toimaputf7 { +struct unicode_convert_toimaputf7 { -	struct libmail_u_convert_hdr hdr; +	struct unicode_convert_hdr hdr;  	/* Accumulated output buffer */ @@ -233,7 +232,7 @@ struct libmail_u_convert_toimaputf7 {  		(p)->utf7encodebuf_cnt=0;				\  	} while (0) -static int toimaputf7_encode_flushfinal(struct libmail_u_convert_toimaputf7 *p) +static int toimaputf7_encode_flushfinal(struct unicode_convert_toimaputf7 *p)  {  	if (p->utf7encodebuf_cnt > 0)  		toimaputf7_encode_flush(p); @@ -258,14 +257,14 @@ static int convert_utf7_handler(void *ptr, const char *text, size_t cnt);  ** Create a conversion module stack  */ -libmail_u_convert_handle_t -libmail_u_convert_init(const char *src_chset, +unicode_convert_handle_t +unicode_convert_init(const char *src_chset,  		       const char *dst_chset,  		       int (*output_func)(const char *, size_t, void *),  		       void *convert_arg)  { -	struct libmail_u_convert_toimaputf7 *toutf7; -	libmail_u_convert_handle_t h; +	struct unicode_convert_toimaputf7 *toutf7; +	unicode_convert_handle_t h;  	const char *smapmunge;  	size_t l=strlen(unicode_x_imap_modutf7); @@ -282,14 +281,14 @@ libmail_u_convert_init(const char *src_chset,  					     output_func,  					     convert_arg); -	toutf7=malloc(sizeof(struct libmail_u_convert_toimaputf7)); +	toutf7=malloc(sizeof(struct unicode_convert_toimaputf7));  	if (!toutf7)  		return NULL;  	memset(toutf7, 0, sizeof(*toutf7)); -	h=init_nottoimaputf7(src_chset, libmail_u_ucs2_native, +	h=init_nottoimaputf7(src_chset, unicode_u_ucs2_native,  			     do_convert_toutf7, toutf7);  	if (!h)  	{ @@ -313,14 +312,14 @@ libmail_u_convert_init(const char *src_chset,  static int convert_utf7_handler(void *ptr, const char *text, size_t cnt)  { -	struct libmail_u_convert_toimaputf7 *toutf7= -		(struct libmail_u_convert_toimaputf7 *)ptr; +	struct unicode_convert_toimaputf7 *toutf7= +		(struct unicode_convert_toimaputf7 *)ptr;  	return (*toutf7->hdr.next->convert_handler)(toutf7->hdr.next->ptr,  						    text, cnt);  } -static int utf7off(struct libmail_u_convert_toimaputf7 *toutf7) +static int utf7off(struct unicode_convert_toimaputf7 *toutf7)  {  	if (!toutf7->utfmode)  		return 0; @@ -338,8 +337,8 @@ static int utf7off(struct libmail_u_convert_toimaputf7 *toutf7)  static int do_convert_toutf7(const char *text, size_t cnt, void *arg)  { -	struct libmail_u_convert_toimaputf7 *toutf7= -		(struct libmail_u_convert_toimaputf7 *)arg; +	struct unicode_convert_toimaputf7 *toutf7= +		(struct unicode_convert_toimaputf7 *)arg;  	/* We better be getting UCS-2 here! */ @@ -415,8 +414,8 @@ static int deinit_toimaputf7(void *ptr, int *errptr)  {  	int rc; -	struct libmail_u_convert_toimaputf7 *toutf7= -		(struct libmail_u_convert_toimaputf7 *)ptr; +	struct unicode_convert_toimaputf7 *toutf7= +		(struct unicode_convert_toimaputf7 *)ptr;  	/* Flush out the downstream stack */  	rc=(*toutf7->hdr.next->deinit_handler)(toutf7->hdr.next->ptr, errptr); @@ -442,15 +441,15 @@ static int deinit_toimaputf7(void *ptr, int *errptr)  ** converts UCS-2 to the requested charset.  */ -static libmail_u_convert_handle_t +static unicode_convert_handle_t  init_notfromimaputf7(const char *src_chset,  		     const char *dst_chset,  		     int (*output_func)(const char *, size_t, void *),  		     void *convert_arg); -struct libmail_u_convert_fromimaputf7 { +struct unicode_convert_fromimaputf7 { -	struct libmail_u_convert_hdr hdr; +	struct unicode_convert_hdr hdr;  	/* Accumulated UCS-2 stream */  	uint16_t convbuf[512]; @@ -498,14 +497,14 @@ static int convert_fromutf7(void *ptr,  			    const char *text, size_t cnt);  static int deinit_fromutf7(void *ptr, int *errptr); -static libmail_u_convert_handle_t +static unicode_convert_handle_t  init_nottoimaputf7(const char *src_chset,  		   const char *dst_chset,  		   int (*output_func)(const char *, size_t, void *),  		   void *convert_arg)  { -	struct libmail_u_convert_fromimaputf7 *fromutf7; -	libmail_u_convert_handle_t h; +	struct unicode_convert_fromimaputf7 *fromutf7; +	unicode_convert_handle_t h;  	size_t l=strlen(unicode_x_imap_modutf7);  	if (strncmp(src_chset, unicode_x_imap_modutf7, l) == 0 && @@ -516,8 +515,8 @@ init_nottoimaputf7(const char *src_chset,  					    output_func,  					    convert_arg); -	fromutf7=(struct libmail_u_convert_fromimaputf7 *) -		malloc(sizeof(struct libmail_u_convert_fromimaputf7)); +	fromutf7=(struct unicode_convert_fromimaputf7 *) +		malloc(sizeof(struct unicode_convert_fromimaputf7));  	if (!fromutf7)  		return NULL; @@ -526,7 +525,7 @@ init_nottoimaputf7(const char *src_chset,  	/* Create a stack for converting UCS-2 to the dest charset */ -	h=init_notfromimaputf7(libmail_u_ucs2_native, dst_chset, +	h=init_notfromimaputf7(unicode_u_ucs2_native, dst_chset,  			       output_func, convert_arg);  	if (!h) @@ -545,8 +544,8 @@ init_nottoimaputf7(const char *src_chset,  static int convert_fromutf7(void *ptr,  			    const char *text, size_t cnt)  { -	struct libmail_u_convert_fromimaputf7 *fromutf7= -		(struct libmail_u_convert_fromimaputf7 *)ptr; +	struct unicode_convert_fromimaputf7 *fromutf7= +		(struct unicode_convert_fromimaputf7 *)ptr;  	int bits;  	while (cnt) @@ -634,8 +633,8 @@ static int convert_fromutf7(void *ptr,  static int deinit_fromutf7(void *ptr, int *errptr)  { -	struct libmail_u_convert_fromimaputf7 *fromutf7= -		(struct libmail_u_convert_fromimaputf7 *)ptr; +	struct unicode_convert_fromimaputf7 *fromutf7= +		(struct unicode_convert_fromimaputf7 *)ptr;  	int rc;  	if (fromutf7->seenamp || fromutf7->inmod) @@ -666,9 +665,9 @@ static int deinit_fromutf7(void *ptr, int *errptr)  /* A real conversion module, via iconv */ -struct libmail_u_convert_iconv { +struct unicode_convert_iconv { -	struct libmail_u_convert_hdr hdr; +	struct unicode_convert_hdr hdr;  	iconv_t h;  	int errflag; /* Accumulated errors */ @@ -683,13 +682,13 @@ struct libmail_u_convert_iconv {  	char converr; /* Flag - an EILSEQ was encountered */  } ; -static int init_iconv(struct libmail_u_convert_iconv *h, +static int init_iconv(struct unicode_convert_iconv *h,  		      const char *src_chset,  		      const char *dst_chset,  		      int (*output_func)(const char *, size_t, void *),  		      void *convert_arg); -static libmail_u_convert_handle_t +static unicode_convert_handle_t  init_notfromimaputf7(const char *src_chset,  		     const char *dst_chset,  		     int (*output_func)(const char *, size_t, void *), @@ -697,8 +696,8 @@ init_notfromimaputf7(const char *src_chset,  { -	struct libmail_u_convert_iconv *h= -		malloc(sizeof(struct libmail_u_convert_iconv)); +	struct unicode_convert_iconv *h= +		malloc(sizeof(struct unicode_convert_iconv));  	if (!h)  		return NULL; @@ -715,7 +714,7 @@ init_notfromimaputf7(const char *src_chset,  /* Run the stack */ -int libmail_u_convert(libmail_u_convert_handle_t h, +int unicode_convert(unicode_convert_handle_t h,  		      const char *text, size_t cnt)  {  	return (*h->convert_handler)(h->ptr, text, cnt); @@ -723,7 +722,7 @@ int libmail_u_convert(libmail_u_convert_handle_t h,  /* Destroy the stack */ -int libmail_u_convert_deinit(libmail_u_convert_handle_t h, int *errptr) +int unicode_convert_deinit(unicode_convert_handle_t h, int *errptr)  {  	return (*h->deinit_handler)(h, errptr);  } @@ -734,7 +733,7 @@ static int convert_iconv(void *ptr,  /* Initialize a single conversion module, in the stack */ -static int init_iconv(struct libmail_u_convert_iconv *h, +static int init_iconv(struct unicode_convert_iconv *h,  		      const char *src_chset,  		      const char *dst_chset,  		      int (*output_func)(const char *, size_t, void *), @@ -798,8 +797,8 @@ static int init_iconv(struct libmail_u_convert_iconv *h,  	return 0;  } -static void convert_flush(struct libmail_u_convert_iconv *); -static void convert_flush_iconv(struct libmail_u_convert_iconv *, const char **, +static void convert_flush(struct unicode_convert_iconv *); +static void convert_flush_iconv(struct unicode_convert_iconv *, const char **,  				size_t *);  /* @@ -810,7 +809,7 @@ static void convert_flush_iconv(struct libmail_u_convert_iconv *, const char **,  static int convert_iconv(void *ptr,  			 const char *text, size_t cnt)  { -	struct libmail_u_convert_iconv *h=(struct libmail_u_convert_iconv *)ptr; +	struct unicode_convert_iconv *h=(struct unicode_convert_iconv *)ptr;  	while (cnt && h->errflag == 0)  	{ @@ -839,8 +838,8 @@ static int deinit_iconv(void *ptr, int *errptr)  {  	int rc;  	int converr; -	struct libmail_u_convert_iconv *h=(struct libmail_u_convert_iconv *)ptr; -	libmail_u_convert_handle_t next; +	struct unicode_convert_iconv *h=(struct unicode_convert_iconv *)ptr; +	unicode_convert_handle_t next;  	if (h->errflag == 0)  		convert_flush(h); @@ -864,7 +863,7 @@ static int deinit_iconv(void *ptr, int *errptr)  	if (next)  	{  		int converrnext; -		int rcnext=libmail_u_convert_deinit(next, &converrnext); +		int rcnext=unicode_convert_deinit(next, &converrnext);  		if (converrnext && errptr && *errptr == 0)  			*errptr=converr; @@ -881,7 +880,7 @@ static int deinit_iconv(void *ptr, int *errptr)  ** buffer.  */ -static void convert_flush(struct libmail_u_convert_iconv *h) +static void convert_flush(struct unicode_convert_iconv *h)  {  	const char *p;  	size_t n; @@ -916,7 +915,7 @@ static void convert_flush(struct libmail_u_convert_iconv *h)  ** Convert text via iconv.  */ -static void convert_flush_iconv(struct libmail_u_convert_iconv *h, +static void convert_flush_iconv(struct unicode_convert_iconv *h,  				const char **inbuf, size_t *inbytesleft)  {  	int save_errno; @@ -1053,23 +1052,23 @@ static void convert_flush_iconv(struct libmail_u_convert_iconv *h,  /*****************************************************************************/  /* -** A wrapper for libmail_u_convert() that collects the converted character +** A wrapper for unicode_convert() that collects the converted character  ** text into a buffer. This is done by passing an output function to -** libmail_u_convert() that saves converted text in a linked-list +** unicode_convert() that saves converted text in a linked-list  ** of buffers.  **  ** Then, in the deinitialization function, the buffers get concatenated into  ** the final character buffer.  */ -struct libmail_u_convert_cbuf { -	struct libmail_u_convert_cbuf *next; +struct unicode_convert_cbuf { +	struct unicode_convert_cbuf *next;  	char *fragment;  	size_t fragment_size;  }; -struct libmail_u_convert_tocbuf { -	struct libmail_u_convert_hdr hdr; +struct unicode_convert_tocbuf { +	struct unicode_convert_hdr hdr;  	char **cbufptr_ret;  	size_t *cbufsize_ret; @@ -1077,7 +1076,7 @@ struct libmail_u_convert_tocbuf {  	size_t tot_size;  	int nullterminate; -	struct libmail_u_convert_cbuf *first, **last; +	struct unicode_convert_cbuf *first, **last;  };  static int save_tocbuf(const char *, size_t, void *); @@ -1085,24 +1084,24 @@ static int convert_tocbuf(void *ptr,  			  const char *text, size_t cnt);  static int deinit_tocbuf(void *ptr, int *errptr); -libmail_u_convert_handle_t -libmail_u_convert_tocbuf_init(const char *src_chset, +unicode_convert_handle_t +unicode_convert_tocbuf_init(const char *src_chset,  			      const char *dst_chset,  			      char **cbufptr_ret,  			      size_t *cbufsize_ret,  			      int nullterminate  			      )  { -	struct libmail_u_convert_tocbuf *p= -		malloc(sizeof(struct libmail_u_convert_tocbuf)); -	libmail_u_convert_handle_t h; +	struct unicode_convert_tocbuf *p= +		malloc(sizeof(struct unicode_convert_tocbuf)); +	unicode_convert_handle_t h;  	if (!p)  		return NULL;  	memset(p, 0, sizeof(*p)); -	h=libmail_u_convert_init(src_chset, dst_chset, save_tocbuf, p); +	h=unicode_convert_init(src_chset, dst_chset, save_tocbuf, p);  	if (!h)  	{ @@ -1125,10 +1124,10 @@ libmail_u_convert_tocbuf_init(const char *src_chset,  static int save_tocbuf(const char *text, size_t cnt, void *ptr)  { -	struct libmail_u_convert_tocbuf *p= -		(struct libmail_u_convert_tocbuf *)ptr; -	struct libmail_u_convert_cbuf *fragment= -		malloc(sizeof(struct libmail_u_convert_cbuf)+cnt); +	struct unicode_convert_tocbuf *p= +		(struct unicode_convert_tocbuf *)ptr; +	struct unicode_convert_cbuf *fragment= +		malloc(sizeof(struct unicode_convert_cbuf)+cnt);  	size_t tot_size;  	if (!fragment) @@ -1160,10 +1159,10 @@ static int save_tocbuf(const char *text, size_t cnt, void *ptr)  static int convert_tocbuf(void *ptr, const char *text, size_t cnt)  { -	struct libmail_u_convert_tocbuf *p= -		(struct libmail_u_convert_tocbuf *)ptr; +	struct unicode_convert_tocbuf *p= +		(struct unicode_convert_tocbuf *)ptr; -	return libmail_u_convert(p->hdr.next, text, cnt); +	return unicode_convert(p->hdr.next, text, cnt);  }  /* @@ -1173,10 +1172,10 @@ static int convert_tocbuf(void *ptr, const char *text, size_t cnt)  static int deinit_tocbuf(void *ptr, int *errptr)  { -	struct libmail_u_convert_tocbuf *p= -		(struct libmail_u_convert_tocbuf *)ptr; -	int rc=libmail_u_convert_deinit(p->hdr.next, errptr); -	struct libmail_u_convert_cbuf *bufptr; +	struct unicode_convert_tocbuf *p= +		(struct unicode_convert_tocbuf *)ptr; +	int rc=unicode_convert_deinit(p->hdr.next, errptr); +	struct unicode_convert_cbuf *bufptr;  	if (rc == 0 && p->nullterminate)  	{ @@ -1210,7 +1209,7 @@ static int deinit_tocbuf(void *ptr, int *errptr)  	for (bufptr=p->first; bufptr; )  	{ -		struct libmail_u_convert_cbuf *b=bufptr; +		struct unicode_convert_cbuf *b=bufptr;  		bufptr=bufptr->next; @@ -1221,83 +1220,83 @@ static int deinit_tocbuf(void *ptr, int *errptr)  	return rc;  } -libmail_u_convert_handle_t -libmail_u_convert_tocbuf_toutf8_init(const char *src_chset, +unicode_convert_handle_t +unicode_convert_tocbuf_toutf8_init(const char *src_chset,  				     char **cbufptr_ret,  				     size_t *cbufsize_ret,  				     int nullterminate  				     )  { -	return libmail_u_convert_tocbuf_init(src_chset, "utf-8", +	return unicode_convert_tocbuf_init(src_chset, "utf-8",  					     cbufptr_ret, cbufsize_ret,  					     nullterminate);  } -libmail_u_convert_handle_t -libmail_u_convert_tocbuf_fromutf8_init(const char *dst_chset, +unicode_convert_handle_t +unicode_convert_tocbuf_fromutf8_init(const char *dst_chset,  				       char **cbufptr_ret,  				       size_t *cbufsize_ret,  				       int nullterminate  				       )  { -	return libmail_u_convert_tocbuf_init("utf-8", dst_chset, +	return unicode_convert_tocbuf_init("utf-8", dst_chset,  					     cbufptr_ret, cbufsize_ret,  					     nullterminate);  } -char *libmail_u_convert_toutf8(const char *text, +char *unicode_convert_toutf8(const char *text,  			       const char *charset,  			       int *error)  {  	char *cbufptr;  	size_t cbufsize; -	libmail_u_convert_handle_t h= -		libmail_u_convert_tocbuf_toutf8_init(charset, +	unicode_convert_handle_t h= +		unicode_convert_tocbuf_toutf8_init(charset,  						     &cbufptr,  						     &cbufsize, 1);  	if (!h)  		return NULL; -	libmail_u_convert(h, text, strlen(text)); +	unicode_convert(h, text, strlen(text)); -	if (libmail_u_convert_deinit(h, error) == 0) +	if (unicode_convert_deinit(h, error) == 0)  		return cbufptr;  	return NULL;  } -char *libmail_u_convert_fromutf8(const char *text, +char *unicode_convert_fromutf8(const char *text,  				 const char *charset,  				 int *error)  {  	char *cbufptr;  	size_t cbufsize; -	libmail_u_convert_handle_t h= -		libmail_u_convert_tocbuf_fromutf8_init(charset, +	unicode_convert_handle_t h= +		unicode_convert_tocbuf_fromutf8_init(charset,  						       &cbufptr,  						       &cbufsize, 1);  	if (!h)  		return NULL; -	libmail_u_convert(h, text, strlen(text)); +	unicode_convert(h, text, strlen(text)); -	if (libmail_u_convert_deinit(h, error) == 0) +	if (unicode_convert_deinit(h, error) == 0)  		return cbufptr;  	return NULL;  } -char *libmail_u_convert_tobuf(const char *text, +char *unicode_convert_tobuf(const char *text,  			      const char *charset,  			      const char *dstcharset,  			      int *error)  {  	char *cbufptr;  	size_t cbufsize; -	libmail_u_convert_handle_t h= -		libmail_u_convert_tocbuf_init(charset, +	unicode_convert_handle_t h= +		unicode_convert_tocbuf_init(charset,  					      dstcharset,  					      &cbufptr,  					      &cbufsize, 1); @@ -1305,9 +1304,9 @@ char *libmail_u_convert_tobuf(const char *text,  	if (!h)  		return NULL; -	libmail_u_convert(h, text, strlen(text)); +	unicode_convert(h, text, strlen(text)); -	if (libmail_u_convert_deinit(h, error) == 0) +	if (unicode_convert_deinit(h, error) == 0)  		return cbufptr;  	return NULL; @@ -1317,20 +1316,20 @@ char *libmail_u_convert_tobuf(const char *text,  /*  ** Convert text to unicode_chars. Same basic approach as -** libmail_u_convert_tocbuf_init(). The output character set gets specified +** unicode_convert_tocbuf_init(). The output character set gets specified  ** as UCS-4, the final output size is divided by 4, and the output buffer gets  ** typed as a unicode_char array.  */ -struct libmail_u_convert_buf { -	struct libmail_u_convert_buf *next; +struct unicode_convert_buf { +	struct unicode_convert_buf *next;  	unicode_char *fragment;  	size_t fragment_size;  	size_t max_fragment_size;  }; -struct libmail_u_convert_tou { -	struct libmail_u_convert_hdr hdr; +struct unicode_convert_tou { +	struct unicode_convert_hdr hdr;  	unicode_char **ucptr_ret;  	size_t *ucsize_ret; @@ -1338,7 +1337,7 @@ struct libmail_u_convert_tou {  	size_t tot_size;  	int nullterminate; -	struct libmail_u_convert_buf *first, *tail, **last; +	struct unicode_convert_buf *first, *tail, **last;  };  static int save_unicode(const char *, size_t, void *); @@ -1346,23 +1345,23 @@ static int convert_tounicode(void *ptr,  			 const char *text, size_t cnt);  static int deinit_tounicode(void *ptr, int *errptr); -libmail_u_convert_handle_t -libmail_u_convert_tou_init(const char *src_chset, +unicode_convert_handle_t +unicode_convert_tou_init(const char *src_chset,  			   unicode_char **ucptr_ret,  			   size_t *ucsize_ret,  			   int nullterminate  			   )  { -	struct libmail_u_convert_tou *p= -		malloc(sizeof(struct libmail_u_convert_tou)); -	libmail_u_convert_handle_t h; +	struct unicode_convert_tou *p= +		malloc(sizeof(struct unicode_convert_tou)); +	unicode_convert_handle_t h;  	if (!p)  		return NULL;  	memset(p, 0, sizeof(*p)); -	h=libmail_u_convert_init(src_chset, libmail_u_ucs4_native, +	h=unicode_convert_init(src_chset, unicode_u_ucs4_native,  				 save_unicode, p);  	if (!h) @@ -1382,25 +1381,25 @@ libmail_u_convert_tou_init(const char *src_chset,  	return &p->hdr;  } -libmail_u_convert_handle_t -libmail_u_convert_fromu_init(const char *dst_chset, +unicode_convert_handle_t +unicode_convert_fromu_init(const char *dst_chset,  			     char **cbufptr_ret,  			     size_t *csize_ret,  			     int nullterminate  			     )  { -	return libmail_u_convert_tocbuf_init(libmail_u_ucs4_native, +	return unicode_convert_tocbuf_init(unicode_u_ucs4_native,  					     dst_chset,  					     cbufptr_ret,  					     csize_ret,  					     nullterminate);  } -int libmail_u_convert_uc(libmail_u_convert_handle_t handle, +int unicode_convert_uc(unicode_convert_handle_t handle,  			 const unicode_char *text,  			 size_t cnt)  { -	return libmail_u_convert(handle, (const char *)text, +	return unicode_convert(handle, (const char *)text,  				 cnt * sizeof(*text));  } @@ -1408,9 +1407,9 @@ int libmail_u_convert_uc(libmail_u_convert_handle_t handle,  static int save_unicode(const char *text, size_t cnt, void *ptr)  { -	struct libmail_u_convert_tou *p= -		(struct libmail_u_convert_tou *)ptr; -	struct libmail_u_convert_buf *fragment; +	struct unicode_convert_tou *p= +		(struct unicode_convert_tou *)ptr; +	struct unicode_convert_buf *fragment;  	size_t tot_size;  	cnt /= sizeof(unicode_char); @@ -1443,7 +1442,7 @@ static int save_unicode(const char *text, size_t cnt, void *ptr)  		if (cnt_alloc < 16)  			cnt_alloc=16; -		if ((fragment=malloc(sizeof(struct libmail_u_convert_buf) +		if ((fragment=malloc(sizeof(struct unicode_convert_buf)  				     +cnt_alloc*sizeof(unicode_char)))  		    == NULL)  		{ @@ -1476,10 +1475,10 @@ static int save_unicode(const char *text, size_t cnt, void *ptr)  static int convert_tounicode(void *ptr,  			     const char *text, size_t cnt)  { -	struct libmail_u_convert_tou *p= -		(struct libmail_u_convert_tou *)ptr; +	struct unicode_convert_tou *p= +		(struct unicode_convert_tou *)ptr; -	return libmail_u_convert(p->hdr.next, text, cnt); +	return unicode_convert(p->hdr.next, text, cnt);  }  /* @@ -1489,10 +1488,10 @@ static int convert_tounicode(void *ptr,  static int deinit_tounicode(void *ptr, int *errptr)  { -	struct libmail_u_convert_tou *p= -		(struct libmail_u_convert_tou *)ptr; -	int rc=libmail_u_convert_deinit(p->hdr.next, errptr); -	struct libmail_u_convert_buf *bufptr; +	struct unicode_convert_tou *p= +		(struct unicode_convert_tou *)ptr; +	int rc=unicode_convert_deinit(p->hdr.next, errptr); +	struct unicode_convert_buf *bufptr;  	if (rc == 0 && p->nullterminate)  	{ @@ -1528,7 +1527,7 @@ static int deinit_tounicode(void *ptr, int *errptr)  	for (bufptr=p->first; bufptr; )  	{ -		struct libmail_u_convert_buf *b=bufptr; +		struct unicode_convert_buf *b=bufptr;  		bufptr=bufptr->next; @@ -1539,38 +1538,38 @@ static int deinit_tounicode(void *ptr, int *errptr)  	return rc;  } -int libmail_u_convert_tou_tobuf(const char *text, +int unicode_convert_tou_tobuf(const char *text,  				size_t text_l,  				const char *charset,  				unicode_char **uc,  				size_t *ucsize,  				int *err)  { -	libmail_u_convert_handle_t h; +	unicode_convert_handle_t h; -	if ((h=libmail_u_convert_tou_init(charset, uc, ucsize, 0)) == NULL) +	if ((h=unicode_convert_tou_init(charset, uc, ucsize, 0)) == NULL)  		return -1; -	if (libmail_u_convert(h, text, text_l) < 0) +	if (unicode_convert(h, text, text_l) < 0)  	{ -		libmail_u_convert_deinit(h, NULL); +		unicode_convert_deinit(h, NULL);  		return -1;  	} -	if (libmail_u_convert_deinit(h, err)) +	if (unicode_convert_deinit(h, err))  		return -1;  	return 0;  } -int libmail_u_convert_fromu_tobuf(const unicode_char *utext, +int unicode_convert_fromu_tobuf(const unicode_char *utext,  				  size_t utext_l,  				  const char *charset,  				  char **c,  				  size_t *csize,  				  int *err)  { -	libmail_u_convert_handle_t h; +	unicode_convert_handle_t h;  	if (utext_l == (size_t)-1)  	{ @@ -1578,22 +1577,22 @@ int libmail_u_convert_fromu_tobuf(const unicode_char *utext,  		     ;  	} -	if ((h=libmail_u_convert_fromu_init(charset, c, csize, 1)) == NULL) +	if ((h=unicode_convert_fromu_init(charset, c, csize, 1)) == NULL)  		return -1; -	if (libmail_u_convert_uc(h, utext, utext_l) < 0) +	if (unicode_convert_uc(h, utext, utext_l) < 0)  	{ -		libmail_u_convert_deinit(h, NULL); +		unicode_convert_deinit(h, NULL);  		return -1;  	} -	if (libmail_u_convert_deinit(h, err)) +	if (unicode_convert_deinit(h, err))  		return -1;  	return 0;  } -char *libmail_u_convert_tocase(const char *str, +char *unicode_convert_tocase(const char *str,  			       const char *charset,  			       unicode_char (*first_char_func)(unicode_char),  			       unicode_char (*char_func)(unicode_char)) @@ -1605,7 +1604,7 @@ char *libmail_u_convert_tocase(const char *str,  	char *c;  	size_t csize; -	if (libmail_u_convert_tou_tobuf(str, strlen(str), +	if (unicode_convert_tou_tobuf(str, strlen(str),  					charset, &uc, &ucsize, &err))  		return NULL; @@ -1623,7 +1622,7 @@ char *libmail_u_convert_tocase(const char *str,  			first_char_func=char_func;  	} -	if (libmail_u_convert_fromu_tobuf(uc, ucsize, +	if (unicode_convert_fromu_tobuf(uc, ucsize,  					  charset,  					  &c, &csize, &err))  	{ | 
