about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog26
-rw-r--r--csu/Makefile9
-rw-r--r--iconvdata/8bit-gap.c6
-rw-r--r--iconvdata/Makefile219
-rw-r--r--iconvdata/gen-8bit-gap-1.sh18
-rw-r--r--iconvdata/gen-8bit-gap.sh18
-rw-r--r--iconvdata/gen-8bit.sh13
-rw-r--r--localedata/locales/ru_SU3
8 files changed, 191 insertions, 121 deletions
diff --git a/ChangeLog b/ChangeLog
index 9aa9479308..c3619dc9cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+1998-05-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* iconvdata/8bit-gap.c (BODY): Don't fall off the end of the gap
+	table.
+
+1998-05-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* iconvdata/gen-8bit.sh: New file.
+	* iconvdata/gen-8bit-gap.sh: New file.
+	* iconvdata/gen-8bit-gap-1.sh: New file.
+	* iconvdata/Makefile (generate-8bit-table): Use shell script
+	instead of writing the commands directly.
+	(generate-8bit-gap-table): Likewise.
+	($(objpfx)iso8859-7jp.h): Likewise.
+	(generated headers): Depend on shell script instead of Makefile.
+	(before-compile): Add $(perl-generated-headers) only if perl is
+	available.
+	(headers): Depend on $(perl-generated-headers) only if perl is
+	available.
+	(sed-generated-headers): Remove iso8859-7jp.h.
+
+1998-05-11  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* csu/Makefile ($(objpfx)abi-tag.h): Double $ in command.  Clean up.
+	(/): Removed.
+
 1998-05-12  Ulrich Drepper  <drepper@cygnus.com>
 
 	* wcsmbs/wcsmbsload.c (extract_charset_name): Pass correctly
diff --git a/csu/Makefile b/csu/Makefile
index 6d804f46aa..fcbaaf0ac0 100644
--- a/csu/Makefile
+++ b/csu/Makefile
@@ -149,15 +149,16 @@ $(addprefix $(objpfx),$(filter-out $(start-installed-name),$(csu-dummies))):
 	rm -f $(@:.o=.c)
 
 # These headers are used by the startup code.
-/ := $$/# bite me.
 $(objpfx)abi-tag.h: $(..)abi-tags
 	$(make-target-directory)
 	rm -f $@.new
-	sed 's/#.*$//;/^[ 	]*$/d' $< | while read conf tag; do \
+	sed -e 's/#.*$$//' -e '/^[ 	]*$$/d' $< | \
+	while read conf tag; do \
 	  test `expr '$(config-machine)-$(config-vendor)-$(config-os)' \
 		     : "$$conf"` != 0 || continue; \
-	  echo "$$tag" | sed > $@.new \
-	       's/[^0-9xXa-fA-F]/ /g;s/ *$//;s/ /,/g;s/^ */#define ABI_TAG /';\
+	  echo "$$tag" | \
+	  sed -e 's/[^0-9xXa-fA-F]/ /g' -e 's/ *$$//' \
+	      -e 's/ /,/g' -e 's/^ */#define ABI_TAG /' > $@.new; \
 	done
 	if test -r $@.new; then mv -f $@.new $@; \
 	else echo >&2 'This configuration not matched in $<'; exit 1; fi
diff --git a/iconvdata/8bit-gap.c b/iconvdata/8bit-gap.c
index 137a61b047..d9fe4dd8ae 100644
--- a/iconvdata/8bit-gap.c
+++ b/iconvdata/8bit-gap.c
@@ -71,6 +71,12 @@ struct gap
     uint32_t ch = *((uint32_t *) inptr);				      \
     unsigned char res;							      \
 									      \
+    if (ch >= 0xffff)							      \
+      {									      \
+	/* This is an illegal character.  */				      \
+	result = GCONV_ILLEGAL_INPUT;					      \
+	break;								      \
+      }									      \
     while (ch > rp->end)						      \
       ++rp;								      \
     if (ch < rp->start)							      \
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index c9eb7804b1..778de6e76a 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -225,12 +225,9 @@ install-others	= $(addprefix $(inst_gconvdir)/, $(modules.so))	\
 # tables for numerous charsets.
 define generate-8bit-table
 $(make-target-directory)
