about summary refs log tree commit diff
path: root/locale
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-02-05 05:57:24 +0000
committerUlrich Drepper <drepper@redhat.com>2001-02-05 05:57:24 +0000
commit93693c4d820dac2f218e144f5126a5a761f1cfbf (patch)
tree7371d326f24a3c9d73fed75e7792133d0d654a50 /locale
parent377c725f8e2dba91af36af27206e6deb85cf6e6f (diff)
downloadglibc-93693c4d820dac2f218e144f5126a5a761f1cfbf.tar.gz
glibc-93693c4d820dac2f218e144f5126a5a761f1cfbf.tar.xz
glibc-93693c4d820dac2f218e144f5126a5a761f1cfbf.zip
Update.
2001-02-04  Ulrich Drepper  <drepper@redhat.com>

	* iconv/Makefile (iconv_prog-modules): Define.  Add vpath to find
	files in locale/programs.  Add CFLAGS definition to allow compiling
	localedef files.
	* iconv/dummy-repertoire.c: New file.
	* iconv/iconv_charmap.c: New file.
	* iconv/iconv_prog.h: New file.
	* iconv/iconv_prog.c: Make verbose and omit_invalid global.
	(main): If parameter for -f and -t contain slashes try first to resolve
	the strings as filenames of charmap files.  Use them for conversion
	in this case.
	* iconvdata/run-iconv-test.sh: If charmaps exist also run tests with
	iconv getting charmap names as parameters.
	* locale/programs/linereader.c (lr_token): Take extra parameters
	verbose and pass it to get_string.
	(get_string): Take extra parameters verbose.
	* locale/programs/charmap.c (parse_charmap): Take extra parameters
	verbose and be_quiet.  Change all callers of lr_token and
	parse_charmap.
	* locale/programs/charmap.h: Likewise.
	* locale/programs/ld-address.c: Likewise.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/ld-ctype.c: Likewise.
	* locale/programs/ld-identification.c: Likewise.
	* locale/programs/ld-measurement.c: Likewise.
	* locale/programs/ld-messages.c: Likewise.
	* locale/programs/ld-monetary.c: Likewise.
	* locale/programs/ld-name.c: Likewise.
	* locale/programs/ld-numeric.c: Likewise.
	* locale/programs/ld-paper.c: Likewise.
	* locale/programs/ld-telephone.c: Likewise.
	* locale/programs/ld-time.c: Likewise.
	* locale/programs/linereader.c: Likewise.
	* locale/programs/linereader.h: Likewise.
	* locale/programs/localedef.c: Likewise.
	* locale/programs/locfile.c: Likewise.
	* locale/programs/locfile.h: Likewise.
	* locale/programs/repertoire.c: Likewise.
Diffstat (limited to 'locale')
-rw-r--r--locale/programs/charmap.c29
-rw-r--r--locale/programs/charmap.h5
-rw-r--r--locale/programs/ld-address.c16
-rw-r--r--locale/programs/ld-collate.c67
-rw-r--r--locale/programs/ld-ctype.c85
-rw-r--r--locale/programs/ld-identification.c18
-rw-r--r--locale/programs/ld-measurement.c12
-rw-r--r--locale/programs/ld-messages.c12
-rw-r--r--locale/programs/ld-monetary.c28
-rw-r--r--locale/programs/ld-name.c12
-rw-r--r--locale/programs/ld-numeric.c18
-rw-r--r--locale/programs/ld-paper.c12
-rw-r--r--locale/programs/ld-telephone.c12
-rw-r--r--locale/programs/ld-time.c34
-rw-r--r--locale/programs/linereader.c17
-rw-r--r--locale/programs/linereader.h5
-rw-r--r--locale/programs/localedef.c2
-rw-r--r--locale/programs/locfile.c8
-rw-r--r--locale/programs/locfile.h8
-rw-r--r--locale/programs/repertoire.c6
20 files changed, 209 insertions, 197 deletions
diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c
index 59f317a699..14cb4f4089 100644
--- a/locale/programs/charmap.c
+++ b/locale/programs/charmap.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -34,7 +34,6 @@
 #include "linereader.h"
 #include "charmap.h"
 #include "charmap-dir.h"
-#include "locfile.h"
 #include "repertoire.h"
 
 #include <assert.h>
@@ -47,7 +46,8 @@
 extern void *xmalloc (size_t __n);
 
 /* Prototypes for local functions.  */
-static struct charmap_t *parse_charmap (struct linereader *cmfile);
+static struct charmap_t *parse_charmap (struct linereader *cmfile,
+					int verbose, int be_quiet);
 static void new_width (struct linereader *cmfile, struct charmap_t *result,
 		       const char *from, const char *to,
 		       unsigned long int width);
@@ -55,6 +55,9 @@ static void charmap_new_char (struct linereader *lr, struct charmap_t *cm,
 			      int nbytes, char *bytes, const char *from,
 			      const char *to, int decimal_ellipsis, int step);
 
+
+static const char *null_pointer;
+
 static struct linereader *
 cmlr_open (const char *directory, const char *name, kw_hash_fct_t hf)
 {
@@ -82,7 +85,7 @@ cmlr_open (const char *directory, const char *name, kw_hash_fct_t hf)
 }
 
 struct charmap_t *
-charmap_read (const char *filename)
+charmap_read (const char *filename, int verbose, int be_quiet, int use_default)
 {
   struct charmap_t *result = NULL;
 
@@ -129,14 +132,14 @@ charmap_read (const char *filename)
 
       if (cmfile != NULL)
 	{
-	  result = parse_charmap (cmfile);
+	  result = parse_charmap (cmfile, verbose, be_quiet);
 
 	  if (result == NULL && !be_quiet)
 	    error (0, errno, _("character map file `%s' not found"), filename);
 	}
     }
 
