diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-04-21 19:09:49 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-04-21 19:09:49 +0000 |
commit | 9ce5071a3d3af1b7837b1a081548fdd945a66efe (patch) | |
tree | c9e8e02e1edb77de0cad9c39662b999cb28994a6 /iconv | |
parent | 5aa8ff620ef68811c5a7dd5d5bbac1c078730a2a (diff) | |
download | glibc-9ce5071a3d3af1b7837b1a081548fdd945a66efe.tar glibc-9ce5071a3d3af1b7837b1a081548fdd945a66efe.tar.gz glibc-9ce5071a3d3af1b7837b1a081548fdd945a66efe.tar.bz2 glibc-9ce5071a3d3af1b7837b1a081548fdd945a66efe.zip |
Update.
1998-04-21 19:05 Ulrich Drepper <drepper@cygnus.com>
* iconv/gconv.h (struct gconv_step): Add element stateful.
* iconv/gconv_builtin.c (__gconv_builtin_trans): Initialize stateful
to zero for all internal conversions.
* iconv/skeleton.c: Initialize stateful depending on whether or not
RESET_STATE is defined to one or zero respectively.
* stdlib/mblen.c: Use stateful element of currently selected
converter for result if S is NULL.
* stdlib/mbtowc.c: Likewise.
* stdlib/wctomb.c: Likewise.
Diffstat (limited to 'iconv')
-rw-r--r-- | iconv/gconv.h | 3 | ||||
-rw-r--r-- | iconv/gconv_builtin.c | 3 | ||||
-rw-r--r-- | iconv/skeleton.c | 6 |
3 files changed, 12 insertions, 0 deletions
diff --git a/iconv/gconv.h b/iconv/gconv.h index cd0e3de1dc..b359c92c62 100644 --- a/iconv/gconv.h +++ b/iconv/gconv.h @@ -87,6 +87,9 @@ struct gconv_step int min_needed_to; int max_needed_to; + /* Flag whether this is a stateful encoding or not. */ + int stateful; + void *data; /* Pointer to step-local data. */ }; diff --git a/iconv/gconv_builtin.c b/iconv/gconv_builtin.c index a970fcc8f2..4f3ca565ac 100644 --- a/iconv/gconv_builtin.c +++ b/iconv/gconv_builtin.c @@ -81,4 +81,7 @@ __gconv_get_builtin_trans (const char *name, struct gconv_step *step) step->max_needed_from = map[cnt].max_needed_from; step->min_needed_to = map[cnt].min_needed_to; step->max_needed_to = map[cnt].max_needed_to; + + /* None of the builtin converters handles stateful encoding. */ + step->stateful = 0; } diff --git a/iconv/skeleton.c b/iconv/skeleton.c index f905bcdaea..36cc33c9be 100644 --- a/iconv/skeleton.c +++ b/iconv/skeleton.c @@ -143,6 +143,12 @@ gconv_init (struct gconv_step *step) step->min_needed_to = MIN_NEEDED_TO; step->max_needed_to = MAX_NEEDED_TO; +#ifdef RESET_STATE + step->stateful = 1; +#else + step->stateful = 0; +#endif + return GCONV_OK; } #endif |