about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--locale/programs/ld-ctype.c23
-rw-r--r--localedata/ChangeLog4
-rw-r--r--localedata/locales/i18n47
4 files changed, 77 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 1715b5d1e8..8739d37da7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2000-08-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* locale/programs/ld-ctype.c (ctype_read): Allow more than one
+	default_missing character being specified, pick the first
+	representable.
+
 2000-08-23  Andreas Jaeger  <aj@suse.de>
 
 	* include/wchar.h: Add some pure attributes.
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index 8904bcad02..b8a8695229 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -854,7 +854,7 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
 			    ? (ctype->map_collection_nr - 2)
 			    : (ctype->nr_charclass + ctype->map_collection_nr)));
   struct iovec iov[2 + nelems + 2 * ctype->nr_charclass
-		  + ctype->map_collection_nr + 2];
+		  + ctype->map_collection_nr + 4];
   struct locale_file data;
   uint32_t idx[nelems + 1];
   uint32_t default_missing_len;
@@ -1112,6 +1112,12 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
 	    break;
 
 	  case _NL_ITEM_INDEX(_NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN):
+	    /* Align entries.  */
+	    iov[2 + elem + offset].iov_base = (void *) nulbytes;
+	    iov[2 + elem + offset].iov_len = (4 - idx[elem] % 4) % 4;
+	    idx[elem] += iov[2 + elem + offset].iov_len;
+	    ++offset;
+
 	    default_missing_len = (ctype->default_missing
 				   ? wcslen ((wchar_t *)ctype->default_missing)
 				   : 0);
@@ -1129,6 +1135,12 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
 	    break;
 
 	  case _NL_ITEM_INDEX(_NL_CTYPE_TRANSLIT_IGNORE_LEN):
+	    /* Align entries.  */
+	    iov[2 + elem + offset].iov_base = (void *) nulbytes;
+	    iov[2 + elem + offset].iov_len = (4 - idx[elem] % 4) % 4;
+	    idx[elem] += iov[2 + elem + offset].iov_len;
+	    ++offset;
+
 	    iov[2 + elem + offset].iov_base = &ctype->ntranslit_ignore;
 	    iov[2 + elem + offset].iov_len = sizeof (uint32_t);
 	    idx[elem + 1] = idx[elem] + iov[2 + elem + offset].iov_len;
@@ -1200,7 +1212,7 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
     }
 
   assert (2 + elem + offset == (nelems + 2 * ctype->nr_charclass
-				+ ctype->map_collection_nr + 2 + 2));
+				+ ctype->map_collection_nr + 4 + 2));
 
   write_locale_data (output_path, "LC_CTYPE", 2 + elem + offset, iov);
 }
@@ -2620,6 +2632,9 @@ with character code range values one must use the absolute ellipsis `...'"));
 	     array.  */
 	  cnt = 0;
 
+	  ldfile->translate_strings = 1;
+	  ldfile->return_widestr = 1;
+
 	  /* We proceed until we see the `translit_end' token.  */
 	  while (now = lr_token (ldfile, charmap, repertoire),
 		 now->tok != tok_translit_end && now->tok != tok_eof)
@@ -2713,7 +2728,8 @@ previous definition was here"));
 			      ctype->default_missing_file = ldfile->fname;
 			      ctype->default_missing_lineno = ldfile->lineno;
 			    }
-			  lr_ignore_rest (ldfile, 1);
+			  /* We can have more entries, ignore them.  */
+			  lr_ignore_rest (ldfile, 0);
 			  break;
 			}
 		      else if (wstr == (uint32_t *) -1l)
@@ -2744,6 +2760,7 @@ previous definition was here"));
 
 	      read_translit_entry (ldfile, ctype, now, charmap, repertoire);
 	    }
+	  ldfile->return_widestr = 0;
 	  break;
 
 	case tok_ident:
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index ce13b01ce5..bc9415218c 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,7 @@
+2000-08-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* locales/i18n: Add transliteration information.
+
 2000-08-22  Ulrich Drepper  <drepper@redhat.com>
 
 	* locales/ca_ES@euro: Country is Spain.
diff --git a/localedata/locales/i18n b/localedata/locales/i18n
index 6c2725cd1d..30d2ae4159 100644
--- a/localedata/locales/i18n
+++ b/localedata/locales/i18n
@@ -762,6 +762,53 @@ class          "combining_level3"; /
    <U0CD5>;<U0CD6>;<U0D57>;<U0F39>;<U302A>..<U302F>;<U3099>;<U309A>
 %
 
+translit_start
+
+% COPYRIGHT SIGN.
+<U00A9> "<U0028><U0043><U0029>"
+% LEFT-POINTING DOUBLE ANGLE QUOTATION MARK.
+<U00AB> "<U003C><U003C>"
+% REGISTERED SIGN.
+<U00AE> "<U0028><U0052><U0029>"
+% RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK.
+<U00BB> "<U003E><U003E>"
+% VULGAR FRACTION ONE QUARTER.
+<U00BC> "<U0031><U002F><U0034>"
+% VULGAR FRACTION ONE HALF.
+<U00BD> "<U0031><U002F><U0032>"
+% VULGAR FRACTION THREE QUARTERS.
+<U00BE> "<U0033><U002F><U0034>"
+% LATIN CAPITAL LETTER A WITH DIAERESIS.
+<U00C4> "<U0041><U0308>";"<U0041><U0045>"
+% LATIN CAPITAL LETTER A WITH RING ABOVE.
+<U00C5> <U212B>;"<U0041><U030A>";"<U0041><U0041>"
+% LATIN CAPITAL LETTER AE.
+<U00C6> "<U0041><U0045>"
+% LATIN CAPITAL LETTER O WITH DIAERESIS.
+<U00D6> "<U004F><U0045>"
+% LATIN CAPITAL LETTER U WITH DIAERESIS.
+<U00DC> "<U0055><U0045>"
+% LATIN SMALL LETTER SHARP S.
+<U00DF> "<U0073><U0073>"
+% LATIN SMALL LETTER A WITH DIAERESIS.
+<U00E4> "<U0061><U0308>";"<U0061><U0065>"
+% LATIN SMALL LETTER A WITH RING ABOVE.
+<U00E5> "<U0061><U030A>";"<U0061><U0061>"
+% LATIN SMALL LETTER AE.
+<U00E6> "<U0061><U0065>"
+% LATIN SMALL LETTER O WITH DIAERESIS.
+<U00F6> "<U006F><U0065>"
+% LATIN SMALL LETTER U WITH DIAERESIS.
+<U00FC> "<U0075><U0065>"
+% LEFT DOUBLE QUOTATION MARK.
+<U201C> <U0022>
+% RIGHT DOUBLE QUOTATION MARK.
+<U201D> <U0022>
+
+default_missing <UFFFD>;<U003F>
+
+translit_end
+
 END LC_CTYPE
 
 LC_COLLATE