-  if (result == NULL && filename != NULL)
+  if (result == NULL && filename != NULL && strchr (filename, '/') == NULL)
     {
       /* OK, one more try.  We also accept the names given to the
 	 character sets in the files.  Sometimes they differ from the
@@ -170,7 +173,7 @@ charmap_read (const char *filename)
 
 		  cmfile = cmlr_open (CHARMAP_PATH, dirent, charmap_hash);
 		  if (cmfile != NULL)
-		    result = parse_charmap (cmfile);
+		    result = parse_charmap (cmfile, verbose, be_quiet);
 
 		  break;
 		}
@@ -180,13 +183,13 @@ charmap_read (const char *filename)
 	}
     }
 
-  if (result == NULL)
+  if (result == NULL && DEFAULT_CHARMAP != NULL)
     {
       struct linereader *cmfile;
 
       cmfile = cmlr_open (CHARMAP_PATH, DEFAULT_CHARMAP, charmap_hash);
       if (cmfile != NULL)
-	result = parse_charmap (cmfile);
+	result = parse_charmap (cmfile, verbose, be_quiet);
 
       if (result == NULL)
 	error (4, errno, _("default character map file `%s' not found"),
@@ -220,7 +223,7 @@ charmap_read (const char *filename)
      must have the same value as the 'wchar_t' code, which in glibc is the
      same as the Unicode code, which for all of the enumerated characters
      is identical to the ASCII code. */
-  if (result != NULL)
+  if (result != NULL && use_default)
     {
       static const char basic_charset[] =
 	{
@@ -256,7 +259,7 @@ character map `%s' is not ASCII compatible, locale not ISO C compliant\n"),
 
 
 static struct charmap_t *
-parse_charmap (struct linereader *cmfile)
+parse_charmap (struct linereader *cmfile, int verbose, int be_quiet)
 {
   struct charmap_t *result;
   int state;
@@ -293,7 +296,7 @@ parse_charmap (struct linereader *cmfile)
   while (1)
     {
       /* What's on?  */
-      struct token *now = lr_token (cmfile, NULL, NULL);
+      struct token *now = lr_token (cmfile, NULL, NULL, verbose);
       enum token_t nowtok = now->tok;
       struct token *arg;
 
@@ -351,7 +354,7 @@ parse_charmap (struct linereader *cmfile)
 	    }
 
 	  /* We know that we need an argument.  */
-	  arg = lr_token (cmfile, NULL, NULL);
+	  arg = lr_token (cmfile, NULL, NULL, verbose);
 
 	  switch (nowtok)
 	    {
diff --git a/locale/programs/charmap.h b/locale/programs/charmap.h
index 88fd078ed9..7b82c52abe 100644
--- a/locale/programs/charmap.h
+++ b/locale/programs/charmap.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -65,7 +65,8 @@ struct charseq
 
 
 /* Prototypes for charmap handling functions.  */
-extern struct charmap_t *charmap_read (const char *filename);
+extern struct charmap_t *charmap_read (const char *filename, int verbose,
+				       int be_quiet, int use_default);
 
 /* Return the value stored under the given key in the hashing table.  */
 extern struct charseq *charmap_find_value (const struct charmap_t *charmap,
diff --git a/locale/programs/ld-address.c b/locale/programs/ld-address.c
index e35305d44c..a2b17bbccb 100644
--- a/locale/programs/ld-address.c
+++ b/locale/programs/ld-address.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -434,7 +434,7 @@ address_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -460,7 +460,7 @@ address_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ignore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -477,7 +477,7 @@ address_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_string)					      \
 	    goto err_label;						      \
 	  if (address->cat != NULL)					      \
@@ -514,7 +514,7 @@ address_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_string && arg->tok != tok_number)		      \
 	    goto err_label;						      \
 	  if (address->cat != NULL)					      \
@@ -552,7 +552,7 @@ address_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_number)					      \
 	    goto err_label;						      \
 	  else if (address->cat != 0)					      \
@@ -566,7 +566,7 @@ address_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_ADDRESS'.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -584,7 +584,7 @@ address_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index b228834eaa..2ce4d46105 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -508,7 +508,7 @@ read_directions (struct linereader *ldfile, struct token *arg,
 	}
 
       if (valid)
-	arg = lr_token (ldfile, charmap, repertoire);
+	arg = lr_token (ldfile, charmap, repertoire, verbose);
 
       if (arg->tok == tok_eof || arg->tok == tok_eol || arg->tok == tok_comma
 	  || arg->tok == tok_semicolon)
@@ -572,7 +572,7 @@ read_directions (struct linereader *ldfile, struct token *arg,
 	    }
 	}
 
-      arg = lr_token (ldfile, charmap, repertoire);
+      arg = lr_token (ldfile, charmap, repertoire, verbose);
     }
 
   if (nrules == 0)
@@ -697,7 +697,7 @@ insert_weights (struct linereader *ldfile, struct element_t *elem,
 
   weight_cnt = 0;
 
-  arg = lr_token (ldfile, charmap, repertoire);
+  arg = lr_token (ldfile, charmap, repertoire, verbose);
   do
     {
       if (arg->tok == tok_eof || arg->tok == tok_eol)
@@ -867,11 +867,11 @@ insert_weights (struct linereader *ldfile, struct element_t *elem,
 	  break;
 	}
 
-      arg = lr_token (ldfile, charmap, repertoire);
+      arg = lr_token (ldfile, charmap, repertoire, verbose);
       /* This better should be the end of the line or a semicolon.  */
       if (arg->tok == tok_semicolon)
 	/* OK, ignore this and read the next token.  */
-	arg = lr_token (ldfile, charmap, repertoire);
+	arg = lr_token (ldfile, charmap, repertoire, verbose);
       else if (arg->tok != tok_eof && arg->tok != tok_eol)
 	{
 	  /* It's a syntax error.  */
@@ -2567,7 +2567,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -2575,18 +2575,19 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
   if (nowtok == tok_copy)
     {
       state = 2;
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       if (now->tok != tok_string)
 	{
 	  SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE");
 
 	skip_category:
 	  do
-	    now = lr_token (ldfile, charmap, NULL);
+	    now = lr_token (ldfile, charmap, NULL, verbose);
 	  while (now->tok != tok_eof && now->tok != tok_end);
 
 	  if (now->tok != tok_eof
-	      || (now = lr_token (ldfile, charmap, NULL), now->tok == tok_eof))
+	      || (now = lr_token (ldfile, charmap, NULL, verbose),
+		  now->tok == tok_eof))
 	    lr_error (ldfile, _("%s: premature end of file"), "LC_COLLATE");
 	  else if (now->tok != tok_lc_collate)
 	    {
@@ -2615,7 +2616,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 
       lr_ignore_rest (ldfile, 1);
 
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
@@ -2636,7 +2637,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ingore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -2645,7 +2646,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	{
 	case tok_copy:
 	  /* Allow copying other locales.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok != tok_string)
 	    goto err_label;
 
@@ -2668,7 +2669,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	  if (state != 0)
 	    goto err_label;
 
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok != tok_number)
 	    goto err_label;
 	  if (collate->col_weight_max != -1)
@@ -2691,7 +2692,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	  if (state != 0)
 	    goto err_label;
 
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok != tok_bsymbol)
 	    goto err_label;
 	  else if (!ignore_content)
@@ -2738,7 +2739,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	  if (state != 0)
 	    goto err_label;
 
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok != tok_bsymbol)
 	    goto err_label;
 	  else
@@ -2747,7 +2748,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	      size_t symbol_len = arg->val.str.lenmb;
 
 	      /* Next the `from' keyword.  */
-	      arg = lr_token (ldfile, charmap, repertoire);
+	      arg = lr_token (ldfile, charmap, repertoire, verbose);
 	      if (arg->tok != tok_from)
 		{
 		  free ((char *) symbol);
@@ -2758,7 +2759,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	      ldfile->translate_strings = 1;
 
 	      /* Finally the string with the replacement.  */
-	      arg = lr_token (ldfile, charmap, repertoire);
+	      arg = lr_token (ldfile, charmap, repertoire, verbose);
 
 	      ldfile->return_widestr = 0;
 	      ldfile->translate_strings = 0;
@@ -2807,7 +2808,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	  if (state != 0 && state != 2)
 	    goto err_label;
 
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok != tok_bsymbol)
 	    goto err_label;
 	  else
@@ -2818,12 +2819,12 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	      size_t endsymbol_len = 0;
 	      enum token_t ellipsis = tok_none;
 
-	      arg = lr_token (ldfile, charmap, repertoire);
+	      arg = lr_token (ldfile, charmap, repertoire, verbose);
 	      if (arg->tok == tok_ellipsis2 || arg->tok == tok_ellipsis4)
 		{
 		  ellipsis = arg->tok;
 
-		  arg = lr_token (ldfile, charmap, repertoire);
+		  arg = lr_token (ldfile, charmap, repertoire, verbose);
 		  if (arg->tok != tok_bsymbol)
 		    {
 		      free (symbol);
@@ -2954,7 +2955,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	  if (state != 0)
 	    goto err_label;
 
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok != tok_bsymbol)
 	    goto err_label;
 	  else
@@ -2965,7 +2966,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
 	      size_t symname_len;
 	      struct symbol_t *symval;
 
-	      arg = lr_token (ldfile, charmap, repertoire);
+	      arg = lr_token (ldfile, charmap, repertoire, verbose);
 	      if (arg->tok != tok_bsymbol)
 		{
 		  if (newname != NULL)
@@ -3022,7 +3023,7 @@ error while adding equivalent collating symbol"));
 
 	case tok_script:
 	  /* We get told about the scripts we know.  */
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok != tok_bsymbol)
 	    goto err_label;
 	  else
@@ -3074,7 +3075,7 @@ error while adding equivalent collating symbol"));
 	  /* The 14652 draft does not specify whether all `order_start' lines
 	     must contain the same number of sort-rules, but 14651 does.  So
 	     we require this here as well.  */
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok == tok_bsymbol)
 	    {
 	      /* This better should be a section name.  */
@@ -3133,7 +3134,7 @@ error while adding equivalent collating symbol"));
 		    }
 
 		  /* Next should come the end of the line or a semicolon.  */
-		  arg = lr_token (ldfile, charmap, repertoire);
+		  arg = lr_token (ldfile, charmap, repertoire, verbose);
 		  if (arg->tok == tok_eol)
 		    {
 		      uint32_t cnt;
@@ -3156,7 +3157,7 @@ error while adding equivalent collating symbol"));
 		    }
 
 		  /* Get the next token.  */
-		  arg = lr_token (ldfile, charmap, repertoire);
+		  arg = lr_token (ldfile, charmap, repertoire, verbose);
 		}
 	    }
 	  else
@@ -3237,7 +3238,7 @@ error while adding equivalent collating symbol"));
 	    goto err_label;
 	  state = 3;
 
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok == tok_bsymbol || arg->tok == tok_ucs4)
 	    {
 	      /* Find this symbol in the sequence table.  */
@@ -3366,7 +3367,7 @@ error while adding equivalent collating symbol"));
 	  state = 5;
 
 	  /* Get the name of the sections we are adding after.  */
-	  arg = lr_token (ldfile, charmap, repertoire);
+	  arg = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (arg->tok == tok_bsymbol)
 	    {
 	      /* Now find a section with this name.  */
@@ -3399,7 +3400,7 @@ error while adding equivalent collating symbol"));
 		    {
 		      lr_ignore_rest (ldfile, 0);
 
-		      now = lr_token (ldfile, charmap, NULL);
+		      now = lr_token (ldfile, charmap, NULL, verbose);
 		    }
 		  while (now->tok == tok_reorder_sections_after
 			 || now->tok == tok_reorder_sections_end
@@ -3596,7 +3597,7 @@ error while adding equivalent collating symbol"));
 
 		  /* Process the rest of the line which might change
                      the collation rules.  */
-		  arg = lr_token (ldfile, charmap, repertoire);
+		  arg = lr_token (ldfile, charmap, repertoire, verbose);
 		  if (arg->tok != tok_eof && arg->tok != tok_eol)
 		    read_directions (ldfile, arg, charmap, repertoire,
 				     collate);
@@ -3710,7 +3711,7 @@ error while adding equivalent collating symbol"));
 		error (0, 0, _("%s: missing `reorder-sections-end' keyword"),
 		       "LC_COLLATE");
 	    }
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -3727,7 +3728,7 @@ error while adding equivalent collating symbol"));
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index fd427f162e..24a53919f2 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -1878,7 +1878,7 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
 
       /* Next we have one or more transliterations.  They are
 	 separated by semicolons.  */
-      now = lr_token (ldfile, charmap, repertoire);
+      now = lr_token (ldfile, charmap, repertoire, verbose);
 
       if (!first && (now->tok == tok_semicolon || now->tok == tok_eol))
 	{
@@ -1939,7 +1939,7 @@ read_translit_ignore_entry (struct linereader *ldfile,
      single characters, possibly defining a range when an ellipsis is used.  */
   while (1)
     {
-      struct token *now = lr_token (ldfile, charmap, repertoire);
+      struct token *now = lr_token (ldfile, charmap, repertoire, verbose);
       struct translit_ignore_t *newp;
       uint32_t from;
 
@@ -1983,7 +1983,7 @@ read_translit_ignore_entry (struct linereader *ldfile,
 
       /* Now we expect either a semicolon, an ellipsis, or the end of the
 	 line.  */
-      now = lr_token (ldfile, charmap, repertoire);
+      now = lr_token (ldfile, charmap, repertoire, verbose);
 
       if (now->tok == tok_ellipsis2 || now->tok == tok_ellipsis2_2)
 	{
@@ -1992,7 +1992,7 @@ read_translit_ignore_entry (struct linereader *ldfile,
 	  uint32_t to;
 	  int step = now->tok == tok_ellipsis2_2 ? 2 : 1;
 
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 
 	  if (now->tok == tok_eol || now->tok == tok_eof)
 	    {
@@ -2033,7 +2033,7 @@ to-value <U%0*X> of range is smaller than from-value <U%0*X>"),
 	    }
 
 	  /* And the next token.  */
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	}
 
       if (now->tok == tok_eol || now->tok == tok_eof)
@@ -2084,7 +2084,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -2092,18 +2092,19 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
   /* If we see `copy' now we are almost done.  */
   if (nowtok == tok_copy)
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       if (now->tok != tok_string)
 	{
 	  SYNTAX_ERROR (_("%s: syntax error"), "LC_CTYPE");
 
 	skip_category:
 	  do
-	    now = lr_token (ldfile, charmap, NULL);
+	    now = lr_token (ldfile, charmap, NULL, verbose);
 	  while (now->tok != tok_eof && now->tok != tok_end);
 
 	  if (now->tok != tok_eof
-	      || (now = lr_token (ldfile, charmap, NULL), now->tok == tok_eof))
+	      || (now = lr_token (ldfile, charmap, NULL, verbose),
+		  now->tok == tok_eof))
 	    lr_error (ldfile, _("%s: premature end of file"), "LC_CTYPE");
 	  else if (now->tok != tok_lc_ctype)
 	    {
@@ -2132,7 +2133,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
 
       lr_ignore_rest (ldfile, 1);
 
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
@@ -2157,7 +2158,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ingore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -2165,14 +2166,14 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
       switch (nowtok)
 	{
 	case tok_charclass:
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  while (now->tok == tok_ident || now->tok == tok_string)
 	    {
 	      ctype_class_new (ldfile, ctype, now->val.str.startmb);
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (now->tok != tok_semicolon)
 		break;
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	    }
 	  if (now->tok != tok_eol)
 	    SYNTAX_ERROR (_("\
@@ -2180,14 +2181,14 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
 	  break;
 
 	case tok_charconv:
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  while (now->tok == tok_ident || now->tok == tok_string)
 	    {
 	      ctype_map_new (ldfile, ctype, now->val.str.startmb, charmap);
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (now->tok != tok_semicolon)
 		break;
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	    }
 	  if (now->tok != tok_eol)
 	    SYNTAX_ERROR (_("\
@@ -2205,7 +2206,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
 
 	  /* We simply forget the `class' keyword and use the following
 	     operand to determine the bit.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok == tok_ident || now->tok == tok_string)
 	    {
 	      /* Must can be one of the predefined class names.  */
@@ -2251,7 +2252,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
 	    }
 
 	  /* The next character must be a semicolon.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok != tok_semicolon)
 	    goto err_label;
 	  goto read_charclass;
@@ -2283,7 +2284,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
 	  last_token = tok_none;
 	  ellipsis_token = tok_none;
 	  step = 1;
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  while (now->tok != tok_eol && now->tok != tok_eof)
 	    {
 	      uint32_t wch;
@@ -2420,7 +2421,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 		}
 
 	      /* Next we expect a semicolon or the end of the line.  */
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (now->tok == tok_eol || now->tok == tok_eof)
 		break;
 
@@ -2440,7 +2441,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 
 		  ellipsis_token = now->tok;
 
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		  continue;
 		}
 
@@ -2448,7 +2449,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 		goto err_label;
 
 	      /* And get the next character.  */
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 
 	      ellipsis_token = tok_none;
 	      step = 1;
@@ -2523,7 +2524,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 
 	  /* We simply forget the `map' keyword and use the following
 	     operand to determine the mapping.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok == tok_ident || now->tok == tok_string)
 	    {
 	      size_t cnt;
@@ -2545,7 +2546,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 	  else
 	    mapidx = now->tok - tok_toupper;
 
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  /* This better should be a semicolon.  */
 	  if (now->tok != tok_semicolon)
 	    goto err_label;
@@ -2561,7 +2562,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 	    }
 	  ctype->tomap_done[mapidx] = 1;
 
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  while (now->tok != tok_eol && now->tok != tok_eof)
 	    {
 	      struct charseq *from_seq;
@@ -2574,24 +2575,24 @@ with character code range values one must use the absolute ellipsis `...'"));
 		goto err_label;
 
 	      /* Next comes the from-value.  */
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (get_character (now, charmap, repertoire, &from_seq,
 				 &from_wch) != 0)
 		goto err_label;
 
 	      /* The next is a comma.  */
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (now->tok != tok_comma)
 		goto err_label;
 
 	      /* And the other value.  */
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (get_character (now, charmap, repertoire, &to_seq,
 				 &to_wch) != 0)
 		goto err_label;
 
 	      /* And the last thing is the closing brace.  */
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (now->tok != tok_close_brace)
 		goto err_label;
 
@@ -2613,9 +2614,9 @@ with character code range values one must use the absolute ellipsis `...'"));
 		}
 
 	      /* Now comes a semicolon or the end of the line/file.  */
-	      now = lr_token (ldfile, charmap, NULL);
+	      now = lr_token (ldfile, charmap, NULL, verbose);
 	      if (now->tok == tok_semicolon)
-		now = lr_token (ldfile, charmap, NULL);
+		now = lr_token (ldfile, charmap, NULL, verbose);
 	    }
 	  break;
 
@@ -2627,7 +2628,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 	      do
 		{
 		  lr_ignore_rest (ldfile, 0);
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		}
 	      while (now->tok != tok_translit_end && now->tok != tok_eof);
 
@@ -2650,7 +2651,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 	  ldfile->return_widestr = 1;
 
 	  /* We proceed until we see the `translit_end' token.  */
-	  while (now = lr_token (ldfile, charmap, repertoire),
+	  while (now = lr_token (ldfile, charmap, repertoire, verbose),
 		 now->tok != tok_translit_end && now->tok != tok_eof)
 	    {
 	      if (now->tok == tok_eol)
@@ -2664,7 +2665,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 		  const char *repertoire_name;
 		  struct translit_include_t *include_stmt, **include_ptr;
 
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		  /* This should be a string or an identifier.  In any
 		     case something to name a locale.  */
 		  if (now->tok != tok_string && now->tok != tok_ident)
@@ -2677,12 +2678,12 @@ with character code range values one must use the absolute ellipsis `...'"));
 		  locale_name = now->val.str.startmb;
 
 		  /* Next should be a semicolon.  */
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		  if (now->tok != tok_semicolon)
 		    goto translit_syntax;
 
 		  /* Now the repertoire name.  */
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		  if ((now->tok != tok_string && now->tok != tok_ident)
 		      || now->val.str.startmb == NULL)
 		    goto translit_syntax;
@@ -2716,7 +2717,7 @@ with character code range values one must use the absolute ellipsis `...'"));
 		    {
 		      /* We expect a single character or string as the
 			 argument.  */
-		      now = lr_token (ldfile, charmap, NULL);
+		      now = lr_token (ldfile, charmap, NULL, verbose);
 		      wstr = read_widestring (ldfile, now, charmap,
 					      repertoire);
 
@@ -2746,7 +2747,7 @@ previous definition was here"));
 			break;
 
 		      /* Maybe there is another replacement we can use.  */
-		      now = lr_token (ldfile, charmap, NULL);
+		      now = lr_token (ldfile, charmap, NULL, verbose);
 		      if (now->tok == tok_eol || now->tok == tok_eof)
 			{
 			  /* Nothing found.  We tell the user.  */
@@ -2837,7 +2838,7 @@ previous definition was here"));
 
 	case tok_end:
 	  /* Next we assume `LC_CTYPE'.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok == tok_eof)
 	    break;
 	  if (now->tok == tok_eol)
@@ -2856,7 +2857,7 @@ previous definition was here"));
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-identification.c b/locale/programs/ld-identification.c
index bc252a018f..12e32f859e 100644
--- a/locale/programs/ld-identification.c
+++ b/locale/programs/ld-identification.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -301,7 +301,7 @@ identification_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -328,7 +328,7 @@ identification_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ignore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -345,7 +345,7 @@ identification_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_string)					      \
 	    goto err_label;						      \
 	  if (identification->cat != NULL)				      \
@@ -386,15 +386,15 @@ identification_read (struct linereader *ldfile, struct localedef_t *result,
 	    }
 
 	  /* We expect two operands.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok != tok_string && arg->tok != tok_ident)
 	    goto err_label;
 	  /* Next is a semicolon.  */
-	  cattok = lr_token (ldfile, charmap, NULL);
+	  cattok = lr_token (ldfile, charmap, NULL, verbose);
 	  if (cattok->tok != tok_semicolon)
 	    goto err_label;
 	  /* Now a LC_xxx identifier.  */
-	  cattok = lr_token (ldfile, charmap, NULL);
+	  cattok = lr_token (ldfile, charmap, NULL, verbose);
 	  switch (cattok->tok)
 	    {
 #define CATEGORY(lname, uname) \
@@ -430,7 +430,7 @@ identification_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_IDENTIFICATION'.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -448,7 +448,7 @@ identification_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-measurement.c b/locale/programs/ld-measurement.c
index f628026473..07eb3cb032 100644
--- a/locale/programs/ld-measurement.c
+++ b/locale/programs/ld-measurement.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -164,7 +164,7 @@ measurement_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -191,7 +191,7 @@ measurement_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ingore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -208,7 +208,7 @@ measurement_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_number)					      \
 	    goto err_label;						      \
 	  else if (measurement->cat != 0)				      \
@@ -222,7 +222,7 @@ measurement_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_MEASUREMENT'.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -240,7 +240,7 @@ measurement_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-messages.c b/locale/programs/ld-messages.c
index 6ca2d8ad4f..cbf240eff4 100644
--- a/locale/programs/ld-messages.c
+++ b/locale/programs/ld-messages.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -245,7 +245,7 @@ messages_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -273,7 +273,7 @@ messages_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ignore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -297,7 +297,7 @@ messages_read (struct linereader *ldfile, struct localedef_t *result,
 	      lr_ignore_rest (ldfile, 0);				      \
 	      break;							      \
 	    }								      \
-	  now = lr_token (ldfile, charmap, repertoire);			      \
+	  now = lr_token (ldfile, charmap, repertoire, verbose);	      \
 	  if (now->tok != tok_string)					      \
 	    goto syntax_error;						      \
 	  else if (!ignore_content && now->val.str.startmb == NULL)	      \
@@ -317,7 +317,7 @@ messages_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_MESSAGES'.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -334,7 +334,7 @@ messages_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-monetary.c b/locale/programs/ld-monetary.c
index c64daf27ab..7779e87392 100644
--- a/locale/programs/ld-monetary.c
+++ b/locale/programs/ld-monetary.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -642,7 +642,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -668,7 +668,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ignore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -685,7 +685,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  now = lr_token (ldfile, charmap, NULL);			      \
+	  now = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (now->tok != tok_string)					      \
 	    goto err_label;						      \
 	  else if (monetary->cat != NULL)				      \
@@ -720,7 +720,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 	    }								      \
 									      \
 	  ldfile->return_widestr = 1;					      \
-	  now = lr_token (ldfile, charmap, repertoire);			      \
+	  now = lr_token (ldfile, charmap, repertoire, verbose);	      \
 	  if (now->tok != tok_string)					      \
 	    goto err_label;						      \
 	  if (monetary->cat != NULL)					      \
@@ -761,7 +761,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  now = lr_token (ldfile, charmap, NULL);			      \
+	  now = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (now->tok != tok_minus1 && now->tok != tok_number)		      \
 	    goto err_label;						      \
 	  else if (monetary->cat != -2)					      \
@@ -813,7 +813,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;
 	    }
 
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok != tok_minus1 && now->tok != tok_number)
 	    goto err_label;
 	  else
@@ -861,11 +861,11 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 		    grouping[act++] = now->val.num;
 
 		  /* Next must be semicolon.  */
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		  if (now->tok != tok_semicolon)
 		    break;
 
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		}
 	      while (now->tok == tok_minus1 || now->tok == tok_number);
 
@@ -891,7 +891,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;
 	    }
 
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok != tok_number)
 	    goto err_label;
 	  if (now->val.num == 0)
@@ -908,11 +908,11 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 	  if (!ignore_content)
 	    monetary->conversion_rate[0] = now->val.num;
 	  /* Next must be a semicolon.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok != tok_semicolon)
 	    goto err_label;
 	  /* And another number.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok != tok_number)
 	    goto err_label;
 	  if (now->val.num == 0)
@@ -925,7 +925,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_MONETARY'.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok == tok_eof)
 	    break;
 	  if (now->tok == tok_eol)
@@ -942,7 +942,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-name.c b/locale/programs/ld-name.c
index 135e9bc7eb..7940c0362a 100644
--- a/locale/programs/ld-name.c
+++ b/locale/programs/ld-name.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -223,7 +223,7 @@ name_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -249,7 +249,7 @@ name_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ignore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -266,7 +266,7 @@ name_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_string)					      \
 	    goto err_label;						      \
 	  if (name->cat != NULL)					      \
@@ -291,7 +291,7 @@ name_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_NAME'.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -308,7 +308,7 @@ name_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-numeric.c b/locale/programs/ld-numeric.c
index 80a557c317..77633ef1f9 100644
--- a/locale/programs/ld-numeric.c
+++ b/locale/programs/ld-numeric.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -207,7 +207,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -233,7 +233,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ingore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -251,7 +251,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
 	    }								      \
 									      \
 	  ldfile->return_widestr = 1;					      \
-	  now = lr_token (ldfile, charmap, repertoire);			      \
+	  now = lr_token (ldfile, charmap, repertoire, verbose);	      \
 	  if (now->tok != tok_string)					      \
 	    goto err_label;						      \
 	  if (numeric->cat != NULL)					      \
@@ -291,7 +291,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;
 	    }
 
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok != tok_minus1 && now->tok != tok_number)
 	    goto err_label;
 	  else
@@ -338,11 +338,11 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
 		    grouping[act++] = now->val.num;
 
 		  /* Next must be semicolon.  */
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		  if (now->tok != tok_semicolon)
 		    break;
 
-		  now = lr_token (ldfile, charmap, NULL);
+		  now = lr_token (ldfile, charmap, NULL, verbose);
 		}
 	      while (now->tok == tok_minus1 || now->tok == tok_number);
 
@@ -361,7 +361,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_NUMERIC'.  */
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  if (now->tok == tok_eof)
 	    break;
 	  if (now->tok == tok_eol)
@@ -378,7 +378,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-paper.c b/locale/programs/ld-paper.c
index 2b7c6f4f8e..776c780834 100644
--- a/locale/programs/ld-paper.c
+++ b/locale/programs/ld-paper.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -166,7 +166,7 @@ paper_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -192,7 +192,7 @@ paper_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ingore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -209,7 +209,7 @@ paper_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_number)					      \
 	    goto err_label;						      \
 	  else if (paper->cat != 0)					      \
@@ -224,7 +224,7 @@ paper_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_PAPER'.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -241,7 +241,7 @@ paper_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-telephone.c b/locale/programs/ld-telephone.c
index 19ba12d1bb..2d59079c66 100644
--- a/locale/programs/ld-telephone.c
+++ b/locale/programs/ld-telephone.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -233,7 +233,7 @@ telephone_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -259,7 +259,7 @@ telephone_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ingore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, NULL);
+	  now = lr_token (ldfile, charmap, NULL, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -276,7 +276,7 @@ telephone_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  arg = lr_token (ldfile, charmap, NULL);			      \
+	  arg = lr_token (ldfile, charmap, NULL, verbose);		      \
 	  if (arg->tok != tok_string)					      \
 	    goto err_label;						      \
 	  if (telephone->cat != NULL)					      \
@@ -299,7 +299,7 @@ telephone_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_TELEPHONE'.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 	  if (arg->tok == tok_eof)
 	    break;
 	  if (arg->tok == tok_eol)
@@ -316,7 +316,7 @@ telephone_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
index ad4914a154..1475953cce 100644
--- a/locale/programs/ld-time.c
+++ b/locale/programs/ld-time.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -904,7 +904,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 
   do
     {
-      now = lr_token (ldfile, charmap, repertoire);
+      now = lr_token (ldfile, charmap, repertoire, verbose);
       nowtok = now->tok;
     }
   while (nowtok == tok_eol);
@@ -930,7 +930,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
       /* Ingore empty lines.  */
       if (nowtok == tok_eol)
 	{
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	  nowtok = now->tok;
 	  continue;
 	}
@@ -949,7 +949,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 									      \
 	  for (cnt = 0; cnt < max; ++cnt)				      \
 	    {								      \
-	      now = lr_token (ldfile, charmap, repertoire);		      \
+	      now = lr_token (ldfile, charmap, repertoire, verbose);	      \
 	      if (now->tok == tok_eol)					      \
 		{							      \
 		  if (cnt < min)					      \
@@ -981,7 +981,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 		}							      \
 									      \
 	      /* Match the semicolon.  */				      \
-	      now = lr_token (ldfile, charmap, repertoire);		      \
+	      now = lr_token (ldfile, charmap, repertoire, verbose);	      \
 	      if (now->tok != tok_semicolon && now->tok != tok_eol)	      \
 		break;							      \
 	    }								      \
@@ -995,7 +995,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 	      								      \
 	      if (now->tok == tok_semicolon)				      \
 		{							      \
-		  now = lr_token (ldfile, charmap, repertoire);		      \
+		  now = lr_token (ldfile, charmap, repertoire, verbose);      \
 		  if (now->tok == tok_eol)				      \
 		    lr_error (ldfile, _("extra trailing semicolon"));	      \
 		  else if (now->tok == tok_string)			      \
@@ -1031,7 +1031,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 	    }
 	  do
 	    {
-	      now = lr_token (ldfile, charmap, repertoire);
+	      now = lr_token (ldfile, charmap, repertoire, verbose);
 	      if (now->tok != tok_string)
 		goto err_label;
 	      if (!ignore_content && (now->val.str.startmb == NULL
@@ -1053,7 +1053,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 					 * sizeof (char *));
 		  time->wera[time->num_era++] = now->val.str.startwc;
 		}
-	      now = lr_token (ldfile, charmap, repertoire);
+	      now = lr_token (ldfile, charmap, repertoire, verbose);
 	      if (now->tok != tok_eol && now->tok != tok_semicolon)
 		goto err_label;
 	    }
@@ -1070,7 +1070,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  now = lr_token (ldfile, charmap, repertoire);			      \
+	  now = lr_token (ldfile, charmap, repertoire, verbose);	      \
 	  if (now->tok != tok_string)					      \
 	    goto err_label;						      \
 	  else if (time->cat != NULL)					      \
@@ -1112,7 +1112,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;							      \
 	    }								      \
 									      \
-	  now = lr_token (ldfile, charmap, repertoire);			      \
+	  now = lr_token (ldfile, charmap, repertoire, verbose);	      \
 	  if (now->tok != tok_number)					      \
 	    goto err_label;						      \
 	  else if (time->cat != 0)					      \
@@ -1135,25 +1135,25 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 	      break;
 	    }
 
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (now->tok != tok_number)
 	    goto err_label;
 	  time->week_ndays = now->val.num;
 
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (now->tok != tok_semicolon)
 	    goto err_label;
 
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (now->tok != tok_number)
 	    goto err_label;
 	  time->week_1stday = now->val.num;
 
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (now->tok != tok_semicolon)
 	    goto err_label;
 
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (now->tok != tok_number)
 	    goto err_label;
 	  time->week_1stweek = now->val.num;
@@ -1163,7 +1163,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 
 	case tok_end:
 	  /* Next we assume `LC_TIME'.  */
-	  now = lr_token (ldfile, charmap, repertoire);
+	  now = lr_token (ldfile, charmap, repertoire, verbose);
 	  if (now->tok == tok_eof)
 	    break;
 	  if (now->tok == tok_eol)
@@ -1180,7 +1180,7 @@ time_read (struct linereader *ldfile, struct localedef_t *result,
 	}
 
       /* Prepare for the next round.  */
-      now = lr_token (ldfile, charmap, repertoire);
+      now = lr_token (ldfile, charmap, repertoire, verbose);
       nowtok = now->tok;
     }
 
diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
index 01f5c9d692..5dba62f796 100644
--- a/locale/programs/linereader.c
+++ b/locale/programs/linereader.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -31,7 +31,11 @@
 #include "charmap.h"
 #include "error.h"
 #include "linereader.h"
-#include "localedef.h"
+
+/* Prototypes for a few program-wide used functions.  */
+extern void *xmalloc (size_t __n);
+extern void *xrealloc (void *__p, size_t __n);
+extern char *xstrdup (const char *__str);
 
 
 /* Prototypes for local functions.  */
@@ -40,7 +44,8 @@ static struct token *get_symname (struct linereader *lr);
 static struct token *get_ident (struct linereader *lr);
 static struct token *get_string (struct linereader *lr,
 				 const struct charmap_t *charmap,
-				 const struct repertoire_t *repertoire);
+				 const struct repertoire_t *repertoire,
+				 int verbose);
 
 
 struct linereader *
@@ -158,7 +163,7 @@ extern char *program_name;
 
 struct token *
 lr_token (struct linereader *lr, const struct charmap_t *charmap,
-	  const struct repertoire_t *repertoire)
+	  const struct repertoire_t *repertoire, int verbose)
 {
   int ch;
 
@@ -290,7 +295,7 @@ lr_token (struct linereader *lr, const struct charmap_t *charmap,
       return &lr->token;
 
     case '"':
-      return get_string (lr, charmap, repertoire);
+      return get_string (lr, charmap, repertoire, verbose);
 
     case '-':
       ch = lr_getc (lr);
@@ -563,7 +568,7 @@ get_ident (struct linereader *lr)
 
 static struct token *
 get_string (struct linereader *lr, const struct charmap_t *charmap,
-	    const struct repertoire_t *repertoire)
+	    const struct repertoire_t *repertoire, int verbose)
 {
   int return_widestr = lr->return_widestr;
   char *buf;
diff --git a/locale/programs/linereader.h b/locale/programs/linereader.h
index 77fa61a002..94802fcaa7 100644
--- a/locale/programs/linereader.h
+++ b/locale/programs/linereader.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@gnu.org>.
 
@@ -91,7 +91,8 @@ extern void lr_close (struct linereader *lr);
 extern int lr_next (struct linereader *lr);
 extern struct token *lr_token (struct linereader *lr,
 			       const struct charmap_t *charmap,
-			       const struct repertoire_t *repertoire);
+			       const struct repertoire_t *repertoire,
+			       int verbose);
 
 
 #define lr_error(lr, fmt, args...) \
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index 197e61ebf6..f57c46714c 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -190,7 +190,7 @@ main (int argc, char *argv[])
     error (3, 0, _("FATAL: system does not define `_POSIX2_LOCALEDEF'"));
 
   /* Process charmap file.  */
-  charmap = charmap_read (charmap_file);
+  charmap = charmap_read (charmap_file, verbose, be_quiet, 1);
 
   /* Add the first entry in the locale list.  */
   memset (&global, '\0', sizeof (struct localedef_t));
diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c
index 082524821a..4dafaef19f 100644
--- a/locale/programs/locfile.c
+++ b/locale/programs/locfile.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -95,7 +95,7 @@ locfile_read (struct localedef_t *result, struct charmap_t *charmap)
     /* Parse locale definition file and store result in RESULT.  */
   while (1)
     {
-      struct token *now = lr_token (ldfile, charmap, NULL);
+      struct token *now = lr_token (ldfile, charmap, NULL, verbose);
       enum token_t nowtok = now->tok;
       struct token *arg;
 
@@ -111,7 +111,7 @@ locfile_read (struct localedef_t *result, struct charmap_t *charmap)
 	case tok_escape_char:
 	case tok_comment_char:
 	  /* We need an argument.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 
 	  if (arg->tok != tok_ident)
 	    {
@@ -138,7 +138,7 @@ argument to `%s' must be a single character"),
 
 	case tok_repertoiremap:
 	  /* We need an argument.  */
-	  arg = lr_token (ldfile, charmap, NULL);
+	  arg = lr_token (ldfile, charmap, NULL, verbose);
 
 	  if (arg->tok != tok_ident)
 	    {
diff --git a/locale/programs/locfile.h b/locale/programs/locfile.h
index 96e2a110df..a259e521d4 100644
--- a/locale/programs/locfile.h
+++ b/locale/programs/locfile.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -54,7 +54,7 @@ handle_copy (struct linereader *ldfile, struct charmap_t *charmap,
   struct token *now;
   int warned = 0;
 
-  now = lr_token (ldfile, charmap, NULL);
+  now = lr_token (ldfile, charmap, NULL, verbose);
   if (now->tok != tok_string)
     lr_error (ldfile, _("expect string argument for `copy'"));
   else if (!ignore_content)
@@ -74,7 +74,7 @@ locale name should consist only of portable characters"));
 
   /* The rest of the line must be empty and the next keyword must be
      `END xxx'.  */
-  while ((now = lr_token (ldfile, charmap, NULL))->tok != tok_end
+  while ((now = lr_token (ldfile, charmap, NULL, verbose))->tok != tok_end
 	 && now->tok != tok_eof)
     {
       if (warned == 0)
@@ -90,7 +90,7 @@ no other keyword shall be specified when `copy' is used"));
   if (now->tok != tok_eof)
     {
       /* Handle `END xxx'.  */
-      now = lr_token (ldfile, charmap, NULL);
+      now = lr_token (ldfile, charmap, NULL, verbose);
 
       if (now->tok != token)
 	lr_error (ldfile, _("\
diff --git a/locale/programs/repertoire.c b/locale/programs/repertoire.c
index a33ecc72cc..66bcf74c6a 100644
--- a/locale/programs/repertoire.c
+++ b/locale/programs/repertoire.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -149,7 +149,7 @@ repertoire_read (const char *filename)
   while (1)
     {
       /* What's on?  */
-      struct token *now = lr_token (repfile, NULL, NULL);
+      struct token *now = lr_token (repfile, NULL, NULL, verbose);
       enum token_t nowtok = now->tok;
       struct token *arg;
 
@@ -168,7 +168,7 @@ repertoire_read (const char *filename)
 	  if (nowtok == tok_escape_char || nowtok == tok_comment_char)
 	    {
 	      /* We know that we need an argument.  */
-	      arg = lr_token (repfile, NULL, NULL);
+	      arg = lr_token (repfile, NULL, NULL, verbose);
 
 	      if (arg->tok != tok_ident)
 		{