-( echo "static const uint32_t to_ucs4[256] = {"; \
-  sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\1] = 0x\2,/p' -e d $^ | sort -u; \
-  echo "};"; \
-  echo "static const char from_ucs4[] = {"; \
-  sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\2] = 0x\1,/p' -e d $^ | sort -u; \
-  echo "};" ) > $@.new && rm -f $@ && mv $@.new $@
+rm -f $@.new
+$(SHELL) ./gen-8bit.sh $< > $@.new
+mv -f $@.new $@
 endef
 
 sed-generated-headers := iso8859-2.h iso8859-3.h iso8859-4.h iso8859-6.h \
@@ -242,20 +239,13 @@ sed-generated-headers := iso8859-2.h iso8859-3.h iso8859-4.h iso8859-6.h \
 			 ebcdic-pt.h ebcdic-uk.h ebcdic-us.h ibm037.h	 \
 			 ibm038.h ibm274.h ibm275.h ibm423.h ibm424.h	 \
 			 ibm500.h ibm870.h ibm871.h ibm891.h ibm903.h	 \
-			 ibm904.h ibm905.h ibm1047.h iso8859-7jp.h
+			 ibm904.h ibm905.h ibm1047.h
 
 define generate-8bit-gap-table
 $(make-target-directory)
-( echo "static const uint32_t to_ucs4[256] = {"; \
-  sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\1] = 0x\2,/p' -e d $^ | sort -u; \
-  echo "};"; \
-  echo "static const struct gap from_idx[] = {"; \
-  sed -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' -e d $^ | sort -u | $(PERL) gap.pl; \
-  echo "  { start: 0xffff, end: 0xffff, idx:     0 }"; \
-  echo "};"; \
-  echo "static const char from_ucs4[] = {"; \
-  sed -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' -e d $^ | sort -u | $(PERL) gaptab.pl; \
-  echo "};" ) > $@.new && rm -f $@ && mv $@.new $@
+rm -f $@.new
+PERL="$(PERL)" $(SHELL) ./gen-8bit-gap.sh $< > $@.new
+mv -f $@.new $@
 endef
 
 perl-generated-headers := koi8-r.h latin-greek.h latin-greek-1.h	 \
@@ -276,199 +266,196 @@ generated += $(objpfx)gconv-modules
 endif
 
 # The headers must be generated before the compilation.
-before-compile = $(addprefix $(objpfx),$(sed-generated-headers)) \
-		 $(addprefix $(objpfx),$(perl-generated-headers))
+before-compile = $(addprefix $(objpfx),$(sed-generated-headers))
+ifneq ($(PERL),no)
+before-compile += $(addprefix $(objpfx),$(perl-generated-headers))
+endif
 
 
 # Rules to generate the headers.
-$(objpfx)iso8859-2.h: ../localedata/charmaps/ISO-8859-2 Makefile
+$(objpfx)iso8859-2.h: ../localedata/charmaps/ISO-8859-2 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)iso8859-3.h: ../localedata/charmaps/ISO-8859-3 Makefile
+$(objpfx)iso8859-3.h: ../localedata/charmaps/ISO-8859-3 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)iso8859-4.h: ../localedata/charmaps/ISO-8859-4 Makefile
+$(objpfx)iso8859-4.h: ../localedata/charmaps/ISO-8859-4 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)iso8859-6.h: ../localedata/charmaps/ISO-8859-6 Makefile
+$(objpfx)iso8859-6.h: ../localedata/charmaps/ISO-8859-6 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)iso8859-9.h: ../localedata/charmaps/ISO-8859-9 Makefile
+$(objpfx)iso8859-9.h: ../localedata/charmaps/ISO-8859-9 gen-8bit.sh
 	$(generate-8bit-table)
 
-$(objpfx)koi-8.h: ../localedata/charmaps/KOI-8 Makefile
+$(objpfx)koi-8.h: ../localedata/charmaps/KOI-8 gen-8bit.sh
 	$(generate-8bit-table)
 
-$(objpfx)hp-roman8.h: ../localedata/charmaps/HP-ROMAN8 Makefile
+$(objpfx)hp-roman8.h: ../localedata/charmaps/HP-ROMAN8 gen-8bit.sh
 	$(generate-8bit-table)
 
