/* Conversions between Unicode and legacy encodings.
- Copyright (C) 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
array is filled with offsets into the result, i.e. the character starting
at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
and other offsets are set to (size_t)(-1).
- *RESULTP and *LENGTHP should initially be a scratch buffer and its size,
- or *RESULTP can initially be NULL.
- May erase the contents of the memory at *RESULTP.
- Return value: 0 if successful, otherwise -1 and errno set.
- If successful: The resulting string is stored in *RESULTP and its length
- in *LENGTHP. *RESULTP is set to a freshly allocated memory block, or is
- unchanged if no dynamic memory allocation was necessary.
- Particular errno values: EINVAL, EILSEQ, ENOMEM. */
-extern int
+ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
+ or *RESULTBUF can be NULL.
+ May erase the contents of the memory at RESULTBUF.
+ If successful: The resulting Unicode string (non-NULL) is returned and its
+ length stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic
+ memory allocation was necessary, or a freshly allocated memory block
+ otherwise.
+ In case of error: NULL is returned and errno is set. Particular errno
+ values: EINVAL, EILSEQ, ENOMEM. */
+extern uint8_t *
u8_conv_from_encoding (const char *fromcode,
- enum iconv_ilseq_handler handler,
- const char *src, size_t srclen,
- size_t *offsets,
- uint8_t **resultp, size_t *lengthp);
-extern int
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ uint8_t *resultbuf, size_t *lengthp);
+extern uint16_t *
u16_conv_from_encoding (const char *fromcode,
- enum iconv_ilseq_handler handler,
- const char *src, size_t srclen,
- size_t *offsets,
- uint16_t **resultp, size_t *lengthp);
-extern int
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ uint16_t *resultbuf, size_t *lengthp);
+extern uint32_t *
u32_conv_from_encoding (const char *fromcode,
- enum iconv_ilseq_handler handler,
- const char *src, size_t srclen,
- size_t *offsets,
- uint32_t **resultp, size_t *lengthp);
+ enum iconv_ilseq_handler handler,
+ const char *src, size_t srclen,
+ size_t *offsets,
+ uint32_t *resultbuf, size_t *lengthp);
/* Converts an entire Unicode string, possibly including NUL units, from a
Unicode encoding to a given encoding.
array is filled with offsets into the result, i.e. the character starting
at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
and other offsets are set to (size_t)(-1).
- *RESULTP and *LENGTHP should initially be a scratch buffer and its size,
- or *RESULTP can initially be NULL.
- May erase the contents of the memory at *RESULTP.
- Return value: 0 if successful, otherwise -1 and errno set.
- If successful: The resulting string is stored in *RESULTP and its length
- in *LENGTHP. *RESULTP is set to a freshly allocated memory block, or is
- unchanged if no dynamic memory allocation was necessary.
- Particular errno values: EINVAL, EILSEQ, ENOMEM. */
-extern int
+ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
+ or RESULTBUF can be NULL.
+ May erase the contents of the memory at RESULTBUF.
+ If successful: The resulting string (non-NULL) is returned and its length
+ stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic memory
+ allocation was necessary, or a freshly allocated memory block otherwise.
+ In case of error: NULL is returned and errno is set. Particular errno
+ values: EINVAL, EILSEQ, ENOMEM. */
+extern char *
u8_conv_to_encoding (const char *tocode,
- enum iconv_ilseq_handler handler,
- const uint8_t *src, size_t srclen,
- size_t *offsets,
- char **resultp, size_t *lengthp);
-extern int
+ enum iconv_ilseq_handler handler,
+ const uint8_t *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp);
+extern char *
u16_conv_to_encoding (const char *tocode,
- enum iconv_ilseq_handler handler,
- const uint16_t *src, size_t srclen,
- size_t *offsets,
- char **resultp, size_t *lengthp);
-extern int
+ enum iconv_ilseq_handler handler,
+ const uint16_t *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp);
+extern char *
u32_conv_to_encoding (const char *tocode,
- enum iconv_ilseq_handler handler,
- const uint32_t *src, size_t srclen,
- size_t *offsets,
- char **resultp, size_t *lengthp);
+ enum iconv_ilseq_handler handler,
+ const uint32_t *src, size_t srclen,
+ size_t *offsets,
+ char *resultbuf, size_t *lengthp);
/* Converts a NUL terminated string from a given encoding.
The result is malloc allocated, or NULL (with errno set) in case of error.
Particular errno values: EILSEQ, ENOMEM. */
extern uint8_t *
u8_strconv_from_encoding (const char *string,
- const char *fromcode,
- enum iconv_ilseq_handler handler);
+ const char *fromcode,
+ enum iconv_ilseq_handler handler);
extern uint16_t *
u16_strconv_from_encoding (const char *string,
- const char *fromcode,
- enum iconv_ilseq_handler handler);
+ const char *fromcode,
+ enum iconv_ilseq_handler handler);
extern uint32_t *
u32_strconv_from_encoding (const char *string,
- const char *fromcode,
- enum iconv_ilseq_handler handler);
+ const char *fromcode,
+ enum iconv_ilseq_handler handler);
/* Converts a NUL terminated string to a given encoding.
The result is malloc allocated, or NULL (with errno set) in case of error.
Particular errno values: EILSEQ, ENOMEM. */
extern char *
u8_strconv_to_encoding (const uint8_t *string,
- const char *tocode,
- enum iconv_ilseq_handler handler);
+ const char *tocode,
+ enum iconv_ilseq_handler handler);
extern char *
u16_strconv_to_encoding (const uint16_t *string,
- const char *tocode,
- enum iconv_ilseq_handler handler);
+ const char *tocode,
+ enum iconv_ilseq_handler handler);
extern char *
u32_strconv_to_encoding (const uint32_t *string,
- const char *tocode,
- enum iconv_ilseq_handler handler);
+ const char *tocode,
+ enum iconv_ilseq_handler handler);
/* Converts a NUL terminated string from the locale encoding.
The result is malloc allocated, or NULL (with errno set) in case of error.