about summary refs log tree commit diff
path: root/iconv
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-04-21 19:09:49 +0000
committerUlrich Drepper <drepper@redhat.com>1998-04-21 19:09:49 +0000
commit9ce5071a3d3af1b7837b1a081548fdd945a66efe (patch)
treec9e8e02e1edb77de0cad9c39662b999cb28994a6 /iconv
parent5aa8ff620ef68811c5a7dd5d5bbac1c078730a2a (diff)
downloadglibc-9ce5071a3d3af1b7837b1a081548fdd945a66efe.tar.gz
glibc-9ce5071a3d3af1b7837b1a081548fdd945a66efe.tar.xz
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.h3
-rw-r--r--iconv/gconv_builtin.c3
-rw-r--r--iconv/skeleton.c6
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