-$(objpfx)ebcdic-at-de.h: ../localedata/charmaps/EBCDIC-AT-DE Makefile
+$(objpfx)ebcdic-at-de.h: ../localedata/charmaps/EBCDIC-AT-DE gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-at-de-a.h: ../localedata/charmaps/EBCDIC-AT-DE-A Makefile
+$(objpfx)ebcdic-at-de-a.h: ../localedata/charmaps/EBCDIC-AT-DE-A gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-ca-fr.h: ../localedata/charmaps/EBCDIC-CA-FR Makefile
+$(objpfx)ebcdic-ca-fr.h: ../localedata/charmaps/EBCDIC-CA-FR gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-dk-no.h: ../localedata/charmaps/EBCDIC-DK-NO Makefile
+$(objpfx)ebcdic-dk-no.h: ../localedata/charmaps/EBCDIC-DK-NO gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-dk-no-a.h: ../localedata/charmaps/EBCDIC-DK-NO-A Makefile
+$(objpfx)ebcdic-dk-no-a.h: ../localedata/charmaps/EBCDIC-DK-NO-A gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-es.h: ../localedata/charmaps/EBCDIC-ES Makefile
+$(objpfx)ebcdic-es.h: ../localedata/charmaps/EBCDIC-ES gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-es-a.h: ../localedata/charmaps/EBCDIC-ES-A Makefile
+$(objpfx)ebcdic-es-a.h: ../localedata/charmaps/EBCDIC-ES-A gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-es-s.h: ../localedata/charmaps/EBCDIC-ES-S Makefile
+$(objpfx)ebcdic-es-s.h: ../localedata/charmaps/EBCDIC-ES-S gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-fi-se.h: ../localedata/charmaps/EBCDIC-FI-SE Makefile
+$(objpfx)ebcdic-fi-se.h: ../localedata/charmaps/EBCDIC-FI-SE gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-fi-se-a.h: ../localedata/charmaps/EBCDIC-FI-SE-A Makefile
+$(objpfx)ebcdic-fi-se-a.h: ../localedata/charmaps/EBCDIC-FI-SE-A gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-fr.h: ../localedata/charmaps/EBCDIC-FR Makefile
+$(objpfx)ebcdic-fr.h: ../localedata/charmaps/EBCDIC-FR gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-is-friss.h: ../localedata/charmaps/EBCDIC-IS-FRISS Makefile
+$(objpfx)ebcdic-is-friss.h: ../localedata/charmaps/EBCDIC-IS-FRISS gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-it.h: ../localedata/charmaps/EBCDIC-IT Makefile
+$(objpfx)ebcdic-it.h: ../localedata/charmaps/EBCDIC-IT gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-pt.h: ../localedata/charmaps/EBCDIC-PT Makefile
+$(objpfx)ebcdic-pt.h: ../localedata/charmaps/EBCDIC-PT gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-uk.h: ../localedata/charmaps/EBCDIC-UK Makefile
+$(objpfx)ebcdic-uk.h: ../localedata/charmaps/EBCDIC-UK gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ebcdic-us.h: ../localedata/charmaps/EBCDIC-US Makefile
+$(objpfx)ebcdic-us.h: ../localedata/charmaps/EBCDIC-US gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm037.h: ../localedata/charmaps/IBM037 Makefile
+$(objpfx)ibm037.h: ../localedata/charmaps/IBM037 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm038.h: ../localedata/charmaps/IBM038 Makefile
+$(objpfx)ibm038.h: ../localedata/charmaps/IBM038 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm274.h: ../localedata/charmaps/IBM274 Makefile
+$(objpfx)ibm274.h: ../localedata/charmaps/IBM274 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm275.h: ../localedata/charmaps/IBM275 Makefile
+$(objpfx)ibm275.h: ../localedata/charmaps/IBM275 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm423.h: ../localedata/charmaps/IBM423 Makefile
+$(objpfx)ibm423.h: ../localedata/charmaps/IBM423 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm500.h: ../localedata/charmaps/IBM500 Makefile
+$(objpfx)ibm500.h: ../localedata/charmaps/IBM500 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm870.h: ../localedata/charmaps/IBM870 Makefile
+$(objpfx)ibm870.h: ../localedata/charmaps/IBM870 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm871.h: ../localedata/charmaps/IBM871 Makefile
+$(objpfx)ibm871.h: ../localedata/charmaps/IBM871 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm891.h: ../localedata/charmaps/IBM891 Makefile
+$(objpfx)ibm891.h: ../localedata/charmaps/IBM891 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm903.h: ../localedata/charmaps/IBM903 Makefile
+$(objpfx)ibm903.h: ../localedata/charmaps/IBM903 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm904.h: ../localedata/charmaps/IBM904 Makefile
+$(objpfx)ibm904.h: ../localedata/charmaps/IBM904 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm905.h: ../localedata/charmaps/IBM905 Makefile
+$(objpfx)ibm905.h: ../localedata/charmaps/IBM905 gen-8bit.sh
 	$(generate-8bit-table)
