summaryrefslogtreecommitdiff
path: root/iconv/loop.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-05-16 00:03:15 +0000
committerUlrich Drepper <drepper@redhat.com>1998-05-16 00:03:15 +0000
commit66175fa825828d3a012c34777fd9e7916b7aa10b (patch)
treeca5f75b63ac49de0183f88d90a0de25b025743cf /iconv/loop.c
parentc9fc0e2228473b03cad1f5d6e3dfb52446b24ec7 (diff)
Update.
* iconv/loop.c: Let user add code to use and set paramaters. * iconvdata/iso-2022-kr.c: Correct to-loop. * iconvdata/ksc5601.h (ksc5601_to_ucs4): Use correct value to find hanja. * iconvdata/TESTS: Add ISO-2022-KR test. * iconvdata/testdata/ISO-2022-KR: New file. * wcsmbs/btowc.c: Likewise. * wcsmbs/mbrtowcs.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.
Diffstat (limited to 'iconv/loop.c')
-rw-r--r--iconv/loop.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/iconv/loop.c b/iconv/loop.c
index f8188873dc..596f8a6441 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -44,7 +44,10 @@
BODY this is supposed to expand to the body of the loop.
The user must provide this.
- EXTRA_LOOP_DECLS Extra arguments passed from converion loop call.
+ EXTRA_LOOP_DECLS extra arguments passed from converion loop call.
+
+ INIT_PARAMS code to define and initialize variables from params.
+ UPDATE_PARAMS code to store result in params.
*/
#include <gconv.h>
@@ -134,6 +137,10 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
size_t min_out_rounds = (outend - outptr) / MAX_NEEDED_OUTPUT;
size_t min_rounds = MIN (min_in_rounds, min_out_rounds);
+#ifdef INIT_PARAMS
+ INIT_PARAMS;
+#endif
+
#undef NEED_LENGTH_TEST
#define NEED_LENGTH_TEST 0
while (min_rounds-- > 0)
@@ -195,7 +202,7 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
/* Here comes the body the user provides. It can stop with
RESULT set to GCONV_INCOMPLETE_INPUT (if the size of the
input characters vary in size), GCONV_ILLEGAL_INPUT, or
- GCONV_FULL_OUTPUT (if the output characters vary in size. */
+ GCONV_FULL_OUTPUT (if the output characters vary in size). */
BODY
/* If necessary count the successful conversion. */
@@ -216,6 +223,9 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
/* Update the pointers pointed to by the parameters. */
*inptrp = inptr;
*outptrp = outptr;
+#ifdef UPDATE_PARAMS
+ UPDATE_PARAMS;
+#endif
return result;
}
@@ -232,3 +242,5 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
#undef BODY
#undef LOOPFCT
#undef EXTRA_LOOP_DECLS
+#undef INIT_PARAMS
+#undef UPDATE_PARAMS