/* Conversions between Unicode and legacy encodings.
- Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2005, 2007, 2009 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
+ 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
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef _UNICONV_H
#define _UNICONV_H
#include "unitypes.h"
/* Get enum iconv_ilseq_handler. */
-#include "striconveh.h"
+#include "iconveh.h"
-/* Get iconv_register_autodetect(), mem_iconveha() declaration. */
+/* Get uniconv_register_autodetect() declaration. */
#include "striconveha.h"
/* Get locale_charset() declaration. */
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 *LENGTH 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
+ 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
+ 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);
+ 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 *LENGTH 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
+ 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
+ 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);
+ 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.