-$(objpfx)ibm1047.h: ../localedata/charmaps/IBM1047 Makefile
+$(objpfx)ibm1047.h: ../localedata/charmaps/IBM1047 gen-8bit.sh
 	$(generate-8bit-table)
 
-$(objpfx)iso8859-7jp.h: ../localedata/charmaps/ISO-8859-7 Makefile
-	$(make-target-directory)
-	( echo "static const uint32_t iso88597_to_ucs4[96] = {"; \
-	  sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' -e 's/^[^[:space:]]*[[:space:]]*.x\([A-F].\)[[:space:]]*<U\(....\)>.*/  [0x\1 - 0xA0] = 0x\2,/p' -e d $^ | sort -u; \
-	  echo "};"; \
-	  echo "static const struct gap from_idx[] = {"; \
-	  sed -e 's/^[^[:space:]]*[[:space:]]*.x\([A-F].\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' -e d $^ | sort -u | $(PERL) gap.pl; \
-	  echo "  { start: 0xffff, end: 0xffff, idx:     0 }"; \
-	  echo "};"; \
-	  echo "static const char iso88597_from_ucs4[] = {"; \
-	  sed -e 's/^[^[:space:]]*[[:space:]]*.x\([A-F].\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' -e d $^ | sort -u | $(PERL) gaptab.pl; \
-	  echo "};" ) > $@.new && rm -f $@ && mv $@.new $@
-
 
 ifneq ($(PERL),no)
-$(objpfx)iso8859-5.h: ../localedata/charmaps/ISO-8859-5 Makefile
+$(objpfx)iso8859-7jp.h: ../localedata/charmaps/ISO-8859-7 gen-8bit-gap-1.sh
+	$(make-target-directory)
+	rm -f $@.new
+	PERL="$(PERL)" $(SHELL) ./gen-8bit-gap-1.sh $< >$@.new
+	mv -f $@.new $@
+
+$(objpfx)iso8859-5.h: ../localedata/charmaps/ISO-8859-5 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)iso8859-7.h: ../localedata/charmaps/ISO-8859-7 Makefile
+$(objpfx)iso8859-7.h: ../localedata/charmaps/ISO-8859-7 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)iso8859-8.h: ../localedata/charmaps/ISO-8859-8 Makefile
+$(objpfx)iso8859-8.h: ../localedata/charmaps/ISO-8859-8 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)iso8859-10.h: ../localedata/charmaps/ISO-8859-10 Makefile
+$(objpfx)iso8859-10.h: ../localedata/charmaps/ISO-8859-10 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
 
