summaryrefslogtreecommitdiffstats
path: root/unicode/unicode.c
diff options
context:
space:
mode:
authorSam Varshavchik2014-01-12 12:39:27 -0500
committerSam Varshavchik2014-01-12 12:39:27 -0500
commita307e734a37763fc25778adffc2cd5c0d0390555 (patch)
tree6d3c1a6ab37626fbce8afa591f1054789582159b /unicode/unicode.c
parent17317c25aecbf38f43bfcf8e7a63194cd345e696 (diff)
downloadcourier-libs-a307e734a37763fc25778adffc2cd5c0d0390555.tar.bz2
Refactor unicode library as a standalone package
Diffstat (limited to 'unicode/unicode.c')
-rw-r--r--unicode/unicode.c283
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))
{