From 880f421fc30003d1626429e8796d43b91d71cab9 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 16 Feb 1998 17:42:46 +0000 Subject: Update. 1998-02-16 17:33 Ulrich Drepper * elf/rtld.c (dl_main): Recognize --library-path parameter and pass value (or NULL) to _dl_init_paths. * elf/dl-load.c (_dl_init_paths): Change to take one parameter, replacing local variable llp. If llp is NULL examine LD_LIBRARY_PATH environment variable. * elf/link.h: Change prototype for _dl_init_paths. * elf/dl-support.c: Pass NULL in _dl_init_paths call. * localedata/Makefile (distribute): Add test files. 1998-02-17 Andreas Jaeger * localedata/tests/{test1.cm, test2.cm, test3.cm, test4.cm, test1.def, test2.def, test3.def, test4.def}: Simple input files for localedef. Contributed by Yung-Ching Hsiao . * localedata/Makefile (tests): Call tst-locale.sh. * localedata/tst-locale.sh: New file, regression tests for some localedef problems. 1998-02-15 Thorsten Kukuk * nis/nss_nisplus/nisplus-alias.c: Use __stpncpy. * nis/nss_nisplus/nisplus-hosts.c: Make sure buffer is always NUL terminated. * nis/nss_nisplus/nisplus-network.c: Likewise. * nis/nss_nisplus/nisplus-proto.c: Likewise. * nis/nss_nisplus/nisplus-rpc.c: Likewise. * nis/nss_nisplus/nisplus-service.c: Likewise. Add more changes from TI-RPC 2.3 for rpcgen to fix include/C++ bug and support generating thread safe RPC code. * sunrpc/rpc_main.c: Add changes. * sunrpc/rpc_clntout.c: Likewise. * sunrpc/rpc_cout.c: Likewise. * sunrpc/rpc_hout.c: Likewise. * sunrpc/rpc_parse.c: Likewise. * sunrpc/rpc_sample.c: Likewise. * sunrpc/rpc_scan.c: Likewise. * sunrpc/rpc_svcout.c: Likewise. * sunrpc/rpc_util.c: Likewise. * sunrpc/rpc_util.h: Add new structs and prototypes. * sunrpc/proto.h: Remove prototypes for static functions. 1998-02-15 Andreas Schwab * locale/programs/ld-messages.c (messages_finish): Don't skip error checking when being quiet. * locale/programs/ld-ctype.c (ctype_finish): Likewise. (set_class_defaults): Likewise. * locale/programs/charmap.c (parse_charmap): Likewise. * locale/programs/ld-collate.c (collate_finish): Likewise. * locale/programs/ld-monetary.c (monetary_finish): Likewise. * locale/programs/ld-time.c (time_finish): Likewise. * locale/programs/locfile.c (write_locale_data): Likewise. * locale/programs/ld-ctype.c (ctype_class_to): Silently ignore unknown characters and empty ranges. * locale/programs/ld-collate.c (collate_order_elem): When processing an ellipsis properly form a linked list in the result table, fix typo when allocating ordering array. [PR libc/419] 1998-02-13 Andreas Schwab * elf/Makefile (ld-map): Define. (rtld-ldscript): Define. Change all `$(objpfx)rtld-ldscript' to `$(rtld-ldscript)'. ($(objpfx)ld.so): Combine the two versions of this rule. Depend on $(ld-map). (rtld-link): Combine the two versions of this definition. Fixed to make it work when no symbol versioning is used. 1998-02-16 Ulrich Drepper * Makeconfig (build-program-cmd): Use --library-path parameter to ld.so instead of environment variable. * sunrpc/Makefile (rpcgen-cmd): Don't use -$ parameter. * sunrpc/rpc_main.c: Remove support for -$$ option again. 1998-02-16 Andreas Jaeger * Make-dist: Respect with-cvs setting. * MakeTAGS (all-pot): Likewise. * sysdeps/sparc/sparc32/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * stdlib/Makefile: Likewise. * posix/Makefile: Likewise. * intl/Makefile: Likewise. * po/Makefile (linguas): Likewise --- ChangeLog | 97 ++ Make-dist | 9 + MakeTAGS | 2 + Makeconfig | 5 +- elf/Makefile | 30 +- elf/dl-load.c | 13 +- elf/dl-support.c | 4 +- elf/link.h | 4 +- elf/rtld.c | 12 +- intl/Makefile | 8 + locale/programs/charmap.c | 7 +- locale/programs/ld-collate.c | 23 +- locale/programs/ld-ctype.c | 145 +-- locale/programs/ld-messages.c | 22 +- locale/programs/ld-monetary.c | 13 +- locale/programs/ld-time.c | 96 +- locale/programs/locfile.c | 16 +- localedata/Makefile | 7 +- localedata/locales/tr_TR | 1049 +++++++++++++++++++-- localedata/tests/test1.cm | 73 ++ localedata/tests/test1.def | 9 + localedata/tests/test2.cm | 73 ++ localedata/tests/test2.def | 9 + localedata/tests/test3.cm | 73 ++ localedata/tests/test3.def | 9 + localedata/tests/test4.cm | 12 + localedata/tests/test4.def | 7 + localedata/tst-locale.sh | 51 + manual/arith.texi | 167 ++++ nis/nss_nisplus/nisplus-alias.c | 13 +- nis/nss_nisplus/nisplus-hosts.c | 9 +- nis/nss_nisplus/nisplus-network.c | 85 +- nis/nss_nisplus/nisplus-proto.c | 6 +- nis/nss_nisplus/nisplus-rpc.c | 19 +- nis/nss_nisplus/nisplus-service.c | 6 +- po/Makefile | 2 + posix/Makefile | 6 + stdlib/Makefile | 2 + sunrpc/Makefile | 2 +- sunrpc/proto.h | 7 +- sunrpc/rpc_clntout.c | 223 +++-- sunrpc/rpc_cout.c | 1185 ++++++++++++----------- sunrpc/rpc_hout.c | 859 +++++++++-------- sunrpc/rpc_main.c | 1861 +++++++++++++++++++++---------------- sunrpc/rpc_parse.c | 965 ++++++++++--------- sunrpc/rpc_sample.c | 170 +++- sunrpc/rpc_scan.c | 18 +- sunrpc/rpc_svcout.c | 303 ++++-- sunrpc/rpc_util.c | 13 +- sunrpc/rpc_util.h | 31 +- sysdeps/mach/hurd/Makefile | 4 +- sysdeps/sparc/sparc32/Makefile | 4 +- 52 files changed, 5146 insertions(+), 2692 deletions(-) create mode 100644 localedata/tests/test1.cm create mode 100644 localedata/tests/test1.def create mode 100644 localedata/tests/test2.cm create mode 100644 localedata/tests/test2.def create mode 100644 localedata/tests/test3.cm create mode 100644 localedata/tests/test3.def create mode 100644 localedata/tests/test4.cm create mode 100644 localedata/tests/test4.def create mode 100755 localedata/tst-locale.sh diff --git a/ChangeLog b/ChangeLog index 45926c44fd..2912ce6b6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,100 @@ +1998-02-16 17:33 Ulrich Drepper + + * elf/rtld.c (dl_main): Recognize --library-path parameter and + pass value (or NULL) to _dl_init_paths. + * elf/dl-load.c (_dl_init_paths): Change to take one parameter, + replacing local variable llp. If llp is NULL examine LD_LIBRARY_PATH + environment variable. + * elf/link.h: Change prototype for _dl_init_paths. + * elf/dl-support.c: Pass NULL in _dl_init_paths call. + + * localedata/Makefile (distribute): Add test files. + +1998-02-17 Andreas Jaeger + + * localedata/tests/{test1.cm, test2.cm, test3.cm, test4.cm, + test1.def, test2.def, test3.def, test4.def}: Simple input files + for localedef. Contributed by Yung-Ching Hsiao + . + + * localedata/Makefile (tests): Call tst-locale.sh. + + * localedata/tst-locale.sh: New file, regression tests for some + localedef problems. + +1998-02-15 Thorsten Kukuk + + * nis/nss_nisplus/nisplus-alias.c: Use __stpncpy. + + * nis/nss_nisplus/nisplus-hosts.c: Make sure buffer is always NUL + terminated. + * nis/nss_nisplus/nisplus-network.c: Likewise. + * nis/nss_nisplus/nisplus-proto.c: Likewise. + * nis/nss_nisplus/nisplus-rpc.c: Likewise. + * nis/nss_nisplus/nisplus-service.c: Likewise. + + Add more changes from TI-RPC 2.3 for rpcgen to fix include/C++ bug + and support generating thread safe RPC code. + * sunrpc/rpc_main.c: Add changes. + * sunrpc/rpc_clntout.c: Likewise. + * sunrpc/rpc_cout.c: Likewise. + * sunrpc/rpc_hout.c: Likewise. + * sunrpc/rpc_parse.c: Likewise. + * sunrpc/rpc_sample.c: Likewise. + * sunrpc/rpc_scan.c: Likewise. + * sunrpc/rpc_svcout.c: Likewise. + * sunrpc/rpc_util.c: Likewise. + * sunrpc/rpc_util.h: Add new structs and prototypes. + * sunrpc/proto.h: Remove prototypes for static functions. + +1998-02-15 Andreas Schwab + + * locale/programs/ld-messages.c (messages_finish): Don't skip + error checking when being quiet. + * locale/programs/ld-ctype.c (ctype_finish): Likewise. + (set_class_defaults): Likewise. + * locale/programs/charmap.c (parse_charmap): Likewise. + * locale/programs/ld-collate.c (collate_finish): Likewise. + * locale/programs/ld-monetary.c (monetary_finish): Likewise. + * locale/programs/ld-time.c (time_finish): Likewise. + * locale/programs/locfile.c (write_locale_data): Likewise. + + * locale/programs/ld-ctype.c (ctype_class_to): Silently ignore + unknown characters and empty ranges. + * locale/programs/ld-collate.c (collate_order_elem): When + processing an ellipsis properly form a linked list in the result + table, fix typo when allocating ordering array. + [PR libc/419] + +1998-02-13 Andreas Schwab + + * elf/Makefile (ld-map): Define. + (rtld-ldscript): Define. Change all `$(objpfx)rtld-ldscript' to + `$(rtld-ldscript)'. + ($(objpfx)ld.so): Combine the two versions of this rule. Depend + on $(ld-map). + (rtld-link): Combine the two versions of this definition. Fixed + to make it work when no symbol versioning is used. + +1998-02-16 Ulrich Drepper + + * Makeconfig (build-program-cmd): Use --library-path parameter to + ld.so instead of environment variable. + + * sunrpc/Makefile (rpcgen-cmd): Don't use -$ parameter. + * sunrpc/rpc_main.c: Remove support for -$$ option again. + +1998-02-16 Andreas Jaeger + + * Make-dist: Respect with-cvs setting. + * MakeTAGS (all-pot): Likewise. + * sysdeps/sparc/sparc32/Makefile: Likewise. + * sysdeps/mach/hurd/Makefile: Likewise. + * stdlib/Makefile: Likewise. + * posix/Makefile: Likewise. + * intl/Makefile: Likewise. + * po/Makefile (linguas): Likewise + 1998-02-15 Thorsten Kukuk * nis/ypclnt.c (yp_all): Remove error message, user should print it. diff --git a/Make-dist b/Make-dist index c4e10180bf..0d61f490ae 100644 --- a/Make-dist +++ b/Make-dist @@ -185,11 +185,18 @@ foo:=$(shell echo '+sysdep-dist=$(+sysdep-dist)' >&2) +tsrcs := $(+tsrcs) $(+sysdep-tsrcs) +ifeq ($(with-cvs),yes) define autoconf-it autoconf $(ACFLAGS) $< > $@.new mv -f $@.new $@ test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@ endef +else +define autoconf-it +autoconf $(ACFLAGS) $< > $@.new +mv -f $@.new $@ +endef +endif configure: configure.in aclocal.m4; $(autoconf-it) %/configure: %/configure.in aclocal.m4; $(autoconf-it) @@ -225,7 +232,9 @@ README: README.template version.h sed -e 's/RELEASE/$(release)/' -e 's/VERSION/$(version)/' < $< > $@ # Make it unwritable so I won't change it by mistake. chmod 444 $@ +ifeq ($(with-cvs),yes) test ! -d CVS || cvs $(CVSOPTS) commit -m'Remade for $(release)-$(version)' $@ +endif endif # Subdirectory vs. parent makefile diff --git a/MakeTAGS b/MakeTAGS index 8bc587a02c..57d7a5b766 100644 --- a/MakeTAGS +++ b/MakeTAGS @@ -176,7 +176,9 @@ $P/libc.pot: $(all-pot) po/header.pot > $@.new $(XGETTEXT) -d - --omit-header -n -s $^ >> $@.new mv -f $@.new $@ +ifeq ($(with-cvs),yes) test ! -d CVS || cvs $(CVSOPTS) ci -m'Regenerated from source files' $@ +endif $(subdirs:%=$P/%.pot): $P/%.pot: FORCE $(MAKE) -C $* no_deps=t ../$@ diff --git a/Makeconfig b/Makeconfig index ab01f95df8..f4c5573087 100644 --- a/Makeconfig +++ b/Makeconfig @@ -467,8 +467,9 @@ $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\ $(filter -Wl$(comma)-rpath-link=%,\ $(sysdep-LDFLAGS))))) define built-program-cmd -LD_LIBRARY_PATH=$(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ -$(elf-objpfx)$(rtld-installed-name) $(built-program-file) +$(elf-objpfx)$(rtld-installed-name) \ + --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ + $(built-program-file) endef endif diff --git a/elf/Makefile b/elf/Makefile index 093fc09369..739c230608 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -35,6 +35,7 @@ elide-routines.os = $(dl-routines) dl-support enbl-secure # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. rtld-routines := rtld $(dl-routines) dl-sysdep dl-minimal +ld-map = $(libc-map) distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ dl-hash.h soinit.c sofini.c ldd.sh.in ldd.bash.in eval.c \ genrtldtbl.awk atomicity.h dl-procinfo.h @@ -88,22 +89,22 @@ $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(common-objpfx)libc_pic.a # Do we need a linker script? rtld-ldscript-in := $(firstword $(wildcard $(+sysdep_dirs:%=%/rtld-ldscript.in))) -ifeq ($(versioning),yes) -RTLD-VERSIONS = -Wl,--version-script=$(libc-map) -endif - ifneq (,$(rtld-ldscript-in)) -LDFLAGS-rtld = -T $(objpfx)rtld-ldscript +rtld-ldscript = $(objpfx)rtld-ldscript +generated += rtld-ldscript + +LDFLAGS-rtld = -T $(rtld-ldscript) +before-compile += $(rtld-ldscript) -before-compile += $(objpfx)rtld-ldscript rtld-parms = $(wildcard $(+sysdep_dirs:%=%/rtld-parms)) include $(rtld-parms) -generated += rtld-ldscript -$(objpfx)rtld-ldscript: $(rtld-ldscript-in) $(rtld-parms) + +$(rtld-ldscript): $(rtld-ldscript-in) $(rtld-parms) sed -e 's#@@rtld-oformat@@#$(rtld-oformat)#' \ -e 's#@@rtld-arch@@#$(rtld-arch)#' \ -e 's#@@rtld-entry@@#$(rtld-entry)#' \ -e 's#@@rtld-base@@#$(rtld-base)#' $< >$@ +endif $(objpfx)ld.so: $(objpfx)librtld.os $(objpfx)rtld-ldscript $(rtld-link) -Wl,-soname=$(rtld-installed-name) @@ -111,18 +112,9 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(objpfx)rtld-ldscript define rtld-link $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ -Wl,-rpath=$(default-rpath) $(LDFLAGS-rtld) \ - $(filter-out $(objpfx)rtld-ldscript,$^) \ - $(RTLD-VERSIONS) + $(filter-out $(rtld-ldscript) $($(@F:.so=)-map),$^) \ + $(load-map-file:%=-Wl,--version-script=%) endef -else -$(objpfx)ld.so: $(objpfx)librtld.os - $(rtld-link) -Wl,-soname=$(rtld-installed-name) - -define rtld-link -$(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ - -Wl,-rpath=$(default-rpath) $^ $(RTLD-VERSIONS) -endef -endif # The dl code in the static libc needs a default library path. CFLAGS-dl-support.c = -D'DEFAULT_RPATH="$(default-rpath)"' diff --git a/elf/dl-load.c b/elf/dl-load.c index 91b8c2a48d..73cafcca37 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -1,5 +1,5 @@ /* Map in a shared object's segments from the file. - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -309,7 +309,7 @@ decompose_rpath (const char *rpath, size_t additional_room) void -_dl_init_paths (void) +_dl_init_paths (const char *llp) { static const char *trusted_dirs[] = { @@ -325,10 +325,15 @@ _dl_init_paths (void) variable. */ struct link_map *l; - /* First determine how many elements the LD_LIBRARY_PATH contents has. */ - const char *llp = getenv ("LD_LIBRARY_PATH"); + /* Number of elements in the library path. */ size_t nllp; + /* If the user has not specified a library path consider the environment + variable. */ + if (llp == NULL) + llp = getenv ("LD_LIBRARY_PATH"); + + /* First determine how many elements the LD_LIBRARY_PATH contents has. */ if (llp != NULL && *llp != '\0') { /* Simply count the number of colons. */ diff --git a/elf/dl-support.c b/elf/dl-support.c index c103d0e42e..5868656c4e 100644 --- a/elf/dl-support.c +++ b/elf/dl-support.c @@ -1,5 +1,5 @@ /* Support for dynamic linking code in static libc. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -58,7 +58,7 @@ non_dynamic_init (void) /* Initialize the data structures for the search paths for shared objects. */ - _dl_init_paths (); + _dl_init_paths (NULL); #ifdef DL_PLATFORM_INIT DL_PLATFORM_INIT; diff --git a/elf/link.h b/elf/link.h index c74e240492..7f2dc674db 100644 --- a/elf/link.h +++ b/elf/link.h @@ -1,5 +1,5 @@ /* Run-time dynamic linker data structures for loaded ELF shared objects. - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -443,7 +443,7 @@ extern void _dl_debug_state (void); extern struct r_debug *_dl_debug_initialize (ElfW(Addr) ldbase); /* Initialize the basic data structure for the search paths. */ -extern void _dl_init_paths (void); +extern void _dl_init_paths (const char *library_path); /* Gather the information needed to install the profiling tables and start the timers. */ diff --git a/elf/rtld.c b/elf/rtld.c index f1b45de1e0..9529b9c14e 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -264,6 +264,7 @@ dl_main (const ElfW(Phdr) *phdr, size_t file_size; char *file; int has_interp = 0; + const char *library_path = NULL; /* Overwrites LD_LIBRARY_PATH if given. */ /* Test whether we want to see the content of the auxiliary array passed up from the kernel. */ @@ -343,6 +344,15 @@ dl_main (const ElfW(Phdr) *phdr, --_dl_argc; ++_dl_argv; } + else if (! strcmp (_dl_argv[1], "--library-path") + && _dl_argc > 2) + { + library_path = _dl_argv[2]; + + _dl_skip_args += 2; + _dl_argc -= 2; + _dl_argv += 2; + } else break; @@ -484,7 +494,7 @@ of this helper program; chances are you did not intend to run this program.\n", /* Initialize the data structures for the search paths for shared objects. */ - _dl_init_paths (); + _dl_init_paths (library_path); preloadlist = getenv ("LD_PRELOAD"); if (preloadlist) diff --git a/intl/Makefile b/intl/Makefile index bb2c7bedf0..9ee9ba4ed4 100644 --- a/intl/Makefile +++ b/intl/Makefile @@ -42,12 +42,20 @@ ifdef gettext-srcdir %.h:: ../gpl2lgpl.sed $(gettext-srcdir)/intl/%.h; $(copysrc) locale.alias:: ../gpl2lgpl.sed $(gettext-srcdir)/misc/locale.alias; $(copysrc) +ifeq ($(with-cvs),yes) define copysrc sed -f $^ > $@.new chmod a-w $@.new mv -f $@.new $@ test ! -d CVS || cvs $(CVSOPTS) commit -m'Updated from $<' $@ endef +else +define copysrc +sed -f $^ > $@.new +chmod a-w $@.new +mv -f $@.new $@ +endef +endif endif diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c index 1573d6c002..0cd62fbfd4 100644 --- a/locale/programs/charmap.c +++ b/locale/programs/charmap.c @@ -253,11 +253,12 @@ parse_charmap (const char *filename) result->mb_cur_max = 1; if (result->mb_cur_min == 0) result->mb_cur_min = result->mb_cur_max; - if (result->mb_cur_min > result->mb_cur_max && !be_quiet) + if (result->mb_cur_min > result->mb_cur_max) { - error (0, 0, _("\ + if (!be_quiet) + error (0, 0, _("\ %s: must be greater than \n"), - cmfile->fname); + cmfile->fname); result->mb_cur_min = result->mb_cur_max; } diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c index 78a9cd92ac..57b97767af 100644 --- a/locale/programs/ld-collate.c +++ b/locale/programs/ld-collate.c @@ -239,9 +239,13 @@ collate_finish (struct localedef_t *locale, struct charset_t *charset) else value = 0; - if (value == 0 && !be_quiet) - error_at_line (0, 0, patch->fname, patch->lineno, - _("no weight defined for symbol `%s'"), patch->token); + if (value == 0) + { + if (!be_quiet) + error_at_line (0, 0, patch->fname, patch->lineno, + _("no weight defined for symbol `%s'"), + patch->token); + } else *patch->where.pos = value; } @@ -1477,7 +1481,7 @@ line after ellipsis must contain character definition")); pelem->ordering = (unsigned int *) obstack_copy (&collate->element_mem, data, (collate->nrules - * pelem->ordering_len) + + pelem->ordering_len) * sizeof (unsigned int)); /* `...' weights need to be adjusted. */ @@ -1490,13 +1494,16 @@ line after ellipsis must contain character definition")); (void *) &pelem->next) >= 0) { if (set_entry (&collate->result, name, sizeof (wchar_t), - (void *) pelem->next) < 0) + (void *) pelem) < 0) error (4, 0, _("cannot insert into result table")); } else - if (insert_entry (&collate->result, name, sizeof (wchar_t), - (void *) pelem->next) < 0) - error (4, 0, _("cannot insert into result table")); + { + pelem->next = NULL; + if (insert_entry (&collate->result, name, sizeof (wchar_t), + (void *) pelem) < 0) + error (4, 0, _("cannot insert into result table")); + } /* Increment counter. */ ++name[0]; diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c index 8ab70abb5a..f2f32cc214 100644 --- a/locale/programs/ld-ctype.c +++ b/locale/programs/ld-ctype.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -309,27 +309,34 @@ character %s'%s' in class `%s' must not be in class `%s'"), /* ... and now test as a special case. */ space_value = charset_find_value (charset, "SP", 2); - if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("character not defined in character map")); + if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("character not defined in character map")); + } else if (((cnt = BITPOS (tok_space), (ELEM (ctype, class_collection, , space_value) & BIT (tok_space)) == 0) || (cnt = BITPOS (tok_blank), (ELEM (ctype, class_collection, , space_value) - & BIT (tok_blank)) == 0)) - && !be_quiet) - error (0, 0, _(" character not in class `%s'"), - valid_table[cnt].name); + & BIT (tok_blank)) == 0))) + { + if (!be_quiet) + error (0, 0, _(" character not in class `%s'"), + valid_table[cnt].name); + } else if (((cnt = BITPOS (tok_punct), (ELEM (ctype, class_collection, , space_value) & BIT (tok_punct)) != 0) || (cnt = BITPOS (tok_graph), (ELEM (ctype, class_collection, , space_value) & BIT (tok_graph)) - != 0)) - && !be_quiet) - error (0, 0, _(" character must not be in class `%s'"), - valid_table[cnt].name); + != 0))) + { + if (!be_quiet) + error (0, 0, _(" character must not be in class `%s'"), + valid_table[cnt].name); + } else ELEM (ctype, class_collection, , space_value) |= BIT (tok_print); @@ -651,12 +658,14 @@ ctype_class_to (struct linereader *lr, struct localedef_t *locale, value = charset_find_value (charset, code->val.str.start, code->val.str.len); - assert (value >= ctype->last_class_char); - - for (cnt = ctype->last_class_char + 1; cnt <= value; ++cnt) - *find_idx (ctype, &ctype->class_collection, &ctype->class_collection_max, - &ctype->class_collection_act, cnt) - |= ctype->current_class_mask; + /* In the LC_CTYPE category it is no error when a character is + not found. This has to be ignored silently. */ + if ((wchar_t) ctype->last_class_char != ILLEGAL_CHAR_VALUE + && (wchar_t) value != ILLEGAL_CHAR_VALUE) + for (cnt = ctype->last_class_char + 1; cnt <= value; ++cnt) + *find_idx (ctype, &ctype->class_collection, &ctype->class_collection_max, + &ctype->class_collection_act, cnt) + |= ctype->current_class_mask; ctype->last_class_char = ILLEGAL_CHAR_VALUE; } @@ -940,11 +949,12 @@ set_class_defaults (struct locale_ctype_t *ctype, struct charset_t *charset) tmp[0] = ch; value = charset_find_value (charset, tmp, 1); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) { - error (0, 0, _("\ + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - tmp); + tmp); continue; } else @@ -1004,50 +1014,68 @@ character `%s' not defined while needed as default value"), unsigned int value; value = charset_find_value (charset, "space", 5); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "form-feed", 9); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "newline", 7); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "carriage-return", 15); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "tab", 3); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "vertical-tab", 12); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_space); } @@ -1070,18 +1098,24 @@ character `%s' not defined while needed as default value"), unsigned int value; value = charset_find_value (charset, "space", 5); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_blank); value = charset_find_value (charset, "tab", 3); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , value) |= BIT (tok_blank); } @@ -1116,10 +1150,13 @@ character `%s' not defined while needed as default value"), ctype->class_collection[cnt] |= BIT (tok_print); space = charset_find_value (charset, "space", 5); - if (space == ILLEGAL_CHAR_VALUE && !be_quiet) - error (0, 0, _("\ + if (space == ILLEGAL_CHAR_VALUE) + { + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - ""); + ""); + } else ELEM (ctype, class_collection, , space) |= BIT (tok_print); } @@ -1142,22 +1179,24 @@ character `%s' not defined while needed as default value"), tmp[1] = (char) ch; value_from = charset_find_value (charset, &tmp[1], 1); - if ((wchar_t) value_from == ILLEGAL_CHAR_VALUE && !be_quiet) + if ((wchar_t) value_from == ILLEGAL_CHAR_VALUE) { - error (0, 0, _("\ + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - tmp); + tmp); continue; } /* This conversion is implementation defined. */ tmp[1] = (char) (ch + ('A' - 'a')); value_to = charset_find_value (charset, &tmp[1], 1); - if ((wchar_t) value_to == ILLEGAL_CHAR_VALUE && !be_quiet) + if ((wchar_t) value_to == ILLEGAL_CHAR_VALUE) { - error (0, 0, _("\ + if (!be_quiet) + error (0, 0, _("\ character `%s' not defined while needed as default value"), - tmp); + tmp); continue; } diff --git a/locale/programs/ld-messages.c b/locale/programs/ld-messages.c index 31edb47a60..9353e1e49e 100644 --- a/locale/programs/ld-messages.c +++ b/locale/programs/ld-messages.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -41,7 +41,7 @@ #include "localeinfo.h" -void *xmalloc (size_t __n); +extern void *xmalloc (size_t __n); /* The real definition of the struct for the LC_MESSAGES locale. */ @@ -77,9 +77,12 @@ messages_finish (struct localedef_t *locale) = locale->categories[LC_MESSAGES].messages; /* The fields YESSTR and NOSTR are optional. */ - if (messages->yesexpr == NULL && !be_quiet) - error (0, 0, _("field `%s' in category `%s' undefined"), - "yesexpr", "LC_MESSAGES"); + if (messages->yesexpr == NULL) + { + if (!be_quiet) + error (0, 0, _("field `%s' in category `%s' undefined"), + "yesexpr", "LC_MESSAGES"); + } else { int result; @@ -98,9 +101,12 @@ no correct regular expression for field `%s' in category `%s': %s"), } } - if (messages->noexpr == NULL && !be_quiet) - error (0, 0, _("field `%s' in category `%s' undefined"), - "noexpr", "LC_MESSAGES"); + if (messages->noexpr == NULL) + { + if (!be_quiet) + error (0, 0, _("field `%s' in category `%s' undefined"), + "noexpr", "LC_MESSAGES"); + } else { int result; diff --git a/locale/programs/ld-monetary.c b/locale/programs/ld-monetary.c index cd30125a5a..d202d76399 100644 --- a/locale/programs/ld-monetary.c +++ b/locale/programs/ld-monetary.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -35,8 +35,8 @@ #include "localeinfo.h" #include "stringtrans.h" -void *xmalloc (size_t __n); -void *xrealloc (void *__ptr, size_t __n); +extern void *xmalloc (size_t __n); +extern void *xrealloc (void *__ptr, size_t __n); /* The real definition of the struct for the LC_NUMERIC locale. */ @@ -129,9 +129,12 @@ monetary_finish (struct localedef_t *locale) /* The international currency symbol must come from ISO 4217. */ if (monetary->int_curr_symbol != NULL) { - if (strlen (monetary->int_curr_symbol) != 4 && !be_quiet) - error (0, 0, _("\ + if (strlen (monetary->int_curr_symbol) != 4) + { + if (!be_quiet) + error (0, 0, _("\ value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length")); + } else if (bsearch (monetary->int_curr_symbol, valid_int_curr, NR_VALID_INT_CURR, sizeof (const char *), (comparison_fn_t) curr_strcmp) == NULL diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c index 60c54deb3a..e16a247430 100644 --- a/locale/programs/ld-time.c +++ b/locale/programs/ld-time.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -37,8 +37,8 @@ (((w) << 24) | (((w) & 0xff00) << 8) | (((w) >> 8) & 0xff00) | ((w) >> 24)) -void *xmalloc (size_t __n); -void *xrealloc (void *__p, size_t __n); +extern void *xmalloc (size_t __n); +extern void *xrealloc (void *__p, size_t __n); /* Entry describing an entry of the era specification. */ @@ -154,21 +154,23 @@ time_finish (struct localedef_t *locale) memcpy (str, time->era[idx], era_len + 1); /* First character must be + or - for the direction. */ - if (*str != '+' && *str != '-' && !be_quiet) + if (*str != '+' && *str != '-') { - error (0, 0, _("direction flag in string %d in `era' field" - " in category `%s' is not '+' nor '-'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("direction flag in string %d in `era' field" + " in category `%s' is not '+' nor '-'"), + idx + 1, "LC_TIME"); /* Default arbitrarily to '+'. */ time->era_entries[idx].direction = '+'; } else time->era_entries[idx].direction = *str; - if (*++str != ':' && !be_quiet) + if (*++str != ':') { - error (0, 0, _("direction flag in string %d in `era' field" - " in category `%s' is not a single character"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("direction flag in string %d in `era' field" + " in category `%s' is not a single character"), + idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } else @@ -176,18 +178,20 @@ time_finish (struct localedef_t *locale) /* Now the offset year. */ time->era_entries[idx].offset = strtol (str, &endp, 10); - if (endp == str && !be_quiet) + if (endp == str) { - error (0, 0, _("illegal number for offset in string %d in" - " `era' field in category `%s'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("illegal number for offset in string %d in" + " `era' field in category `%s'"), + idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } - else if (*endp != ':' && !be_quiet) + else if (*endp != ':') { - error (0, 0, _("garbage at end of offset value in string %d in" - " `era' field in category `%s'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("garbage at end of offset value in string %d in" + " `era' field in category `%s'"), + idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } else @@ -229,20 +233,23 @@ time_finish (struct localedef_t *locale) time->era_entries[idx].start_date[1] -= 1; time->era_entries[idx].start_date[2] = strtol (str, &endp, 10); - if (endp == str && !be_quiet) + if (endp == str) { invalid_start_date: - error (0, 0, _("illegal starting date in string %d in" - " `era' field in category `%s'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("illegal starting date in string %d in" + " `era' field in category `%s'"), + idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } - else if (*endp != ':' && !be_quiet) + else if (*endp != ':') { garbage_start_date: - error (0, 0, _("garbage at end of starting date in string %d" - " in `era' field in category `%s'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("garbage at end of starting date " + "in string %d in `era' field " + "in category `%s'"), + idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } else @@ -302,20 +309,23 @@ time_finish (struct localedef_t *locale) time->era_entries[idx].stop_date[1] -= 1; time->era_entries[idx].stop_date[2] = strtol (str, &endp, 10); - if (endp == str && !be_quiet) + if (endp == str) { invalid_stop_date: - error (0, 0, _("illegal stopping date in string %d in" - " `era' field in category `%s'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("illegal stopping date in string %d in" + " `era' field in category `%s'"), + idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } - else if (*endp != ':' && !be_quiet) + else if (*endp != ':') { garbage_stop_date: - error (0, 0, _("garbage at end of stopping date in string %d" - " in `era' field in category `%s'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("garbage at end of stopping date " + "in string %d in `era' field " + "in category `%s'"), + idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } else @@ -339,10 +349,11 @@ time_finish (struct localedef_t *locale) } } - if ((str == NULL || *str == '\0') && !be_quiet) + if (str == NULL || *str == '\0') { - error (0, 0, _("missing era name in string %d in `era' field" - " in category `%s'"), idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("missing era name in string %d in `era' field" + " in category `%s'"), idx + 1, "LC_TIME"); time->era_entries[idx].name = time->era_entries[idx].format = ""; } @@ -350,11 +361,12 @@ time_finish (struct localedef_t *locale) { time->era_entries[idx].name = strsep (&str, ":"); - if ((str == NULL || *str == '\0') && !be_quiet) + if (str == NULL || *str == '\0') { - error (0, 0, _("missing era format in string %d in `era'" - " field in category `%s'"), - idx + 1, "LC_TIME"); + if (!be_quiet) + error (0, 0, _("missing era format in string %d in `era'" + " field in category `%s'"), + idx + 1, "LC_TIME"); time->era_entries[idx].name = time->era_entries[idx].format = ""; } diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c index 6385df47e8..ad7e9d5fb4 100644 --- a/locale/programs/locfile.c +++ b/locale/programs/locfile.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -1015,11 +1015,12 @@ write_locale_data (const char *output_path, const char *category, save_err = errno; } - if (fd == -1 && !be_quiet) + if (fd == -1) { - error (0, save_err, _("\ + if (!be_quiet) + error (0, save_err, _("\ cannot open output file `%s' for category `%s'"), - fname, category); + fname, category); return; } } @@ -1039,10 +1040,11 @@ cannot open output file `%s' for category `%s'"), if (maxiov > 0) step = MIN (maxiov, step); - if (writev (fd, &vec[cnt], step) < 0 && !be_quiet) + if (writev (fd, &vec[cnt], step) < 0) { - error (0, errno, _("failure while writing data for category `%s'"), - category); + if (!be_quiet) + error (0, errno, _("failure while writing data for category `%s'"), + category); break; } } diff --git a/localedata/Makefile b/localedata/Makefile index ff3e9f07a0..2d45558eb1 100644 --- a/localedata/Makefile +++ b/localedata/Makefile @@ -37,9 +37,13 @@ test-output := $(foreach s, .out .xout, \ generated := $(test-input) $(test-output) generated-dirs := $(basename $(test-input)) en_US +test-names := test1 test2 test3 test4 +test-srcs := $(addprefix tests/,$(addsuffix .cm,$(test-names)) \ + $(addsuffix .def,$(test-names))) + distribute := CHECKSUMS tst-fmon.sh tst-fmon.data ChangeLog sort-test.sh \ README mnemonic.ds fr_CA,2.13.in de_DE.in da_DK.in \ - $(charmaps) $(locales) + $(charmaps) $(locales) $(test-srcs) # Get $(inst_i18ndir) defined. include ../Makeconfig @@ -58,4 +62,5 @@ ifeq (no,$(cross-compiling)) tests: $(objpfx)collate-test $(objpfx)xfrm-test $(objpfx)tst-fmon $(SHELL) -e sort-test.sh $(common-objpfx) $(test-input) $(SHELL) -e tst-fmon.sh $(common-objpfx) tst-fmon.data + $(SHELL) -e tst-locale.sh $(common-objpfx) endif diff --git a/localedata/locales/tr_TR b/localedata/locales/tr_TR index db94a83a1b..8de6ea6d4a 100644 --- a/localedata/locales/tr_TR +++ b/localedata/locales/tr_TR @@ -20,6 +20,11 @@ escape_char / % Distribution and use is free, also % for commercial purposes. +% Corrections by: +% 1998-01-11T15:54:39 +% Onur Tolga Sehitoglu , +% Dept. of Comp. Eng. METU/Ankara Turkey + LC_COLLATE % Base collation scheme: 1994-03-22 @@ -34,7 +39,7 @@ LC_COLLATE % members of equivalence classes % 3. A distinction is made with regards % to case as noted below. -% 4. Special characters are ignored +% 4. Special characters are ignored % when comparing letters, but then % they are considered % 5. The alphabets are sorted in order @@ -62,10 +67,10 @@ collating-symbol % and Spanish being treated % as one letter. -% The ...... collating +% The ...... collating % symbols have defined weights as % the last character in a group of -% Latin letters. They are used +% Latin letters. They are used % to specify deltas by locales using % a locale as the default ordering % and by "replace-after" statements @@ -987,7 +992,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + "";"";"";IGNORE "";"";"";IGNORE "";"";"";IGNORE @@ -1002,7 +1007,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1017,7 +1022,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1036,7 +1041,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE > ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1087,14 +1092,14 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE > ;;;IGNORE > ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + "";"";"";IGNORE "";"";"";IGNORE "";"";"";IGNORE @@ -1117,7 +1122,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1136,7 +1141,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1171,14 +1176,14 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + "";"";"";IGNORE "";"";"";IGNORE ;;;IGNORE ;;;IGNORE > ;;;IGNORE > ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1193,7 +1198,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1215,7 +1220,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE > ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1224,7 +1229,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1244,7 +1249,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE <'n> ;;;IGNORE - + "";"";"";IGNORE "";"";"";IGNORE ;;;IGNORE @@ -1312,7 +1317,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE "";"";"";IGNORE @@ -1323,10 +1328,10 @@ UNDEFINED IGNORE;IGNORE;IGNORE