-$(objpfx)koi8-r.h: ../localedata/charmaps/KOI8-R Makefile
+$(objpfx)koi8-r.h: ../localedata/charmaps/KOI8-R gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)latin-greek.h: ../localedata/charmaps/LATIN-GREEK Makefile
+$(objpfx)latin-greek.h: ../localedata/charmaps/LATIN-GREEK gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)latin-greek-1.h: ../localedata/charmaps/LATIN-GREEK-1 Makefile
+$(objpfx)latin-greek-1.h: ../localedata/charmaps/LATIN-GREEK-1 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm256.h: ../localedata/charmaps/IBM256 Makefile
+$(objpfx)ibm256.h: ../localedata/charmaps/IBM256 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm273.h: ../localedata/charmaps/IBM273 Makefile
+$(objpfx)ibm273.h: ../localedata/charmaps/IBM273 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm277.h: ../localedata/charmaps/IBM277 Makefile
+$(objpfx)ibm277.h: ../localedata/charmaps/IBM277 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm278.h: ../localedata/charmaps/IBM278 Makefile
+$(objpfx)ibm278.h: ../localedata/charmaps/IBM278 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm280.h: ../localedata/charmaps/IBM280 Makefile
+$(objpfx)ibm280.h: ../localedata/charmaps/IBM280 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm281.h: ../localedata/charmaps/IBM281 Makefile
+$(objpfx)ibm281.h: ../localedata/charmaps/IBM281 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm284.h: ../localedata/charmaps/IBM284 Makefile
+$(objpfx)ibm284.h: ../localedata/charmaps/IBM284 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm285.h: ../localedata/charmaps/IBM285 Makefile
+$(objpfx)ibm285.h: ../localedata/charmaps/IBM285 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm290.h: ../localedata/charmaps/IBM290 Makefile
+$(objpfx)ibm290.h: ../localedata/charmaps/IBM290 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm297.h: ../localedata/charmaps/IBM297 Makefile
+$(objpfx)ibm297.h: ../localedata/charmaps/IBM297 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm420.h: ../localedata/charmaps/IBM420 Makefile
+$(objpfx)ibm420.h: ../localedata/charmaps/IBM420 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm424.h: ../localedata/charmaps/IBM424 Makefile
+$(objpfx)ibm424.h: ../localedata/charmaps/IBM424 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm437.h: ../localedata/charmaps/IBM437 Makefile
+$(objpfx)ibm437.h: ../localedata/charmaps/IBM437 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm850.h: ../localedata/charmaps/IBM850 Makefile
+$(objpfx)ibm850.h: ../localedata/charmaps/IBM850 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm851.h: ../localedata/charmaps/IBM851 Makefile
+$(objpfx)ibm851.h: ../localedata/charmaps/IBM851 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm852.h: ../localedata/charmaps/IBM852 Makefile
+$(objpfx)ibm852.h: ../localedata/charmaps/IBM852 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm855.h: ../localedata/charmaps/IBM855 Makefile
+$(objpfx)ibm855.h: ../localedata/charmaps/IBM855 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm857.h: ../localedata/charmaps/IBM857 Makefile
+$(objpfx)ibm857.h: ../localedata/charmaps/IBM857 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm860.h: ../localedata/charmaps/IBM860 Makefile
+$(objpfx)ibm860.h: ../localedata/charmaps/IBM860 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm861.h: ../localedata/charmaps/IBM861 Makefile
+$(objpfx)ibm861.h: ../localedata/charmaps/IBM861 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm862.h: ../localedata/charmaps/IBM862 Makefile
+$(objpfx)ibm862.h: ../localedata/charmaps/IBM862 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm863.h: ../localedata/charmaps/IBM863 Makefile
+$(objpfx)ibm863.h: ../localedata/charmaps/IBM863 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm864.h: ../localedata/charmaps/IBM864 Makefile
+$(objpfx)ibm864.h: ../localedata/charmaps/IBM864 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm865.h: ../localedata/charmaps/IBM865 Makefile
+$(objpfx)ibm865.h: ../localedata/charmaps/IBM865 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm868.h: ../localedata/charmaps/IBM868 Makefile
+$(objpfx)ibm868.h: ../localedata/charmaps/IBM868 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm869.h: ../localedata/charmaps/IBM869 Makefile
+$(objpfx)ibm869.h: ../localedata/charmaps/IBM869 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm875.h: ../localedata/charmaps/IBM875 Makefile
+$(objpfx)ibm875.h: ../localedata/charmaps/IBM875 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm880.h: ../localedata/charmaps/IBM880 Makefile
+$(objpfx)ibm880.h: ../localedata/charmaps/IBM880 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm918.h: ../localedata/charmaps/IBM918 Makefile
+$(objpfx)ibm918.h: ../localedata/charmaps/IBM918 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm1004.h: ../localedata/charmaps/IBM1004 Makefile
+$(objpfx)ibm1004.h: ../localedata/charmaps/IBM1004 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)ibm1026.h: ../localedata/charmaps/IBM1026 Makefile
+$(objpfx)ibm1026.h: ../localedata/charmaps/IBM1026 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1250.h: ../localedata/charmaps/CP1250 Makefile
+$(objpfx)cp1250.h: ../localedata/charmaps/CP1250 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1251.h: ../localedata/charmaps/CP1251 Makefile
+$(objpfx)cp1251.h: ../localedata/charmaps/CP1251 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1252.h: ../localedata/charmaps/CP1252 Makefile
+$(objpfx)cp1252.h: ../localedata/charmaps/CP1252 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1253.h: ../localedata/charmaps/CP1253 Makefile
+$(objpfx)cp1253.h: ../localedata/charmaps/CP1253 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1254.h: ../localedata/charmaps/CP1254 Makefile
+$(objpfx)cp1254.h: ../localedata/charmaps/CP1254 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1255.h: ../localedata/charmaps/CP1255 Makefile
+$(objpfx)cp1255.h: ../localedata/charmaps/CP1255 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1256.h: ../localedata/charmaps/CP1256 Makefile
+$(objpfx)cp1256.h: ../localedata/charmaps/CP1256 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
-$(objpfx)cp1257.h: ../localedata/charmaps/CP1257 Makefile
+$(objpfx)cp1257.h: ../localedata/charmaps/CP1257 gen-8bit-gap.sh
 	$(generate-8bit-gap-table)
 endif
 
