mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-18 12:16:13 +08:00
Update.
2000-06-15 Ulrich Drepper <drepper@redhat.com> * iconv/gconv.h (__gconv_fct): Change type of fifth parameter to unsigned char **. (__gconv_init_fct): Remove two parameters. * iconv/gconv_int.h (__gconv_transliterate): Renamed from gconv_transliterate. Remove two parameters. Change prototypes of builtin functions according to __gconv_fct change. * iconv/skeleton.c: Change type of fifth parameter. make sure it is != NULL only during error handling. Stop in this case after the conversion. * iconv/gconv_trans.c: Replace with real implementation for __gconv_transliterate. * iconv/gconv_open.c: Adjust for renaming of __gconv_transliterate. * iconv/gconv.c: Change calls to downstream functions once again. Use NULL for the fifth parameter instead of pointer to output buffer. * libio/iofwide.c: Likewise. * wcsmbs/btowc.c: Likewise. * wcsmbs/mbrtowc.c: Likewise. * wcsmbs/mbsnrtowcs.c: Likewise. * wcsmbs/mbsrtowcs.c: Likewise. * wcsmbs/wcrtomb.c: Likewise. * wcsmbs/wcsnrtombs.c: Likewise. * wcsmbs/wcsrtombs.c: Likewise. * wcsmbs/wctob.c: Likewise. * iconv/gconv_simple.c: Remove two parameters from error handling function call. * iconvdata/8bit-gap.c: Likewise. * iconvdata/8bit-generic.c: Likewise. * iconvdata/ansi_x3.110.c: Likewise. * iconvdata/big5.c: Likewise. * iconvdata/big5hkscs.c: Likewise. * iconvdata/euc-cn.c: Likewise. * iconvdata/euc-jp.c: Likewise. * iconvdata/euc-kr.c: Likewise. * iconvdata/euc-tw.c: Likewise. * iconvdata/gbgbk.c: Likewise. * iconvdata/gbk.c: Likewise. * iconvdata/iso-2022-cn.c: Likewise. * iconvdata/iso-2022-jp.c: Likewise. * iconvdata/iso-2022-kr.c: Likewise. * iconvdata/iso646.c: Likewise. * iconvdata/iso8859-1.c: Likewise. * iconvdata/iso_6937-2.c: Likewise. * iconvdata/iso_6937.c: Likewise. * iconvdata/johab.c: Likewise. * iconvdata/sjis.c: Likewise. * iconvdata/t.61.c: Likewise. * iconvdata/uhc.c: Likewise. * iconvdata/unicode.c: Likewise. * iconvdata/utf-16.c: Likewise.
This commit is contained in:
parent
f5361098c5
commit
f1d5c60dde
52
ChangeLog
52
ChangeLog
@ -1,3 +1,55 @@
|
|||||||
|
2000-06-15 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* iconv/gconv.h (__gconv_fct): Change type of fifth parameter to
|
||||||
|
unsigned char **.
|
||||||
|
(__gconv_init_fct): Remove two parameters.
|
||||||
|
* iconv/gconv_int.h (__gconv_transliterate): Renamed from
|
||||||
|
gconv_transliterate. Remove two parameters.
|
||||||
|
Change prototypes of builtin functions according to __gconv_fct change.
|
||||||
|
* iconv/skeleton.c: Change type of fifth parameter. make sure it is
|
||||||
|
!= NULL only during error handling. Stop in this case after the
|
||||||
|
conversion.
|
||||||
|
* iconv/gconv_trans.c: Replace with real implementation for
|
||||||
|
__gconv_transliterate.
|
||||||
|
* iconv/gconv_open.c: Adjust for renaming of __gconv_transliterate.
|
||||||
|
* iconv/gconv.c: Change calls to downstream functions once again.
|
||||||
|
Use NULL for the fifth parameter instead of pointer to output buffer.
|
||||||
|
* libio/iofwide.c: Likewise.
|
||||||
|
* wcsmbs/btowc.c: Likewise.
|
||||||
|
* wcsmbs/mbrtowc.c: Likewise.
|
||||||
|
* wcsmbs/mbsnrtowcs.c: Likewise.
|
||||||
|
* wcsmbs/mbsrtowcs.c: Likewise.
|
||||||
|
* wcsmbs/wcrtomb.c: Likewise.
|
||||||
|
* wcsmbs/wcsnrtombs.c: Likewise.
|
||||||
|
* wcsmbs/wcsrtombs.c: Likewise.
|
||||||
|
* wcsmbs/wctob.c: Likewise.
|
||||||
|
* iconv/gconv_simple.c: Remove two parameters from error handling
|
||||||
|
function call.
|
||||||
|
* iconvdata/8bit-gap.c: Likewise.
|
||||||
|
* iconvdata/8bit-generic.c: Likewise.
|
||||||
|
* iconvdata/ansi_x3.110.c: Likewise.
|
||||||
|
* iconvdata/big5.c: Likewise.
|
||||||
|
* iconvdata/big5hkscs.c: Likewise.
|
||||||
|
* iconvdata/euc-cn.c: Likewise.
|
||||||
|
* iconvdata/euc-jp.c: Likewise.
|
||||||
|
* iconvdata/euc-kr.c: Likewise.
|
||||||
|
* iconvdata/euc-tw.c: Likewise.
|
||||||
|
* iconvdata/gbgbk.c: Likewise.
|
||||||
|
* iconvdata/gbk.c: Likewise.
|
||||||
|
* iconvdata/iso-2022-cn.c: Likewise.
|
||||||
|
* iconvdata/iso-2022-jp.c: Likewise.
|
||||||
|
* iconvdata/iso-2022-kr.c: Likewise.
|
||||||
|
* iconvdata/iso646.c: Likewise.
|
||||||
|
* iconvdata/iso8859-1.c: Likewise.
|
||||||
|
* iconvdata/iso_6937-2.c: Likewise.
|
||||||
|
* iconvdata/iso_6937.c: Likewise.
|
||||||
|
* iconvdata/johab.c: Likewise.
|
||||||
|
* iconvdata/sjis.c: Likewise.
|
||||||
|
* iconvdata/t.61.c: Likewise.
|
||||||
|
* iconvdata/uhc.c: Likewise.
|
||||||
|
* iconvdata/unicode.c: Likewise.
|
||||||
|
* iconvdata/utf-16.c: Likewise.
|
||||||
|
|
||||||
2000-06-15 Greg McGary <greg@mcgary.org>
|
2000-06-15 Greg McGary <greg@mcgary.org>
|
||||||
|
|
||||||
* sysdeps/unix/make-syscalls.sh: Strip leading whitespace from lhs
|
* sysdeps/unix/make-syscalls.sh: Strip leading whitespace from lhs
|
||||||
|
@ -46,8 +46,8 @@ __gconv (__gconv_t cd, const unsigned char **inbuf,
|
|||||||
if (inbuf == NULL || *inbuf == NULL)
|
if (inbuf == NULL || *inbuf == NULL)
|
||||||
/* We just flush. */
|
/* We just flush. */
|
||||||
result = DL_CALL_FCT (cd->__steps->__fct,
|
result = DL_CALL_FCT (cd->__steps->__fct,
|
||||||
(cd->__steps, cd->__data, NULL, NULL,
|
(cd->__steps, cd->__data, NULL, NULL, NULL,
|
||||||
cd->__data[0].__outbuf, irreversible, 1, 0));
|
irreversible, 1, 0));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const unsigned char *last_start;
|
const unsigned char *last_start;
|
||||||
@ -59,7 +59,7 @@ __gconv (__gconv_t cd, const unsigned char **inbuf,
|
|||||||
last_start = *inbuf;
|
last_start = *inbuf;
|
||||||
result = DL_CALL_FCT (cd->__steps->__fct,
|
result = DL_CALL_FCT (cd->__steps->__fct,
|
||||||
(cd->__steps, cd->__data, inbuf, inbufend,
|
(cd->__steps, cd->__data, inbuf, inbufend,
|
||||||
cd->__data[0].__outbuf, irreversible, 0, 0));
|
NULL, irreversible, 0, 0));
|
||||||
}
|
}
|
||||||
while (result == __GCONV_EMPTY_INPUT && last_start != *inbuf
|
while (result == __GCONV_EMPTY_INPUT && last_start != *inbuf
|
||||||
&& *inbuf + cd->__steps->__min_needed_from <= inbufend);
|
&& *inbuf + cd->__steps->__min_needed_from <= inbufend);
|
||||||
|
@ -68,7 +68,7 @@ struct __gconv_trans_data;
|
|||||||
/* Type of a conversion function. */
|
/* Type of a conversion function. */
|
||||||
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
|
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
|
||||||
__const unsigned char **, __const unsigned char *,
|
__const unsigned char **, __const unsigned char *,
|
||||||
unsigned char *, size_t *, int, int);
|
unsigned char **, size_t *, int, int);
|
||||||
|
|
||||||
/* Constructor and destructor for local data for conversion step. */
|
/* Constructor and destructor for local data for conversion step. */
|
||||||
typedef int (*__gconv_init_fct) (struct __gconv_step *);
|
typedef int (*__gconv_init_fct) (struct __gconv_step *);
|
||||||
@ -80,8 +80,8 @@ typedef int (*__gconv_trans_fct) (struct __gconv_step *step,
|
|||||||
struct __gconv_step_data *step_data,
|
struct __gconv_step_data *step_data,
|
||||||
__const unsigned char *,
|
__const unsigned char *,
|
||||||
__const unsigned char **,
|
__const unsigned char **,
|
||||||
__const unsigned char *, unsigned char *,
|
__const unsigned char *, unsigned char **,
|
||||||
unsigned char **, unsigned char *, size_t *);
|
size_t *);
|
||||||
|
|
||||||
/* Function to call to provide transliteration module with context. */
|
/* Function to call to provide transliteration module with context. */
|
||||||
typedef int (*__gconv_trans_context_fct) (struct __gconv_trans_data *data,
|
typedef int (*__gconv_trans_context_fct) (struct __gconv_trans_data *data,
|
||||||
|
@ -181,15 +181,13 @@ extern void __gconv_get_builtin_trans (const char *name,
|
|||||||
internal_function;
|
internal_function;
|
||||||
|
|
||||||
/* Transliteration using the locale's data. */
|
/* Transliteration using the locale's data. */
|
||||||
extern int gconv_transliterate (struct __gconv_step *step,
|
extern int __gconv_transliterate (struct __gconv_step *step,
|
||||||
struct __gconv_step_data *step_data,
|
struct __gconv_step_data *step_data,
|
||||||
__const unsigned char *inbufstart,
|
__const unsigned char *inbufstart,
|
||||||
__const unsigned char **inbufp,
|
__const unsigned char **inbufp,
|
||||||
__const unsigned char *inbufend,
|
__const unsigned char *inbufend,
|
||||||
unsigned char *outbufstart,
|
unsigned char **outbufstart,
|
||||||
unsigned char **outbufp,
|
size_t *irreversible);
|
||||||
unsigned char *outbufend,
|
|
||||||
size_t *irreversible);
|
|
||||||
|
|
||||||
|
|
||||||
/* Builtin transformations. */
|
/* Builtin transformations. */
|
||||||
@ -198,8 +196,9 @@ extern int gconv_transliterate (struct __gconv_step *step,
|
|||||||
extern int Name (struct __gconv_step *step, \
|
extern int Name (struct __gconv_step *step, \
|
||||||
struct __gconv_step_data *data, \
|
struct __gconv_step_data *data, \
|
||||||
const unsigned char **inbuf, \
|
const unsigned char **inbuf, \
|
||||||
const unsigned char *inbufend, unsigned char *outbufstart, \
|
const unsigned char *inbufend, \
|
||||||
size_t *irreversible, int do_flush, int consume_incomplete)
|
unsigned char **outbufstart, size_t *irreversible, \
|
||||||
|
int do_flush, int consume_incomplete)
|
||||||
|
|
||||||
__BUILTIN_TRANS (__gconv_transform_ascii_internal);
|
__BUILTIN_TRANS (__gconv_transform_ascii_internal);
|
||||||
__BUILTIN_TRANS (__gconv_transform_internal_ascii);
|
__BUILTIN_TRANS (__gconv_transform_internal_ascii);
|
||||||
|
@ -86,7 +86,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
|
|||||||
|
|
||||||
csnames = internal_trans_names;
|
csnames = internal_trans_names;
|
||||||
ncsnames = 1;
|
ncsnames = 1;
|
||||||
trans_fct = gconv_transliterate;
|
trans_fct = __gconv_transliterate;
|
||||||
/* No context, init, or end function. */
|
/* No context, init, or end function. */
|
||||||
}
|
}
|
||||||
else if (strcasecmp (errhand, "WORK AROUND A GCC BUG") == 0)
|
else if (strcasecmp (errhand, "WORK AROUND A GCC BUG") == 0)
|
||||||
|
@ -801,7 +801,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outptr, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -1190,7 +1190,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outptr, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -1257,7 +1257,7 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outptr, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include <dlfcn.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "gconv_int.h"
|
#include "gconv_int.h"
|
||||||
@ -25,26 +26,121 @@
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
gconv_transliterate (struct __gconv_step *step,
|
__gconv_transliterate (struct __gconv_step *step,
|
||||||
struct __gconv_step_data *step_data,
|
struct __gconv_step_data *step_data,
|
||||||
const unsigned char *inbufstart,
|
const unsigned char *inbufstart,
|
||||||
const unsigned char **inbufp,
|
const unsigned char **inbufp,
|
||||||
const unsigned char *inbufend,
|
const unsigned char *inbufend,
|
||||||
unsigned char *outbufstart,
|
unsigned char **outbufstart, size_t *irreversible)
|
||||||
unsigned char **outbufp, unsigned char *outbufend,
|
|
||||||
size_t *irreversible)
|
|
||||||
{
|
{
|
||||||
/* Find out about the locale's transliteration. */
|
/* Find out about the locale's transliteration. */
|
||||||
uint_fast32_t size = _NL_CURRENT_WORD (LC_CTYPE,
|
uint_fast32_t size;
|
||||||
_NL_CTYPE_TRANSLIT_HASH_SIZE);
|
uint_fast32_t layers;
|
||||||
uint_fast32_t layers = _NL_CURRENT_WORD (LC_CTYPE,
|
uint32_t *from_idx;
|
||||||
_NL_CTYPE_TRANSLIT_HASH_LAYERS);
|
uint32_t *from_tbl;
|
||||||
|
uint32_t *to_idx;
|
||||||
|
uint32_t *to_tbl;
|
||||||
|
uint32_t *winbuf;
|
||||||
|
uint32_t *winbufend;
|
||||||
|
uint_fast32_t low;
|
||||||
|
uint_fast32_t high;
|
||||||
|
|
||||||
/* If there is no transliteration information in the locale don't do
|
/* If there is no transliteration information in the locale don't do
|
||||||
anything and return the error. */
|
anything and return the error. */
|
||||||
|
size = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_HASH_SIZE);
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
return __GCONV_ILLEGAL_INPUT;
|
return __GCONV_ILLEGAL_INPUT;
|
||||||
|
|
||||||
/* XXX For now we don't do anything. */
|
/* Get the rest of the values. */
|
||||||
|
layers = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_HASH_LAYERS);
|
||||||
|
from_idx = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_IDX);
|
||||||
|
from_tbl = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_TBL);
|
||||||
|
to_idx = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_IDX);
|
||||||
|
to_tbl = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_TBL);
|
||||||
|
|
||||||
|
/* The input buffer. There are actually 4-byte values. */
|
||||||
|
winbuf = (uint32_t *) *inbufp;
|
||||||
|
winbufend = (uint32_t *) inbufend;
|
||||||
|
|
||||||
|
/* Test whether there is enough input. */
|
||||||
|
if (winbuf + 1 > winbufend)
|
||||||
|
return (winbuf == winbufend
|
||||||
|
? __GCONV_EMPTY_INPUT : __GCONV_INCOMPLETE_INPUT);
|
||||||
|
|
||||||
|
/* The array starting at FROM_IDX contains indeces to the string table
|
||||||
|
in FROM_TBL. The indeces are sorted wrt to the strings. I.e., we
|
||||||
|
are doing binary search. */
|
||||||
|
low = 0;
|
||||||
|
high = size;
|
||||||
|
while (low < high)
|
||||||
|
{
|
||||||
|
uint_fast32_t med = (low + high) / 2;
|
||||||
|
uint32_t idx;
|
||||||
|
int cnt;
|
||||||
|
|
||||||
|
/* Compare the string at this index with the string at the current
|
||||||
|
position in the input buffer. */
|
||||||
|
idx = from_idx[med];
|
||||||
|
cnt = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (from_tbl[idx + cnt] != winbuf[cnt])
|
||||||
|
/* Does not match. */
|
||||||
|
break;
|
||||||
|
++cnt;
|
||||||
|
}
|
||||||
|
while (from_tbl[idx + cnt] != L'\0' && winbuf + cnt < winbufend);
|
||||||
|
|
||||||
|
if (cnt > 0 && from_tbl[idx + cnt] == L'\0')
|
||||||
|
{
|
||||||
|
/* Found a matching input sequence. Now try to convert the
|
||||||
|
possible replacements. */
|
||||||
|
uint32_t idx2 = to_idx[med];
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
/* Determine length of replacement. */
|
||||||
|
uint_fast32_t len = 0;
|
||||||
|
int res;
|
||||||
|
const unsigned char *toinptr;
|
||||||
|
|
||||||
|
while (to_tbl[idx2 + len] != L'\0')
|
||||||
|
++len;
|
||||||
|
|
||||||
|
/* Try this input text. */
|
||||||
|
toinptr = (const unsigned char *) &to_tbl[idx2];
|
||||||
|
res = DL_CALL_FCT (step->__fct,
|
||||||
|
(step, step_data, &toinptr,
|
||||||
|
(const unsigned char *) &to_tbl[idx2 + len],
|
||||||
|
(unsigned char **) outbufstart,
|
||||||
|
irreversible, 0, 0));
|
||||||
|
if (res != __GCONV_ILLEGAL_INPUT)
|
||||||
|
{
|
||||||
|
/* If the conversion succeeds we have to increment the
|
||||||
|
input buffer. */
|
||||||
|
if (res == __GCONV_EMPTY_INPUT)
|
||||||
|
{
|
||||||
|
*inbufp += cnt * sizeof (uint32_t);
|
||||||
|
++*irreversible;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Next replacement. */
|
||||||
|
idx2 += len + 1;
|
||||||
|
}
|
||||||
|
while (to_tbl[idx2] != L'\0');
|
||||||
|
|
||||||
|
/* Nothing found, continue searching. */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (winbuf + cnt >= winbufend || from_tbl[idx + cnt] < winbuf[cnt])
|
||||||
|
low = idx;
|
||||||
|
else
|
||||||
|
high = idx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Haven't found a match. */
|
||||||
return __GCONV_ILLEGAL_INPUT;
|
return __GCONV_ILLEGAL_INPUT;
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ gconv_init (struct __gconv_step *step)
|
|||||||
int
|
int
|
||||||
FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
||||||
const unsigned char **inptrp, const unsigned char *inend,
|
const unsigned char **inptrp, const unsigned char *inend,
|
||||||
unsigned char *outbufstart, size_t *irreversible, int do_flush,
|
unsigned char **outbufstart, size_t *irreversible, int do_flush,
|
||||||
int consume_incomplete)
|
int consume_incomplete)
|
||||||
{
|
{
|
||||||
struct __gconv_step *next_step = step + 1;
|
struct __gconv_step *next_step = step + 1;
|
||||||
@ -288,6 +288,9 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
|||||||
{
|
{
|
||||||
status = __GCONV_OK;
|
status = __GCONV_OK;
|
||||||
|
|
||||||
|
/* This should never happen during error handling. */
|
||||||
|
assert (outbufstart == NULL);
|
||||||
|
|
||||||
#ifdef EMIT_SHIFT_TO_INIT
|
#ifdef EMIT_SHIFT_TO_INIT
|
||||||
/* Emit the escape sequence to reset the state. */
|
/* Emit the escape sequence to reset the state. */
|
||||||
EMIT_SHIFT_TO_INIT;
|
EMIT_SHIFT_TO_INIT;
|
||||||
@ -296,14 +299,15 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
|||||||
successfully emitted the escape sequence. */
|
successfully emitted the escape sequence. */
|
||||||
if (status == __GCONV_OK && ! (data->__flags & __GCONV_IS_LAST))
|
if (status == __GCONV_OK && ! (data->__flags & __GCONV_IS_LAST))
|
||||||
status = DL_CALL_FCT (fct, (next_step, next_data, NULL, NULL,
|
status = DL_CALL_FCT (fct, (next_step, next_data, NULL, NULL,
|
||||||
next_data->__outbuf, irreversible, 1,
|
NULL, irreversible, 1,
|
||||||
consume_incomplete));
|
consume_incomplete));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* We preserve the initial values of the pointer variables. */
|
/* We preserve the initial values of the pointer variables. */
|
||||||
const unsigned char *inptr = *inptrp;
|
const unsigned char *inptr = *inptrp;
|
||||||
unsigned char *outbuf = outbufstart;
|
unsigned char *outbuf = (__builtin_expect (outbufstart == NULL, 1)
|
||||||
|
? data->__outbuf : *outbufstart);
|
||||||
unsigned char *outend = data->__outbufend;
|
unsigned char *outend = data->__outbufend;
|
||||||
unsigned char *outstart;
|
unsigned char *outstart;
|
||||||
/* This variable is used to count the number of characters we
|
/* This variable is used to count the number of characters we
|
||||||
@ -331,7 +335,10 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
|||||||
|| (MAX_NEEDED_TO > 1 && !FROM_DIRECTION))
|
|| (MAX_NEEDED_TO > 1 && !FROM_DIRECTION))
|
||||||
&& consume_incomplete && (data->__statep->__count & 7) != 0)
|
&& consume_incomplete && (data->__statep->__count & 7) != 0)
|
||||||
{
|
{
|
||||||
/* Yep, we have some bytes left over. Process them now. */
|
/* Yep, we have some bytes left over. Process them now.
|
||||||
|
But this must not happen while we are called from an
|
||||||
|
error handler. */
|
||||||
|
assert (outbufstart == NULL);
|
||||||
|
|
||||||
# if MAX_NEEDED_FROM > 1
|
# if MAX_NEEDED_FROM > 1
|
||||||
if (MAX_NEEDED_TO == 1 || FROM_DIRECTION)
|
if (MAX_NEEDED_TO == 1 || FROM_DIRECTION)
|
||||||
@ -412,6 +419,14 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* If we were called as part of an error handling module we
|
||||||
|
don't do anything else here. */
|
||||||
|
if (__builtin_expect (outbufstart != NULL, 0))
|
||||||
|
{
|
||||||
|
*outbufstart = outbuf;
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/* Give the transliteration module the chance to store the
|
/* Give the transliteration module the chance to store the
|
||||||
original text and the result in case it needs a context. */
|
original text and the result in case it needs a context. */
|
||||||
if (data->__trans.__trans_context_fct != NULL)
|
if (data->__trans.__trans_context_fct != NULL)
|
||||||
@ -443,8 +458,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
|
|||||||
int result;
|
int result;
|
||||||
|
|
||||||
result = DL_CALL_FCT (fct, (next_step, next_data, &outerr,
|
result = DL_CALL_FCT (fct, (next_step, next_data, &outerr,
|
||||||
outbuf, next_data->__outbuf,
|
outbuf, NULL, irreversible, 0,
|
||||||
irreversible, 0,
|
|
||||||
consume_incomplete));
|
consume_incomplete));
|
||||||
|
|
||||||
if (result != __GCONV_EMPTY_INPUT)
|
if (result != __GCONV_EMPTY_INPUT)
|
||||||
|
@ -89,7 +89,7 @@ struct gap
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -112,7 +112,7 @@ struct gap
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -137,7 +137,7 @@ struct gap
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -501,8 +501,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -560,8 +559,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -589,8 +587,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -8589,7 +8589,7 @@ static const char from_ucs4_tab13[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -12746,7 +12746,7 @@ static const char from_ucs4_tab14[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -145,8 +145,7 @@
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -222,8 +222,7 @@
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, \
|
(step, step_data, *inptrp, \
|
||||||
&inptr, inend, *outptrp, \
|
&inptr, inend, &outbuf, \
|
||||||
&outptr, outend, \
|
|
||||||
irreversible)); \
|
irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
|
@ -150,7 +150,7 @@ euckr_from_ucs4 (uint32_t ch, unsigned char *cp)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -197,8 +197,7 @@
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -106,8 +106,7 @@
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -13456,8 +13456,7 @@ static const char __gbk_from_ucs4_tab12[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, \
|
&outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -328,8 +328,7 @@ enum
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, \
|
(step, step_data, *inptrp, \
|
||||||
&inptr, inend, *outptrp, \
|
&inptr, inend, &outbuf, \
|
||||||
&outptr, outend, \
|
|
||||||
irreversible)); \
|
irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
|
@ -707,8 +707,7 @@ gconv_end (struct __gconv_step *data)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, \
|
(step, step_data, *inptrp, \
|
||||||
&inptr, inend, *outptrp, \
|
&inptr, inend, &outbuf, \
|
||||||
&outptr, outend, \
|
|
||||||
irreversible)); \
|
irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
@ -895,8 +894,7 @@ gconv_end (struct __gconv_step *data)
|
|||||||
result = DL_CALL_FCT \
|
result = DL_CALL_FCT \
|
||||||
(step_data->__trans.__trans_fct,\
|
(step_data->__trans.__trans_fct,\
|
||||||
(step, step_data, *inptrp, \
|
(step, step_data, *inptrp, \
|
||||||
&inptr, inend, *outptrp, \
|
&inptr, inend, &outbuf, \
|
||||||
&outptr, outend, \
|
|
||||||
irreversible)); \
|
irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
|
@ -259,8 +259,7 @@ enum
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -889,7 +889,7 @@ gconv_end (struct __gconv_step *data)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -569,8 +569,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -595,7 +594,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -546,8 +546,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -572,7 +571,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -400,8 +400,7 @@ johab_sym_hanja_to_ucs (uint_fast32_t idx, uint_fast32_t c1, uint_fast32_t c2)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -446,8 +445,7 @@ johab_sym_hanja_to_ucs (uint_fast32_t idx, uint_fast32_t c1, uint_fast32_t c2)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -4472,8 +4472,7 @@ static const char from_ucs4_extra[0x100][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -4501,7 +4500,7 @@ static const char from_ucs4_extra[0x100][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -473,8 +473,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -511,8 +510,7 @@ static const char from_ucs4[][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -3225,8 +3225,7 @@ static const char uhc_hangul_from_ucs[11172][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -3266,8 +3265,7 @@ static const char uhc_hangul_from_ucs[11172][2] =
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -156,7 +156,7 @@ gconv_end (struct __gconv_step *data)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, inend, \
|
(step, step_data, *inptrp, &inptr, inend, \
|
||||||
*outptrp, &outptr, outend, irreversible)); \
|
&outbuf, irreversible)); \
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -206,8 +206,7 @@ gconv_end (struct __gconv_step *data)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@ -250,8 +249,7 @@ gconv_end (struct __gconv_step *data)
|
|||||||
{ \
|
{ \
|
||||||
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
result = DL_CALL_FCT (step_data->__trans.__trans_fct, \
|
||||||
(step, step_data, *inptrp, &inptr, \
|
(step, step_data, *inptrp, &inptr, \
|
||||||
inend, *outptrp, &outptr, outend, \
|
inend, &outbuf, irreversible)); \
|
||||||
irreversible)); \
|
|
||||||
if (result != __GCONV_OK) \
|
if (result != __GCONV_OK) \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
|
@ -181,7 +181,7 @@ do_out (struct _IO_codecvt *codecvt, __mbstate_t *statep,
|
|||||||
|
|
||||||
status = DL_CALL_FCT (gs->__fct,
|
status = DL_CALL_FCT (gs->__fct,
|
||||||
(gs, codecvt->__cd_out.__cd.__data, &from_start_copy,
|
(gs, codecvt->__cd_out.__cd.__data, &from_start_copy,
|
||||||
(const unsigned char *) from_end, to_start,
|
(const unsigned char *) from_end, NULL,
|
||||||
&dummy, 0, 0));
|
&dummy, 0, 0));
|
||||||
|
|
||||||
*from_stop = (wchar_t *) from_start_copy;
|
*from_stop = (wchar_t *) from_start_copy;
|
||||||
@ -229,7 +229,7 @@ do_unshift (struct _IO_codecvt *codecvt, __mbstate_t *statep,
|
|||||||
|
|
||||||
status = DL_CALL_FCT (gs->__fct,
|
status = DL_CALL_FCT (gs->__fct,
|
||||||
(gs, codecvt->__cd_out.__cd.__data, NULL, NULL,
|
(gs, codecvt->__cd_out.__cd.__data, NULL, NULL,
|
||||||
to_start, &dummy, 1, 0));
|
NULL, &dummy, 1, 0));
|
||||||
|
|
||||||
*to_stop = codecvt->__cd_out.__cd.__data[0].__outbuf;
|
*to_stop = codecvt->__cd_out.__cd.__data[0].__outbuf;
|
||||||
|
|
||||||
@ -277,7 +277,7 @@ do_in (struct _IO_codecvt *codecvt, __mbstate_t *statep,
|
|||||||
|
|
||||||
status = DL_CALL_FCT (gs->__fct,
|
status = DL_CALL_FCT (gs->__fct,
|
||||||
(gs, codecvt->__cd_in.__cd.__data, &from_start_copy,
|
(gs, codecvt->__cd_in.__cd.__data, &from_start_copy,
|
||||||
from_end, (char *) to_start, &dummy, 0, 0));
|
from_end, NULL, &dummy, 0, 0));
|
||||||
|
|
||||||
*from_stop = from_start_copy;
|
*from_stop = from_start_copy;
|
||||||
*to_stop = (wchar_t *) codecvt->__cd_in.__cd.__data[0].__outbuf;
|
*to_stop = (wchar_t *) codecvt->__cd_in.__cd.__data[0].__outbuf;
|
||||||
@ -354,7 +354,7 @@ do_length (struct _IO_codecvt *codecvt, __mbstate_t *statep,
|
|||||||
|
|
||||||
status = DL_CALL_FCT (gs->__fct,
|
status = DL_CALL_FCT (gs->__fct,
|
||||||
(gs, codecvt->__cd_in.__cd.__data, &cp, from_end,
|
(gs, codecvt->__cd_in.__cd.__data, &cp, from_end,
|
||||||
(char *) to_buf, &dummy, 0, 0));
|
NULL, &dummy, 0, 0));
|
||||||
|
|
||||||
result = cp - (const unsigned char *) from_start;
|
result = cp - (const unsigned char *) from_start;
|
||||||
#else
|
#else
|
||||||
|
@ -62,7 +62,7 @@ __btowc (c)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.towc->__fct,
|
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.towc->__fct,
|
||||||
(__wcsmbs_gconv_fcts.towc, &data, &inptr, inptr + 1,
|
(__wcsmbs_gconv_fcts.towc, &data, &inptr, inptr + 1,
|
||||||
data.__outbuf, &dummy, 0, 1));
|
NULL, &dummy, 0, 1));
|
||||||
/* The conversion failed. */
|
/* The conversion failed. */
|
||||||
if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
|
if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
|
||||||
&& status != __GCONV_EMPTY_INPUT)
|
&& status != __GCONV_EMPTY_INPUT)
|
||||||
|
@ -73,7 +73,7 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
|||||||
inbuf = (const unsigned char *) s;
|
inbuf = (const unsigned char *) s;
|
||||||
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.towc->__fct,
|
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.towc->__fct,
|
||||||
(__wcsmbs_gconv_fcts.towc, &data, &inbuf, inbuf + n,
|
(__wcsmbs_gconv_fcts.towc, &data, &inbuf, inbuf + n,
|
||||||
data.__outbuf, &dummy, 0, 1));
|
NULL, &dummy, 0, 1));
|
||||||
|
|
||||||
/* There must not be any problems with the conversion but illegal input
|
/* There must not be any problems with the conversion but illegal input
|
||||||
characters. The output buffer must be large enough, otherwise the
|
characters. The output buffer must be large enough, otherwise the
|
||||||
|
@ -82,7 +82,7 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
|
|||||||
data.__outbuf = (unsigned char *) buf;
|
data.__outbuf = (unsigned char *) buf;
|
||||||
|
|
||||||
status = DL_CALL_FCT (towc->__fct,
|
status = DL_CALL_FCT (towc->__fct,
|
||||||
(towc, &data, &inbuf, srcend, data.__outbuf,
|
(towc, &data, &inbuf, srcend, NULL,
|
||||||
&dummy, 0, 1));
|
&dummy, 0, 1));
|
||||||
|
|
||||||
result += (wchar_t *) data.__outbuf - buf;
|
result += (wchar_t *) data.__outbuf - buf;
|
||||||
@ -104,7 +104,7 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (towc->__fct,
|
status = DL_CALL_FCT (towc->__fct,
|
||||||
(towc, &data, (const unsigned char **) src, srcend,
|
(towc, &data, (const unsigned char **) src, srcend,
|
||||||
data.__outbuf, &dummy, 0, 1));
|
NULL, &dummy, 0, 1));
|
||||||
|
|
||||||
result = (wchar_t *) data.__outbuf - dst;
|
result = (wchar_t *) data.__outbuf - dst;
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ __mbsrtowcs (dst, src, len, ps)
|
|||||||
data.__outbuf = (char *) buf;
|
data.__outbuf = (char *) buf;
|
||||||
|
|
||||||
status = DL_CALL_FCT (towc->__fct,
|
status = DL_CALL_FCT (towc->__fct,
|
||||||
(towc, &data, &inbuf, srcend, data.__outbuf,
|
(towc, &data, &inbuf, srcend, NULL,
|
||||||
&non_reversible, 0, 1));
|
&non_reversible, 0, 1));
|
||||||
|
|
||||||
result += (wchar_t *) data.__outbuf - buf;
|
result += (wchar_t *) data.__outbuf - buf;
|
||||||
@ -110,7 +110,7 @@ __mbsrtowcs (dst, src, len, ps)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (towc->__fct,
|
status = DL_CALL_FCT (towc->__fct,
|
||||||
(towc, &data, (const unsigned char **) src, srcend,
|
(towc, &data, (const unsigned char **) src, srcend,
|
||||||
data.__outbuf, &non_reversible, 0, 1));
|
NULL, &non_reversible, 0, 1));
|
||||||
|
|
||||||
result = (wchar_t *) data.__outbuf - dst;
|
result = (wchar_t *) data.__outbuf - dst;
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ __wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
|
|||||||
{
|
{
|
||||||
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.tomb->__fct,
|
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.tomb->__fct,
|
||||||
(__wcsmbs_gconv_fcts.tomb, &data, NULL, NULL,
|
(__wcsmbs_gconv_fcts.tomb, &data, NULL, NULL,
|
||||||
data.__outbuf, &dummy, 1, 1));
|
NULL, &dummy, 1, 1));
|
||||||
|
|
||||||
if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
|
if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
|
||||||
*data.__outbuf++ = '\0';
|
*data.__outbuf++ = '\0';
|
||||||
@ -87,8 +87,7 @@ __wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.tomb->__fct,
|
status = DL_CALL_FCT (__wcsmbs_gconv_fcts.tomb->__fct,
|
||||||
(__wcsmbs_gconv_fcts.tomb, &data, &inbuf,
|
(__wcsmbs_gconv_fcts.tomb, &data, &inbuf,
|
||||||
inbuf + sizeof (wchar_t), data.__outbuf, &dummy,
|
inbuf + sizeof (wchar_t), NULL, &dummy, 0, 1));
|
||||||
0, 1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* There must not be any problems with the conversion but illegal input
|
/* There must not be any problems with the conversion but illegal input
|
||||||
|
@ -83,7 +83,7 @@ __wcsnrtombs (dst, src, nwc, len, ps)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (tomb->__fct,
|
status = DL_CALL_FCT (tomb->__fct,
|
||||||
(tomb, &data, (const unsigned char **) &inbuf,
|
(tomb, &data, (const unsigned char **) &inbuf,
|
||||||
(const unsigned char *) srcend, data.__outbuf,
|
(const unsigned char *) srcend, NULL,
|
||||||
&dummy, 0, 1));
|
&dummy, 0, 1));
|
||||||
|
|
||||||
/* Count the number of bytes. */
|
/* Count the number of bytes. */
|
||||||
@ -108,7 +108,7 @@ __wcsnrtombs (dst, src, nwc, len, ps)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (tomb->__fct,
|
status = DL_CALL_FCT (tomb->__fct,
|
||||||
(tomb, &data, (const unsigned char **) src,
|
(tomb, &data, (const unsigned char **) src,
|
||||||
(const unsigned char *) srcend, data.__outbuf,
|
(const unsigned char *) srcend, NULL,
|
||||||
&dummy, 0, 1));
|
&dummy, 0, 1));
|
||||||
|
|
||||||
/* Count the number of bytes. */
|
/* Count the number of bytes. */
|
||||||
|
@ -80,7 +80,7 @@ __wcsrtombs (dst, src, len, ps)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (tomb->__fct,
|
status = DL_CALL_FCT (tomb->__fct,
|
||||||
(tomb, &data, (const unsigned char **) &inbuf,
|
(tomb, &data, (const unsigned char **) &inbuf,
|
||||||
(const unsigned char *) srcend, data.__outbuf,
|
(const unsigned char *) srcend, NULL,
|
||||||
&dummy, 0, 1));
|
&dummy, 0, 1));
|
||||||
|
|
||||||
/* Count the number of bytes. */
|
/* Count the number of bytes. */
|
||||||
@ -109,7 +109,7 @@ __wcsrtombs (dst, src, len, ps)
|
|||||||
|
|
||||||
status = DL_CALL_FCT (tomb->__fct,
|
status = DL_CALL_FCT (tomb->__fct,
|
||||||
(tomb, &data, (const unsigned char **) src,
|
(tomb, &data, (const unsigned char **) src,
|
||||||
(const unsigned char *) srcend, data.__outbuf,
|
(const unsigned char *) srcend, NULL,
|
||||||
&dummy, 0, 1));
|
&dummy, 0, 1));
|
||||||
|
|
||||||
/* Count the number of bytes. */
|
/* Count the number of bytes. */
|
||||||
|
@ -58,7 +58,7 @@ wctob (c)
|
|||||||
(__wcsmbs_gconv_fcts.tomb, &data,
|
(__wcsmbs_gconv_fcts.tomb, &data,
|
||||||
(const unsigned char **) &inptr,
|
(const unsigned char **) &inptr,
|
||||||
(const unsigned char *) &inbuf[1],
|
(const unsigned char *) &inbuf[1],
|
||||||
data.__outbuf, &dummy, 0, 1));
|
NULL, &dummy, 0, 1));
|
||||||
|
|
||||||
/* The conversion failed or the output is too long. */
|
/* The conversion failed or the output is too long. */
|
||||||
if ((status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
|
if ((status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
|
||||||
|
Loading…
Reference in New Issue
Block a user