;;;IGNORE

;;;IGNORE

;;;;;;/ + ;;;;;;;/ + >;;;;;;/ + ;;>;;;;/ + >;;;;;;/ + >;;;;;/ + ;>;;;;;/ + ;;;>;;;/ + ;;;;;;/ + ;>;;;;/ + >;;;;;/ + ;;;>;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;>;;/ + ;;;;;;/ + ;;;;>;/ + >;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;<=">;;<%">;/ + ;;;;;;/ + ;;;;;/ + ;;;;;/ + ;;>;;;/ + >;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;>;;/ + ;;;;;/ + >;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;>;/ + ;;>;;/ + ;;;;;/ + ;;;;;;/ + >;;;;;/ + '>;!>;2>;?>;/ + -.>;;;;/ + ;;;;;/ + '>;!>;2>;?>;/ + -.>;;;;;/ + '>;!>;2>;?>;/ + -.>;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;; + +lower ;;;;;;;/ + ;;;;;;;/ + ;

;;;;;;/ + ;;;;;;;/ + ;>;;;;;/ + ;;;>;;;/ + ;>;;;;;/ + ;>;;;;/ + ;;>;;;;/ + ;;;;;>;/ + ;;;;;;/ + ;;;>;;;/ + ;>;;;;/ + ;;;;>;;/ + ;;;;;;/ + ;;;<'n>;;;/ + ;;;;;;/ + ;>;;;;;/ + ;;;;;;/ + ;>;>;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;<*s>;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;<='>;;<%'>;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;>;;;/ + >;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;>;;/ + ;;;;;/ + >;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;>;/ + ;;>;;/ + ;;;;;/ + ;;;;;;/ + >;;;;;/ + '>;!>;2>;?>;/ + -.>;;;;/ + ;;;;;/ + '>;!>;2>;?>;/ + -.>;;;;;/ + '>;!>;2>;?>;/ + -.>;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;<(a)>;/ + <(b)>;<(c)>;<(d)>;<(e)>;<(f)>;/ + <(g)>;<(h)>;<(i)>;<(j)>;<(k)>;/ + <(l)>;<(m)>;<(n)>;<(o)>;<(p)>;/ + <(q)>;<(r)>;<(s)>;<(t)>;<(u)>;/ + <(v)>;<(w)>;<(x)>;<(y)>;<(z)>;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;; + +alpha ;;;;;;;/ + ;;;;;;;/ + ;

