summary refs log tree commit diff
path: root/iconvdata
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-05-15 21:17:11 +0000
committerUlrich Drepper <drepper@redhat.com>1998-05-15 21:17:11 +0000
commite3e0a182a7dd19c9e5186d5f5963f584b0eb373a (patch)
treea1eafeb7c1276d93d32680134e82af57406b8aba /iconvdata
parentbd687f7ab43028d3722984a6bcf48115bb82d9bb (diff)
downloadglibc-e3e0a182a7dd19c9e5186d5f5963f584b0eb373a.tar.gz
glibc-e3e0a182a7dd19c9e5186d5f5963f584b0eb373a.tar.xz
glibc-e3e0a182a7dd19c9e5186d5f5963f584b0eb373a.zip
Update.
1998-05-15 21:07  Ulrich Drepper  <drepper@cygnus.com>

	* iconv/gconv.h (gconv_step_data): Add new fields invocation_counter
	and internal_use.
	* iconv/gconv_open.c (__gconv_open): Initialize invocation_counter
	and internal_use.
	* iconv/skeleton.c: Increment invocation_counter.
	* iconvdata/iso-2022-kr.c: When used in iconv() emit designator
	sequence first.

	* iconv/skeleton.c (FROM_DIRECTION): Completely embrace expression.
	* iconvdata/iso-2022-jp.c: Likewise.
	* iconvdata/iso646.c: Likewise.

	* iconvdata/Makefile: Correct rpath definition for ISO-2022-KR.
Diffstat (limited to 'iconvdata')
-rw-r--r--iconvdata/Makefile4
-rw-r--r--iconvdata/iso-2022-jp.c2
-rw-r--r--iconvdata/iso-2022-kr.c13
-rw-r--r--iconvdata/iso646.c2
4 files changed, 16 insertions, 5 deletions
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 8d5ace82aa..f438b3d49e 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -165,8 +165,8 @@ $(objpfx)EUC-TW.so: $(objpfx)libCNS.so
 LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,$(gconvdir)
 $(objpfx)ISO-2022-JP.so: $(objpfx)libJIS.so $(objpfx)libGB.so \
 			 $(objpfx)libCNS.so $(objpfx)libKSC.so
-LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,$(gconvdir)
-$(objpfx)ISO-2022-JP.so: $(objpfx)libKSC.so
+LDFLAGS-ISO-2022-KR.so = -Wl,-rpath,$(gconvdir)
+$(objpfx)ISO-2022-KR.so: $(objpfx)libKSC.so
 
 LDFLAGS-libJIS.so = -Wl,-soname,$(@F)
 LDFLAGS-libKSC.so = -Wl,-soname,$(@F)
diff --git a/iconvdata/iso-2022-jp.c b/iconvdata/iso-2022-jp.c
index 2c0f701dfb..900c733552 100644
--- a/iconvdata/iso-2022-jp.c
+++ b/iconvdata/iso-2022-jp.c
@@ -50,7 +50,7 @@ struct gap
 #define MAX_NEEDED_FROM		4
 #define MIN_NEEDED_TO		4
 #define MAX_NEEDED_TO		4
-#define FROM_DIRECTION		dir == from_iso2022jp
+#define FROM_DIRECTION		(dir == from_iso2022jp)
 #define PREPARE_LOOP \
   enum direction dir = ((struct iso2022jp_data *) step->data)->dir;	      \
   enum variant var = ((struct iso2022jp_data *) step->data)->var;	      \
diff --git a/iconvdata/iso-2022-kr.c b/iconvdata/iso-2022-kr.c
index 69a1f5f89f..cb02cc9bf2 100644
--- a/iconvdata/iso-2022-kr.c
+++ b/iconvdata/iso-2022-kr.c
@@ -44,7 +44,18 @@
 #define MAX_NEEDED_TO		4
 #define PREPARE_LOOP \
   int save_set;								      \
-  int set = data->statep->count;
+  int set = data->statep->count;					      \
+  if (!FROM_DIRECTION && !data->internal_use && data->invocation_counter == 0)\
+    {									      \
+      /* Emit the designator sequence.  */				      \
+      if (outptr + 4 > outend)						      \
+	return GCONV_FULL_OUTPUT;					      \
+									      \
+      *outptr++ = '\x1b';						      \
+      *outptr++ = '\x24';						      \
+      *outptr++ = '\x29';						      \
+      *outptr++ = '\x43';						      \
+    }
 #define EXTRA_LOOP_ARGS		, set
 
 
diff --git a/iconvdata/iso646.c b/iconvdata/iso646.c
index 29a452d112..af1479a347 100644
--- a/iconvdata/iso646.c
+++ b/iconvdata/iso646.c
@@ -42,7 +42,7 @@
 #define DEFINE_FINI		0
 #define MIN_NEEDED_FROM		1
 #define MIN_NEEDED_TO		4
-#define FROM_DIRECTION		dir == from_iso646
+#define FROM_DIRECTION		(dir == from_iso646)
 #define PREPARE_LOOP \
   enum direction dir = ((struct iso646_data *) step->data)->dir;	      \
   enum variant var = ((struct iso646_data *) step->data)->var;