-headers: $(addprefix $(objpfx),$(sed-generated-headers)) \
-	 $(addprefix $(objpfx),$(perl-generated-headers))
+headers: $(addprefix $(objpfx),$(sed-generated-headers))
+ifneq ($(PERL),no)
+headers: $(addprefix $(objpfx),$(perl-generated-headers))
+endif
 
 
 $(addprefix $(inst_gconvdir)/, $(modules.so)): \
diff --git a/iconvdata/gen-8bit-gap-1.sh b/iconvdata/gen-8bit-gap-1.sh
new file mode 100644
index 0000000000..febf2ead5f
--- /dev/null
+++ b/iconvdata/gen-8bit-gap-1.sh
@@ -0,0 +1,18 @@
+#! /bin/sh
+echo "static const uint32_t iso88597_to_ucs4[96] = {"
+sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' \
+    -e 's/^[^[:space:]]*[[:space:]]*.x\([A-F].\)[[:space:]]*<U\(....\)>.*/  [0x\1 - 0xA0] = 0x\2,/p' \
+    -e d "$@" | \
+sort -u
+echo "};"
+echo "static const struct gap from_idx[] = {"
+sed -e 's/^[^[:space:]]*[[:space:]]*.x\([A-F].\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' \
+    -e d "$@" | \
+sort -u | $PERL gap.pl
+echo "  { start: 0xffff, end: 0xffff, idx:     0 }"
+echo "};"
+echo "static const char iso88597_from_ucs4[] = {"
+sed -e 's/^[^[:space:]]*[[:space:]]*.x\([A-F].\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' \
+    -e d "$@" | \
+sort -u | $PERL gaptab.pl
+echo "};"
diff --git a/iconvdata/gen-8bit-gap.sh b/iconvdata/gen-8bit-gap.sh
new file mode 100644
index 0000000000..fd05a6b935
--- /dev/null
+++ b/iconvdata/gen-8bit-gap.sh
@@ -0,0 +1,18 @@
+#! /bin/sh
+echo "static const uint32_t to_ucs4[256] = {"
+sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' \
+    -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\1] = 0x\2,/p' \
+    -e d "$@" | \
+sort -u
+echo "};"
+echo "static const struct gap from_idx[] = {"
+sed -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' \
+    -e d "$@" | \
+sort -u | $PERL gap.pl
+echo "  { start: 0xffff, end: 0xffff, idx:     0 }"
+echo "};"
+echo "static const char from_ucs4[] = {"
+sed -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/0x\2 0x\1/p' \
+    -e d "$@" | \
+sort -u | $PERL gaptab.pl
+echo "};"
diff --git a/iconvdata/gen-8bit.sh b/iconvdata/gen-8bit.sh
new file mode 100644
index 0000000000..efa44ea969
--- /dev/null
+++ b/iconvdata/gen-8bit.sh
@@ -0,0 +1,13 @@
+#! /bin/sh
+echo "static const uint32_t to_ucs4[256] = {"
+sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' \
+    -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\1] = 0x\2,/p' \
+    -e d "$@" | \
+sort -u
+echo "};"
+echo "static const char from_ucs4[] = {"
+sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' \
+    -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\2] = 0x\1,/p' \
+    -e d "$@" | \
+sort -u
+echo "};"
diff --git a/localedata/locales/ru_SU b/localedata/locales/ru_SU
index 8993099d57..17ff12b07b 100644
--- a/localedata/locales/ru_SU
+++ b/localedata/locales/ru_SU
@@ -1,5 +1,6 @@
 comment_char %
 escape_char  /
+repertoiremap mnemonic.ds
 %
 % Russian Language Locale for Russia
 % Source: RAP
@@ -15,7 +16,7 @@ escape_char  /
 % Date: 1996-10-15
 % Application: general
 % Users: general
-% Repertoiremap: mnemonic,ds
+% Repertoiremap: mnemonic.ds
 % Charset: KOI8-R
 % Distribution and use is free, also
 % for commercial purposes.