;;;;;;/ + ;;;;;;;/ + ;;;;;;;/ + ;;;;;;

;/ + ;;;;;;;/ + ;;;<-->;;;/ + >;;;;;;/ + ;;>;;;;/ + >;;;;;;/ + >;;;;;/ + ;>;;;;;/ + ;;>;;;;/ + ;;;;>;;/ + ;;>;;;;/ + ;;>;;;/ + ;;;>;;/ + ;;;;;;/ + ;;;;;>;/ + >;;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;>;>;;/ + ;;;;;>;/ + >;;;;;/ + ;;;;;;/ + ;;;;>;/ + >;;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;<'n>;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;>;/ + >;;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;;/ + >;>;>;>;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + <;S>;<1/>>;<1!>;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;<*s>;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;<=">;;/ + <%">;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + <='>;;<%'>;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;

;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;>;>;/ + ;;;;>;/ + >;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;>;/ + >;;;;;/ + ;;;;;/ + ;;;>;>;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;/ + ;;;;;/ + ;;>;>;;/ + ;;;>;/ + >;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;>;/ + >;;;;;/ + ;;;;'>;/ + '>;!>;!>;2>;/ + 2>;?>;?>;-.>;/ + -.>;;;;/ + ;;;;;/ + ;;;;;/ + ;;;'>;'>;/ + !>;!>;2>;2>;/ + ?>;?>;-.>;-.>;/ + ;;;;;/ + ;;;'>;'>;/ + !>;!>;2>;2>;/ + ?>;?>;-.>;-.>;/ + ;;;;;/ + ;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;/ + ;;;;;/ + ;;;;;<(a)>;/ + <(b)>;<(c)>;<(d)>;<(e)>;<(f)>;/ + <(g)>;<(h)>;<(i)>;<(j)>;<(k)>;/ + <(l)>;<(m)>;<(n)>;<(o)>;<(p)>;/ + <(q)>;<(r)>;<(s)>;<(t)>;<(u)>;/ + <(v)>;<(w)>;<(x)>;<(y)>;<(z)>;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;;;/ + ;;;; + +cntrl ;;;;;;/ + ;;;;;;/ + ;;;;
;;/ + ;;;;;;/ + ;;;;;;/ + ;;
;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;;;;/ + ;;;; + +punct ;<">;;;<%>;<&>;<'>;/ + <(>;<)>;<*>;<+>;<,>;<->;<.>;/ + ;<:>;<;>;<<>;<=>;>;;/ + ;<<(>;;<)/>>;<'/>>;/ + <_>;<'!>;<(!>;;;<'?>;/ + ;;;;;;/ + ;<':>;;<-a>;<<<>;;/ + ;<'m>;;<+->;<2S>;<3S>;/ + <''>;;;<.M>;<',>;<1S>;/ + <-o>;/>>;<14>;<12>;<34>;/ + ;<*X>;<-:>;<'<>;<'(>;<'.>;/ + <'0>;<';>;<1?>;<'">;<'G>;<,G>;/ + ;;<'*>;<'%>;<.*>;;/ + <,+>;<;+>;;<++>;<:+>;<"+>;/ + <=+>;;<'+>;<1+>;<3+>;<0+>;/ + <0a>;<1a>;<2a>;<3a>;<4a>;<5a>;/ + <6a>;<7a>;<8a>;<9a>;<,,>;;/ + ;<,!>;<,'>;;<;!>;<;'>;/ + ;;;<;;>;<1N>;<1M>;/ + <3M>;<4M>;<6M>;;;<1T>;/ + <1H>;<-1>;<-N>;<-M>;<-3>;;/ + <=2>;<'6>;<'9>;<.9>;<9'>;<"6>;/ + <"9>;<:9>;<9">;;;/ + ;<..>;<.3>;<%0>;<1'>;<2'>;/ + <3'>;<1">;<2">;<3">;;<<1>;/ + 1>;<:X>;;<'->;<0S>;/ + <4S>;<5S>;<6S>;<7S>;<8S>;<9S>;/ + <+S>;<-S>;<=S>;<(S>;<)S>;<0s>;/ + <1s>;<2s>;<3s>;<4s>;<5s>;<6s>;/ + <7s>;<8s>;<9s>;<+s>;<-s>;<=s>;/ + <(s>;<)s>;;
  • ;;;/ + ;;;;;;/ + ;;;;<13>;<23>;/ + <15>;<25>;<35>;<45>;<16>;<56>;/ + <18>;<38>;<58>;<78>;<1R>;<2R>;/ + <3R>;<4R>;<5R>;<6R>;<7R>;<8R>;/ + <9R>;;
    ;;<50R>;/ + <100R>;<500R>;<1000R>;<1r>;/ + <2r>;<3r>;<4r>;<5r>;<6r>;<7r>;/ + <8r>;<9r>;;
    ;;<50r>;/ + <100r>;<500r>;<1000r>;/ + <1000RCD>;<5000R>;<10000R>;/ + <<->;<-!>;<-/>>;<-v>;<>;/ + ;<;>;>;/ + <;;V>;<<=>;<=/>>;/ + <==>;;;;;;/ + ;<(->;<-)>;<*P>;<+Z>;<-2>;/ + <-+>;<.+>;;<*->;;;/ + ;<0(>;<00>;<-L>;<-V>;;/ + ;;<(U>;<)U>;;;/ + ;<.:>;<:.>;<:R>;<::>;;/ + ;;;;<=?>;;/ + ;<=3>;<=<>;=>;<<*>;/ + <*/>>;;>;<(C>;<)C>;/ + <(_>;<)_>;<0.>;<02>;<-T>;<.P>;/ + <:3>;;<<7>;7>;<7<>;/ + <7/>>;;<(A>;;;;/ + <;>;;<1h>;<3h>;/ + <2h>;<4h>;<1j>;<2j>;<3j>;<4j>;/ + <1-o>;<2-o>;<3-o>;<4-o>;<5-o>;/ + <6-o>;<7-o>;<8-o>;<9-o>;<10-o>;/ + <11-o>;<12-o>;<13-o>;<14-o>;/ + <15-o>;<16-o>;<17-o>;<18-o>;/ + <19-o>;<20-o>;<(1)>;<(2)>;/ + <(3)>;<(4)>;<(5)>;<(6)>;<(7)>;/ + <(8)>;<(9)>;<(10)>;<(11)>;/ + <(12)>;<(13)>;<(14)>;<(15)>;/ + <(16)>;<(17)>;<(18)>;<(19)>;/ + <(20)>;<1.>;<2.>;<3.>;<4.>;/ + <5.>;<6.>;<7.>;<8.>;<9.>;<10.>;/ + <11.>;<12.>;<13.>;<14.>;<15.>;/ + <16.>;<17.>;<18.>;<19.>;<20.>;/ + <0-o>;;;;;<3->;/ + <3_>;<3!>;<3//>;<4->;<4_>;<4!>;/ + <4//>;;;;;
    ;/ +
    ;
    ;;;;;/ + ;
  • ;;;IGNORE - + ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1347,7 +1352,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE "";"";"";IGNORE @@ -1367,7 +1372,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1388,7 +1393,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE > ;;;IGNORE ;;;IGNORE ;;;IGNORE - + "";"";"";IGNORE "";"";"";IGNORE ;;;IGNORE @@ -1451,7 +1456,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1460,7 +1465,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1475,14 +1480,14 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1501,7 +1506,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -1518,7 +1523,7 @@ UNDEFINED IGNORE;IGNORE;IGNORE ;;;IGNORE ;;;IGNORE ;;;IGNORE - + ;;;IGNORE ;;;IGNORE ;;;IGNORE @@ -2086,69 +2091,983 @@ order_end END LC_COLLATE LC_CTYPE -copy "en_DK" + +digit <0>;<1>;<2>;<3>;<4>;/ + <5>;<6>;<7>;<8>;<9> + +xdigit <0>;<1>;<2>;<3>;<4>;/ + <5>;<6>;<7>;<8>;<9>;/ + ;;;;;;/ + ;;;;; + +blank ;; + +space ;;;;/ + ;; + +upper ;;;;;;;/ + ;;;;;;;/ + ;