diff options
Diffstat (limited to 'locale')
-rw-r--r-- | locale/Makefile | 2 | ||||
-rw-r--r-- | locale/programs/ld-ctype.c | 29 |
2 files changed, 27 insertions, 4 deletions
diff --git a/locale/Makefile b/locale/Makefile index 2825a697c2..5d7594a853 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -76,7 +76,7 @@ $(objpfx)localedef $(objpfx)locale: $(lib-modules:%=$(objpfx)%.o) C-translit.h: C-translit.h.in gen-translit.pl $(PERL) gen-translit.pl < $< > $@.tmp - $(move-if-change) $@.tmp $@ + mv -f $@.tmp $@ ifeq ($(with-cvs),yes) test ! -d CVS || cvs $(CVSOPTS) commit -mRegenerated $@ endif diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c index ebfc1e42a4..1c1c492cb0 100644 --- a/locale/programs/ld-ctype.c +++ b/locale/programs/ld-ctype.c @@ -2274,7 +2274,8 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result, lr_error (ldfile, _("\ %s: field `%s' does not contain exactly ten entries"), "LC_CTYPE", "outdigit"); - goto err_label; + lr_ignore_rest (ldfile, 0); + break; } ctype->mboutdigits[ctype->outdigits_act] = seq; @@ -2781,6 +2782,12 @@ set_class_defaults (struct locale_ctype_t *ctype, struct charmap_t *charmap, seq = charmap_find_value (charmap, tmp, 1); if (seq == NULL) { + char buf[10]; + sprintf (buf, "U%08X", ch); + seq = charmap_find_value (charmap, buf, 9); + } + if (seq == NULL) + { if (!be_quiet) error (0, 0, _("\ %s: character `%s' not defined in charmap while needed as default value"), @@ -3133,6 +3140,12 @@ character `%s' not defined while needed as default value"), seq_from = charmap_find_value (charmap, &tmp[1], 1); if (seq_from == NULL) { + char buf[10]; + sprintf (buf, "U%08X", ch); + seq_from = charmap_find_value (charmap, buf, 9); + } + if (seq_from == NULL) + { if (!be_quiet) error (0, 0, _("\ %s: character `%s' not defined while needed as default value"), @@ -3152,6 +3165,12 @@ character `%s' not defined while needed as default value"), seq_to = charmap_find_value (charmap, &tmp[1], 1); if (seq_to == NULL) { + char buf[10]; + sprintf (buf, "U%08X", ch + ('A' - 'a')); + seq_to = charmap_find_value (charmap, buf, 9); + } + if (seq_to == NULL) + { if (!be_quiet) error (0, 0, _("\ %s: character `%s' not defined while needed as default value"), @@ -3191,9 +3210,13 @@ character `%s' not defined while needed as default value"), ctype->map256_collection[1][ctype->map256_collection[0][cnt]] = cnt; } - if (ctype->outdigits_act == 0) + if (ctype->outdigits_act != 10) { - for (cnt = 0; cnt < 10; ++cnt) + if (ctype->outdigits_act != 0) + error (0,0, _("%s: field `%s' does not contain exactly ten entries"), + "LC_CTYPE", "outdigit"); + + for (cnt = ctype->outdigits_act; cnt < 10; ++cnt) { ctype->mboutdigits[cnt] = charmap_find_symbol (charmap, digits + cnt, 1); |