diff options
Diffstat (limited to 'iconv')
-rw-r--r-- | iconv/gconv.c | 10 | ||||
-rw-r--r-- | iconv/gconv_int.h | 4 | ||||
-rw-r--r-- | iconv/gconv_simple.c | 46 | ||||
-rw-r--r-- | iconv/iconv.c | 18 | ||||
-rw-r--r-- | iconv/loop.c | 6 | ||||
-rw-r--r-- | iconv/skeleton.c | 33 |
6 files changed, 62 insertions, 55 deletions
diff --git a/iconv/gconv.c b/iconv/gconv.c index fbb77554c4..06e212b2cb 100644 --- a/iconv/gconv.c +++ b/iconv/gconv.c @@ -29,7 +29,7 @@ int internal_function __gconv (__gconv_t cd, const unsigned char **inbuf, const unsigned char *inbufend, unsigned char **outbuf, - unsigned char *outbufend, size_t *converted) + unsigned char *outbufend, size_t *irreversible) { size_t last_step = cd->__nsteps - 1; int result; @@ -37,8 +37,8 @@ __gconv (__gconv_t cd, const unsigned char **inbuf, if (cd == (__gconv_t) -1L) return __GCONV_ILLEGAL_DESCRIPTOR; - assert (converted != NULL); - *converted = 0; + assert (irreversible != NULL); + *irreversible = 0; cd->__data[last_step].__outbuf = outbuf != NULL ? *outbuf : NULL; cd->__data[last_step].__outbufend = outbufend; @@ -47,7 +47,7 @@ __gconv (__gconv_t cd, const unsigned char **inbuf, /* We just flush. */ result = DL_CALL_FCT (cd->__steps->__fct, (cd->__steps, cd->__data, NULL, NULL, - converted, 1, 0)); + irreversible, 1, 0)); else { const unsigned char *last_start; @@ -59,7 +59,7 @@ __gconv (__gconv_t cd, const unsigned char **inbuf, last_start = *inbuf; result = DL_CALL_FCT (cd->__steps->__fct, (cd->__steps, cd->__data, inbuf, inbufend, - converted, 0, 0)); + irreversible, 0, 0)); } while (result == __GCONV_EMPTY_INPUT && last_start != *inbuf && *inbuf + cd->__steps->__min_needed_from <= inbufend); diff --git a/iconv/gconv_int.h b/iconv/gconv_int.h index 8624f74967..01cebe72c4 100644 --- a/iconv/gconv_int.h +++ b/iconv/gconv_int.h @@ -140,10 +140,10 @@ extern int __gconv_close (__gconv_t cd) /* Transform at most *INBYTESLEFT bytes from buffer starting at *INBUF according to rules described by CD and place up to *OUTBYTESLEFT bytes in buffer starting at *OUTBUF. Return number of non-identical - conversions in *CONVERTED if this pointer is not null. */ + conversions in *IRREVERSIBLE if this pointer is not null. */ extern int __gconv (__gconv_t __cd, const unsigned char **__inbuf, const unsigned char *inbufend, unsigned char **__outbuf, - unsigned char *outbufend, size_t *converted) + unsigned char *outbufend, size_t *irreversible) internal_function; /* Return in *HANDLE a pointer to an array with *NSTEPS elements describing diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c index 7a1e6344a2..4b7004caa6 100644 --- a/iconv/gconv_simple.c +++ b/iconv/gconv_simple.c @@ -64,7 +64,8 @@ static const unsigned char encoding_byte[] = static inline int internal_ucs4_loop (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, - mbstate_t *state, int flags, void *data, size_t *converted) + mbstate_t *state, int flags, void *data, + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -105,7 +106,7 @@ internal_ucs4_loop_unaligned (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -152,7 +153,7 @@ internal_ucs4_loop_single (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { size_t cnt = state->__count & 7; @@ -206,7 +207,8 @@ internal_ucs4_loop_single (const unsigned char **inptrp, static inline int ucs4_internal_loop (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, - mbstate_t *state, int flags, void *data, size_t *converted) + mbstate_t *state, int flags, void *data, + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -229,7 +231,7 @@ ucs4_internal_loop (const unsigned char **inptrp, const unsigned char *inend, if (flags & __GCONV_IGNORE_ERRORS) { /* Just ignore this character. */ - ++*converted; + ++*irreversible; continue; } @@ -261,7 +263,7 @@ ucs4_internal_loop_unaligned (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -277,7 +279,7 @@ ucs4_internal_loop_unaligned (const unsigned char **inptrp, if (flags & __GCONV_IGNORE_ERRORS) { /* Just ignore this character. */ - ++*converted; + ++*irreversible; continue; } @@ -320,7 +322,7 @@ ucs4_internal_loop_single (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { size_t cnt = state->__count & 7; @@ -387,7 +389,7 @@ static inline int internal_ucs4le_loop (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -428,7 +430,7 @@ internal_ucs4le_loop_unaligned (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -475,7 +477,7 @@ internal_ucs4le_loop_single (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { size_t cnt = state->__count & 7; @@ -527,7 +529,7 @@ static inline int ucs4le_internal_loop (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -550,7 +552,7 @@ ucs4le_internal_loop (const unsigned char **inptrp, const unsigned char *inend, if (flags & __GCONV_IGNORE_ERRORS) { /* Just ignore this character. */ - ++*converted; + ++*irreversible; continue; } @@ -580,7 +582,7 @@ ucs4le_internal_loop_unaligned (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { const unsigned char *inptr = *inptrp; unsigned char *outptr = *outptrp; @@ -596,7 +598,7 @@ ucs4le_internal_loop_unaligned (const unsigned char **inptrp, if (flags & __GCONV_IGNORE_ERRORS) { /* Just ignore this character. */ - ++*converted; + ++*irreversible; continue; } @@ -641,7 +643,7 @@ ucs4le_internal_loop_single (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, mbstate_t *state, int flags, void *data, - size_t *converted) + size_t *irreversible) { size_t cnt = state->__count & 7; @@ -715,7 +717,7 @@ ucs4le_internal_loop_single (const unsigned char **inptrp, break; \ } \ \ - ++*converted; \ + ++*irreversible; \ ++inptr; \ } \ else \ @@ -753,7 +755,7 @@ ucs4le_internal_loop_single (const unsigned char **inptrp, break; \ } \ \ - ++*converted; \ + ++*irreversible; \ inptr += 4; \ } \ else \ @@ -933,7 +935,7 @@ ucs4le_internal_loop_single (const unsigned char **inptrp, { \ /* Ignore it. */ \ inptr += i; \ - ++*converted; \ + ++*irreversible; \ continue; \ } \ \ @@ -963,7 +965,7 @@ ucs4le_internal_loop_single (const unsigned char **inptrp, if (ignore_errors_p ()) \ { \ inptr += i; \ - ++*converted; \ + ++*irreversible; \ continue; \ } \ \ @@ -1130,7 +1132,7 @@ ucs4le_internal_loop_single (const unsigned char **inptrp, } \ \ inptr += 4; \ - ++*converted; \ + ++*irreversible; \ } \ else \ *((uint16_t *) outptr)++ = *((uint32_t *) inptr)++; \ @@ -1186,7 +1188,7 @@ ucs4le_internal_loop_single (const unsigned char **inptrp, } \ \ inptr += 4; \ - ++*converted; \ + ++*irreversible; \ } \ *((uint16_t *) outptr)++ = bswap_16 (val); \ inptr += 4; \ diff --git a/iconv/iconv.c b/iconv/iconv.c index 58d977e949..53c1f97e3b 100644 --- a/iconv/iconv.c +++ b/iconv/iconv.c @@ -34,17 +34,17 @@ iconv (iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, { __gconv_t gcd = (__gconv_t) cd; char *outstart = outbuf ? *outbuf : NULL; - size_t converted; + size_t irreversible; int result; if (__builtin_expect (inbuf == NULL || *inbuf == NULL, 0)) { if (outbuf == NULL || *outbuf == NULL) - result = __gconv (gcd, NULL, NULL, NULL, NULL, &converted); + result = __gconv (gcd, NULL, NULL, NULL, NULL, &irreversible); else result = __gconv (gcd, NULL, NULL, (unsigned char **) outbuf, (unsigned char *) (outstart + *outbytesleft), - &converted); + &irreversible); } else { @@ -54,7 +54,7 @@ iconv (iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, (const unsigned char *) (*inbuf + *inbytesleft), (unsigned char **) outbuf, (unsigned char *) (*outbuf + *outbytesleft), - &converted); + &irreversible); *inbytesleft -= *inbuf - instart; } @@ -65,22 +65,22 @@ iconv (iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, { case __GCONV_ILLEGAL_DESCRIPTOR: __set_errno (EBADF); - converted = (size_t) -1L; + irreversible = (size_t) -1L; break; case __GCONV_ILLEGAL_INPUT: __set_errno (EILSEQ); - converted = (size_t) -1L; + irreversible = (size_t) -1L; break; case __GCONV_FULL_OUTPUT: __set_errno (E2BIG); - converted = (size_t) -1L; + irreversible = (size_t) -1L; break; case __GCONV_INCOMPLETE_INPUT: __set_errno (EINVAL); - converted = (size_t) -1L; + irreversible = (size_t) -1L; break; case __GCONV_EMPTY_INPUT: @@ -92,5 +92,5 @@ iconv (iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, assert (!"Nothing like this should happen"); } - return converted; + return irreversible; } diff --git a/iconv/loop.c b/iconv/loop.c index 473d0a3922..c01e52040e 100644 --- a/iconv/loop.c +++ b/iconv/loop.c @@ -177,8 +177,8 @@ static inline int FCTNAME (LOOPFCT) (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, - mbstate_t *state, int flags, void *data, size_t *converted - EXTRA_LOOP_DECLS) + mbstate_t *state, int flags, void *data, + size_t *irreversible EXTRA_LOOP_DECLS) { int result = __GCONV_OK; const unsigned char *inptr = *inptrp; @@ -293,7 +293,7 @@ FCTNAME (LOOPFCT) (const unsigned char **inptrp, const unsigned char *inend, static inline int SINGLE(LOOPFCT) (const unsigned char **inptrp, const unsigned char *inend, unsigned char **outptrp, unsigned char *outend, - mbstate_t *state, int flags, void *data, size_t *converted + mbstate_t *state, int flags, void *data, size_t *irreversible EXTRA_LOOP_DECLS) { int result = __GCONV_OK; diff --git a/iconv/skeleton.c b/iconv/skeleton.c index bf4e11f37a..9b7b4a1125 100644 --- a/iconv/skeleton.c +++ b/iconv/skeleton.c @@ -271,7 +271,7 @@ gconv_init (struct __gconv_step *step) int FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, const unsigned char **inptrp, const unsigned char *inend, - size_t *written, int do_flush, int consume_incomplete) + size_t *irreversible, int do_flush, int consume_incomplete) { struct __gconv_step *next_step = step + 1; struct __gconv_step_data *next_data = data + 1; @@ -295,7 +295,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, successfully emitted the escape sequence. */ if (status == __GCONV_OK && ! (data->__flags & __GCONV_IS_LAST)) status = DL_CALL_FCT (fct, (next_step, next_data, NULL, NULL, - written, 1, consume_incomplete)); + irreversible, 1, consume_incomplete)); } else { @@ -306,7 +306,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, unsigned char *outstart; /* This variable is used to count the number of characters we actually converted. */ - size_t converted = 0; + size_t lirreversible = 0; #if defined _STRING_ARCH_unaligned \ || MIN_NEEDED_FROM == 1 || MAX_NEEDED_FROM % MIN_NEEDED_FROM != 0 \ || MIN_NEEDED_TO == 1 || MAX_NEEDED_TO % MIN_NEEDED_TO != 0 @@ -335,7 +335,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, if (MAX_NEEDED_TO == 1 || FROM_DIRECTION) status = SINGLE(FROM_LOOP) (inptrp, inend, &outbuf, outend, data->__statep, data->__flags, - step->__data, &converted + step->__data, &lirreversible EXTRA_LOOP_ARGS); # endif # if MAX_NEEDED_FROM > 1 && MAX_NEEDED_TO > 1 && !ONE_DIRECTION @@ -344,7 +344,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, # if MAX_NEEDED_TO > 1 && !ONE_DIRECTION status = SINGLE(TO_LOOP) (inptrp, inend, &outbuf, outend, data->__statep, data->__flags, - step->__data, &converted + step->__data, &lirreversible EXTRA_LOOP_ARGS); # endif @@ -388,12 +388,14 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, /* Run the conversion loop. */ status = FROM_LOOP (inptrp, inend, &outbuf, outend, data->__statep, data->__flags, - step->__data, &converted EXTRA_LOOP_ARGS); + step->__data, &lirreversible + EXTRA_LOOP_ARGS); else /* Run the conversion loop. */ status = TO_LOOP (inptrp, inend, &outbuf, outend, data->__statep, data->__flags, - step->__data, &converted EXTRA_LOOP_ARGS); + step->__data, &lirreversible + EXTRA_LOOP_ARGS); } #if !defined _STRING_ARCH_unaligned \ && MIN_NEEDED_FROM != 1 && MAX_NEEDED_FROM % MIN_NEEDED_FROM == 0 \ @@ -405,14 +407,16 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, status = GEN_unaligned (FROM_LOOP) (inptrp, inend, &outbuf, outend, data->__statep, data->__flags, - step->__data, &converted + step->__data, + &lirreversible EXTRA_LOOP_ARGS); else /* Run the conversion loop. */ status = GEN_unaligned (TO_LOOP) (inptrp, inend, &outbuf, outend, data->__statep, data->__flags, - step->__data, &converted + step->__data, + &lirreversible EXTRA_LOOP_ARGS); } #endif @@ -427,8 +431,9 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, /* Store information about how many bytes are available. */ data->__outbuf = outbuf; - /* Remember how many non-identical characters we converted. */ - *written += converted; + /* Remember how many non-identical characters we + converted in a irreversible way. */ + *irreversible += lirreversible; break; } @@ -440,7 +445,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, int result; result = DL_CALL_FCT (fct, (next_step, next_data, &outerr, - outbuf, written, 0, + outbuf, irreversible, 0, consume_incomplete)); if (result != __GCONV_EMPTY_INPUT) @@ -471,7 +476,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, (unsigned char **) &outbuf, (unsigned char *) outerr, data->__statep, data->__flags, - step->__data, &converted + step->__data, &lirreversible EXTRA_LOOP_ARGS); else /* Run the conversion loop. */ @@ -480,7 +485,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, (unsigned char **) &outbuf, (unsigned char *) outerr, data->__statep, data->__flags, - step->__data, &converted + step->__data, &lirreversible EXTRA_LOOP_ARGS); /* We must run out of output buffer space in this |