* inet/getnetgrent_r.c (innetgr): Add int* parameter to getfct
	definition and pass &errno in use of this variable.
	Reported by Simon Wilkinson <simon@sxw.org.uk> [PR libc/2911].

2002-02-04  Andreas Schwab  <schwab@suse.de>

	* locale/programs/localedef.h (WITH_CUR_LOCALE): Define.
	* locale/programs/charmap-dir.c: Wrap calls that output messages
	with WITH_CUR_LOCALE.  Include "localedef.h" first.
	* locale/programs/charmap.c: 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/repertoire.c: Likewise.

2002-02-05  Ulrich Drepper  <drepper@redhat.com>
This commit is contained in:
Ulrich Drepper 2002-02-05 23:29:24 +00:00
parent 475361200b
commit f2b98f97eb
22 changed files with 453 additions and 368 deletions

View File

@ -1,3 +1,33 @@
2002-02-05 Ulrich Drepper <drepper@redhat.com>
* inet/getnetgrent_r.c (innetgr): Add int* parameter to getfct
definition and pass &errno in use of this variable.
Reported by Simon Wilkinson <simon@sxw.org.uk> [PR libc/2911].
2002-02-04 Andreas Schwab <schwab@suse.de>
* locale/programs/localedef.h (WITH_CUR_LOCALE): Define.
* locale/programs/charmap-dir.c: Wrap calls that output messages
with WITH_CUR_LOCALE. Include "localedef.h" first.
* locale/programs/charmap.c: 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/repertoire.c: Likewise.
2002-02-05 Ulrich Drepper <drepper@redhat.com> 2002-02-05 Ulrich Drepper <drepper@redhat.com>
* elf/rtld.c (_dl_start_final): Determine load address to locate * elf/rtld.c (_dl_start_final): Determine load address to locate

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. /* Copyright (C) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -298,7 +298,7 @@ innetgr (const char *netgroup, const char *host, const char *user,
{ {
int (*setfct) (const char *, struct __netgrent *); int (*setfct) (const char *, struct __netgrent *);
void (*endfct) (struct __netgrent *); void (*endfct) (struct __netgrent *);
int (*getfct) (struct __netgrent *, char *, size_t); int (*getfct) (struct __netgrent *, char *, size_t, int *);
struct name_list *known = NULL; struct name_list *known = NULL;
struct name_list *needed = NULL; struct name_list *needed = NULL;
int result = 0; int result = 0;
@ -328,7 +328,7 @@ innetgr (const char *netgroup, const char *host, const char *user,
{ {
char buffer[1024]; char buffer[1024];
while ((*getfct) (&entry, buffer, sizeof buffer) while ((*getfct) (&entry, buffer, sizeof buffer, &errno)
== NSS_STATUS_SUCCESS) == NSS_STATUS_SUCCESS)
{ {
if (entry.type == group_val) if (entry.type == group_val)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000,2001 Free Software Foundation, Inc. /* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -28,11 +28,9 @@
#include <unistd.h> #include <unistd.h>
#include <sys/stat.h> #include <sys/stat.h>
#include "localedef.h"
#include "charmap-dir.h" #include "charmap-dir.h"
extern void *xmalloc (size_t n);
extern void *xrealloc (void *p, size_t n);
/* The data type of a charmap directory being traversed. */ /* The data type of a charmap directory being traversed. */
struct charmap_dir struct charmap_dir
{ {
@ -58,8 +56,8 @@ charmap_opendir (const char *directory)
dir = opendir (directory); dir = opendir (directory);
if (dir == NULL) if (dir == NULL)
{ {
error (1, errno, gettext ("cannot read character map directory `%s'"), WITH_CUR_LOCALE (error (1, errno, gettext ("\
directory); cannot read character map directory `%s'"), directory));
return NULL; return NULL;
} }

View File

@ -29,8 +29,9 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <error.h>
#include "error.h" #include "localedef.h"
#include "linereader.h" #include "linereader.h"
#include "charmap.h" #include "charmap.h"
#include "charmap-dir.h" #include "charmap-dir.h"
@ -43,8 +44,6 @@
#include "charmap-kw.h" #include "charmap-kw.h"
extern void *xmalloc (size_t __n);
/* Prototypes for local functions. */ /* 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); int verbose, int be_quiet);
@ -133,7 +132,8 @@ charmap_read (const char *filename, int verbose, int be_quiet, int use_default)
result = parse_charmap (cmfile, verbose, be_quiet); result = parse_charmap (cmfile, verbose, be_quiet);
if (result == NULL && !be_quiet) if (result == NULL && !be_quiet)
error (0, errno, _("character map file `%s' not found"), filename); WITH_CUR_LOCALE (error (0, errno, _("\
character map file `%s' not found"), filename));
} }
} }
@ -190,8 +190,8 @@ charmap_read (const char *filename, int verbose, int be_quiet, int use_default)
result = parse_charmap (cmfile, verbose, be_quiet); result = parse_charmap (cmfile, verbose, be_quiet);
if (result == NULL) if (result == NULL)
error (4, errno, _("default character map file `%s' not found"), WITH_CUR_LOCALE (error (4, errno, _("\
DEFAULT_CHARMAP); default character map file `%s' not found"), DEFAULT_CHARMAP));
} }
/* Test of ASCII compatibility of locale encoding. /* Test of ASCII compatibility of locale encoding.
@ -247,9 +247,9 @@ charmap_read (const char *filename, int verbose, int be_quiet, int use_default)
while (*p++ != '\0'); while (*p++ != '\0');
if (failed) if (failed)
fprintf (stderr, _("\ WITH_CUR_LOCALE (fprintf (stderr, _("\
character map `%s' is not ASCII compatible, locale not ISO C compliant\n"), character map `%s' is not ASCII compatible, locale not ISO C compliant\n"),
result->code_set_name); result->code_set_name));
} }
return result; return result;
@ -324,9 +324,9 @@ parse_charmap (struct linereader *cmfile, int verbose, int be_quiet)
if (result->mb_cur_min > result->mb_cur_max) if (result->mb_cur_min > result->mb_cur_max)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: <mb_cur_max> must be greater than <mb_cur_min>\n"), %s: <mb_cur_max> must be greater than <mb_cur_min>\n"),
cmfile->fname); cmfile->fname));
result->mb_cur_min = result->mb_cur_max; result->mb_cur_min = result->mb_cur_max;
} }
@ -829,14 +829,16 @@ only WIDTH definitions are allowed to follow the CHARMAP definition"));
continue; continue;
default: default:
error (5, 0, _("%s: error in state machine"), __FILE__); WITH_CUR_LOCALE (error (5, 0, _("%s: error in state machine"),
__FILE__));
/* NOTREACHED */ /* NOTREACHED */
} }
break; break;
} }
if (state != 91 && !be_quiet) if (state != 91 && !be_quiet)
error (0, 0, _("%s: premature end of file"), cmfile->fname); WITH_CUR_LOCALE (error (0, 0, _("%s: premature end of file"),
cmfile->fname));
lr_close (cmfile); lr_close (cmfile);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -29,6 +29,7 @@
#include <assert.h> #include <assert.h>
#include "localedef.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -128,8 +129,8 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (address == NULL) if (address == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_ADDRESS"); No definition for %s category found"), "LC_ADDRESS"));
address_startup (NULL, locale, 0); address_startup (NULL, locale, 0);
address = locale->categories[LC_ADDRESS].address; address = locale->categories[LC_ADDRESS].address;
nothing = 1; nothing = 1;
@ -139,8 +140,8 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (address->postal_fmt == NULL) if (address->postal_fmt == NULL)
{ {
if (! nothing) if (! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_ADDRESS", "postal_fmt"); "LC_ADDRESS", "postal_fmt"));
/* Use as the default value the value of the i18n locale. */ /* Use as the default value the value of the i18n locale. */
address->postal_fmt = "%a%N%f%N%d%N%b%N%s %h %e %r%N%C-%z %T%N%c%N"; address->postal_fmt = "%a%N%f%N%d%N%b%N%s %h %e %r%N%C-%z %T%N%c%N";
} }
@ -151,8 +152,8 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
const char *cp = address->postal_fmt; const char *cp = address->postal_fmt;
if (*cp == '\0') if (*cp == '\0')
error (0, 0, _("%s: field `%s' must not be empty"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be empty"),
"LC_ADDRESS", "postal_fmt"); "LC_ADDRESS", "postal_fmt"));
else else
while (*cp != '\0') while (*cp != '\0')
{ {
@ -163,9 +164,9 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
++cp; ++cp;
if (strchr ("afdbshNtreCzTSc%", *cp) == NULL) if (strchr ("afdbshNtreCzTSc%", *cp) == NULL)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: invalid escape `%%%c' sequence in field `%s'"), %s: invalid escape `%%%c' sequence in field `%s'"),
"LC_ADDRESS", *cp, "postal_fmt"); "LC_ADDRESS", *cp, "postal_fmt"));
break; break;
} }
} }
@ -177,7 +178,8 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (address->cat == NULL) \ if (address->cat == NULL) \
{ \ { \
if (verbose && ! nothing) \ if (verbose && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), "LC_ADDRESS", #cat); \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_ADDRESS", #cat)); \
address->cat = ""; \ address->cat = ""; \
} }
@ -194,16 +196,16 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (address->lang_term == NULL) if (address->lang_term == NULL)
{ {
if (verbose && ! nothing) if (verbose && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), "LC_ADDRESS", WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"lang_term"); "LC_ADDRESS", "lang_term"));
address->lang_term = ""; address->lang_term = "";
cnt = sizeof (iso639) / sizeof (iso639[0]); cnt = sizeof (iso639) / sizeof (iso639[0]);
} }
else if (address->lang_term[0] == '\0') else if (address->lang_term[0] == '\0')
{ {
if (verbose) if (verbose)
error (0, 0, _("%s: field `%s' must not be empty"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be empty"),
"LC_ADDRESS", "lang_term"); "LC_ADDRESS", "lang_term"));
cnt = sizeof (iso639) / sizeof (iso639[0]); cnt = sizeof (iso639) / sizeof (iso639[0]);
} }
else else
@ -213,22 +215,23 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (strcmp (address->lang_term, iso639[cnt].term) == 0) if (strcmp (address->lang_term, iso639[cnt].term) == 0)
break; break;
if (cnt == sizeof (iso639) / sizeof (iso639[0])) if (cnt == sizeof (iso639) / sizeof (iso639[0]))
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: terminology language code `%s' not defined"), %s: terminology language code `%s' not defined"),
"LC_ADDRESS", address->lang_term); "LC_ADDRESS", address->lang_term));
} }
if (address->lang_ab == NULL) if (address->lang_ab == NULL)
{ {
if (verbose && ! nothing) if (verbose && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), "LC_ADDRESS", "lang_ab"); WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_ADDRESS", "lang_ab"));
address->lang_ab = ""; address->lang_ab = "";
} }
else if (address->lang_ab[0] == '\0') else if (address->lang_ab[0] == '\0')
{ {
if (verbose) if (verbose)
error (0, 0, _("%s: field `%s' must not be empty"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be empty"),
"LC_ADDRESS", "lang_ab"); "LC_ADDRESS", "lang_ab"));
} }
else else
{ {
@ -239,15 +242,15 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (strcmp (address->lang_ab, iso639[cnt].ab) == 0) if (strcmp (address->lang_ab, iso639[cnt].ab) == 0)
break; break;
if (cnt == sizeof (iso639) / sizeof (iso639[0])) if (cnt == sizeof (iso639) / sizeof (iso639[0]))
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: language abbreviation `%s' not defined"), %s: language abbreviation `%s' not defined"),
"LC_ADDRESS", address->lang_ab); "LC_ADDRESS", address->lang_ab));
} }
else else
if (strcmp (iso639[cnt].ab, address->lang_ab) != 0) if (strcmp (iso639[cnt].ab, address->lang_ab) != 0)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: `%s' value does not match `%s' value"), %s: `%s' value does not match `%s' value"),
"LC_ADDRESS", "lang_ab", "lang_term"); "LC_ADDRESS", "lang_ab", "lang_term"));
} }
if (address->lang_lib == NULL) if (address->lang_lib == NULL)
@ -256,8 +259,8 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
else if (address->lang_lib[0] == '\0') else if (address->lang_lib[0] == '\0')
{ {
if (verbose) if (verbose)
error (0, 0, _("%s: field `%s' must not be empty"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be empty"),
"LC_ADDRESS", "lang_lib"); "LC_ADDRESS", "lang_lib"));
} }
else else
{ {
@ -267,22 +270,22 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (strcmp (address->lang_lib, iso639[cnt].lib) == 0) if (strcmp (address->lang_lib, iso639[cnt].lib) == 0)
break; break;
if (cnt == sizeof (iso639) / sizeof (iso639[0])) if (cnt == sizeof (iso639) / sizeof (iso639[0]))
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: language abbreviation `%s' not defined"), %s: language abbreviation `%s' not defined"),
"LC_ADDRESS", address->lang_lib); "LC_ADDRESS", address->lang_lib));
} }
else else
if (strcmp (iso639[cnt].ab, address->lang_ab) != 0) if (strcmp (iso639[cnt].ab, address->lang_ab) != 0)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: `%s' value does not match `%s' value"), "LC_ADDRESS", "lang_lib", %s: `%s' value does not match `%s' value"), "LC_ADDRESS", "lang_lib",
helper == 1 ? "lang_term" : "lang_ab"); helper == 1 ? "lang_term" : "lang_ab"));
} }
if (address->country_num == 0) if (address->country_num == 0)
{ {
if (verbose && ! nothing) if (verbose && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_ADDRESS", "country_num"); "LC_ADDRESS", "country_num"));
cnt = sizeof (iso3166) / sizeof (iso3166[0]); cnt = sizeof (iso3166) / sizeof (iso3166[0]);
} }
else else
@ -292,34 +295,36 @@ address_finish (struct localedef_t *locale, const struct charmap_t *charmap)
break; break;
if (cnt == sizeof (iso3166) / sizeof (iso3166[0])) if (cnt == sizeof (iso3166) / sizeof (iso3166[0]))
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: numeric country code `%d' not valid"), %s: numeric country code `%d' not valid"),
"LC_ADDRESS", address->country_num); "LC_ADDRESS", address->country_num));
} }
if (address->country_ab2 == NULL) if (address->country_ab2 == NULL)
{ {
if (verbose && ! nothing) if (verbose && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_ADDRESS", "country_ab2"); "LC_ADDRESS", "country_ab2"));
address->country_ab2 = " "; address->country_ab2 = " ";
} }
else if (cnt != sizeof (iso3166) / sizeof (iso3166[0]) else if (cnt != sizeof (iso3166) / sizeof (iso3166[0])
&& strcmp (address->country_ab2, iso3166[cnt].ab2) != 0) && strcmp (address->country_ab2, iso3166[cnt].ab2) != 0)
error (0, 0, _("%s: `%s' value does not match `%s' value"), WITH_CUR_LOCALE (error (0, 0,
"LC_ADDRESS", "country_ab2", "country_num"); _("%s: `%s' value does not match `%s' value"),
"LC_ADDRESS", "country_ab2", "country_num"));
if (address->country_ab3 == NULL) if (address->country_ab3 == NULL)
{ {
if (verbose && ! nothing) if (verbose && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_ADDRESS", "country_ab3"); "LC_ADDRESS", "country_ab3"));
address->country_ab3 = " "; address->country_ab3 = " ";
} }
else if (cnt != sizeof (iso3166) / sizeof (iso3166[0]) else if (cnt != sizeof (iso3166) / sizeof (iso3166[0])
&& strcmp (address->country_ab3, iso3166[cnt].ab3) != 0) && strcmp (address->country_ab3, iso3166[cnt].ab3) != 0)
error (0, 0, _("%s: `%s' value does not match `%s' value"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_ADDRESS", "country_ab3", "country_num"); %s: `%s' value does not match `%s' value"),
"LC_ADDRESS", "country_ab3", "country_num"));
} }

View File

@ -27,11 +27,11 @@
#include <wchar.h> #include <wchar.h>
#include <sys/param.h> #include <sys/param.h>
#include "localedef.h"
#include "charmap.h" #include "charmap.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "linereader.h" #include "linereader.h"
#include "locfile.h" #include "locfile.h"
#include "localedef.h"
#include "elem-hash.h" #include "elem-hash.h"
/* Uncomment the following line in the production version. */ /* Uncomment the following line in the production version. */
@ -1516,7 +1516,8 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
{ {
/* No data, no check. */ /* No data, no check. */
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), "LC_COLLATE"); WITH_CUR_LOCALE (error (0, 0, _("No definition for %s category found"),
"LC_COLLATE"));
return; return;
} }
@ -1531,9 +1532,9 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
&& ((sect->rules[i] & sort_position) && ((sect->rules[i] & sort_position)
!= (collate->sections->rules[i] & sort_position))) != (collate->sections->rules[i] & sort_position)))
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: `position' must be used for a specific level in all sections or none"), %s: `position' must be used for a specific level in all sections or none"),
"LC_COLLATE"); "LC_COLLATE"));
break; break;
} }
@ -1554,9 +1555,10 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
{ {
if (runp->weights[i].w[j]->weights == NULL) if (runp->weights[i].w[j]->weights == NULL)
{ {
error_at_line (0, 0, runp->file, runp->line, WITH_CUR_LOCALE (error_at_line (0, 0, runp->file,
_("symbol `%s' not defined"), runp->line,
runp->weights[i].w[j]->name); _("symbol `%s' not defined"),
runp->weights[i].w[j]->name));
need_undefined = 1; need_undefined = 1;
runp->weights[i].w[j] = &collate->undefined; runp->weights[i].w[j] = &collate->undefined;
@ -1629,11 +1631,14 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
/* This should not happen. It means that we have /* This should not happen. It means that we have
to symbols with the same byte sequence. It is to symbols with the same byte sequence. It is
of course an error. */ of course an error. */
error_at_line (0, 0, (*eptr)->file, (*eptr)->line, WITH_CUR_LOCALE (error_at_line (0, 0, (*eptr)->file,
_("symbol `%s' has the same encoding as"), (*eptr)->line,
(*eptr)->name); _("\
error_at_line (0, 0, runp->file, runp->line, symbol `%s' has the same encoding as"), (*eptr)->name);
_("symbol `%s'"), runp->name); error_at_line (0, 0, runp->file,
runp->line,
_("symbol `%s'"),
runp->name));
goto dont_insert; goto dont_insert;
} }
else if (c < 0) else if (c < 0)
@ -1732,11 +1737,14 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
/* This should not happen. It means that we have /* This should not happen. It means that we have
two symbols with the same byte sequence. It is two symbols with the same byte sequence. It is
of course an error. */ of course an error. */
error_at_line (0, 0, (*eptr)->file, (*eptr)->line, WITH_CUR_LOCALE (error_at_line (0, 0, (*eptr)->file,
_("symbol `%s' has the same encoding as"), (*eptr)->line,
(*eptr)->name); _("\
error_at_line (0, 0, runp->file, runp->line, symbol `%s' has the same encoding as"), (*eptr)->name);
_("symbol `%s'"), runp->name); error_at_line (0, 0, runp->file,
runp->line,
_("symbol `%s'"),
runp->name));
goto dont_insertwc; goto dont_insertwc;
} }
else if (c < 0) else if (c < 0)
@ -1777,7 +1785,7 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
/* This seems not to be enforced by recent standards. Don't /* This seems not to be enforced by recent standards. Don't
emit an error, simply append UNDEFINED at the end. */ emit an error, simply append UNDEFINED at the end. */
if (0) if (0)
error (0, 0, _("no definition of `UNDEFINED'")); WITH_CUR_LOCALE (error (0, 0, _("no definition of `UNDEFINED'")));
/* Add UNDEFINED at the end. */ /* Add UNDEFINED at the end. */
collate->undefined.mborder = collate->undefined.mborder =
@ -3389,8 +3397,8 @@ error while adding equivalent collating symbol"));
} }
else if (state == 3) else if (state == 3)
{ {
error (0, 0, _("%s: missing `reorder-end' keyword"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_COLLATE"); %s: missing `reorder-end' keyword"), "LC_COLLATE"));
state = 4; state = 4;
} }
else if (state != 2 && state != 4) else if (state != 2 && state != 4)
@ -3739,11 +3747,11 @@ error while adding equivalent collating symbol"));
} }
} }
else if (state == 3) else if (state == 3)
error (0, 0, _("%s: missing `reorder-end' keyword"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_COLLATE"); %s: missing `reorder-end' keyword"), "LC_COLLATE"));
else if (state == 5) else if (state == 5)
error (0, 0, _("%s: missing `reorder-sections-end' keyword"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_COLLATE"); %s: missing `reorder-sections-end' keyword"), "LC_COLLATE"));
} }
arg = lr_token (ldfile, charmap, result, NULL, verbose); arg = lr_token (ldfile, charmap, result, NULL, verbose);
if (arg->tok == tok_eof) if (arg->tok == tok_eof)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995. Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@ -33,13 +33,13 @@
#include <wctype.h> #include <wctype.h>
#include <sys/uio.h> #include <sys/uio.h>
#include "localedef.h"
#include "charmap.h" #include "charmap.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "langinfo.h" #include "langinfo.h"
#include "linereader.h" #include "linereader.h"
#include "locfile-token.h" #include "locfile-token.h"
#include "locfile.h" #include "locfile.h"
#include "localedef.h"
#include <assert.h> #include <assert.h>
@ -413,7 +413,8 @@ ctype_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (ctype == NULL) if (ctype == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), "LC_CTYPE"); WITH_CUR_LOCALE (error (0, 0, _("\
No definition for %s category found"), "LC_CTYPE"));
ctype_startup (NULL, locale, charmap, NULL, 0); ctype_startup (NULL, locale, charmap, NULL, 0);
ctype = locale->categories[LC_CTYPE].ctype; ctype = locale->categories[LC_CTYPE].ctype;
} }
@ -431,7 +432,8 @@ ctype_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (ctype->codeset_name == NULL) if (ctype->codeset_name == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No character set name specified in charmap")); WITH_CUR_LOCALE (error (0, 0, _("\
No character set name specified in charmap")));
ctype->codeset_name = "//UNKNOWN//"; ctype->codeset_name = "//UNKNOWN//";
} }
@ -459,11 +461,12 @@ ctype_finish (struct localedef_t *locale, const struct charmap_t *charmap)
uint32_t value = ctype->charnames[cnt]; uint32_t value = ctype->charnames[cnt];
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
character L'\\u%0*x' in class `%s' must be in class `%s'"), character L'\\u%0*x' in class `%s' must be in class `%s'"),
value > 0xffff ? 8 : 4, value, value > 0xffff ? 8 : 4,
valid_table[cls1].name, value,
valid_table[cls2].name); valid_table[cls1].name,
valid_table[cls2].name));
} }
break; break;
@ -473,11 +476,12 @@ character L'\\u%0*x' in class `%s' must be in class `%s'"),
uint32_t value = ctype->charnames[cnt]; uint32_t value = ctype->charnames[cnt];
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
character L'\\u%0*x' in class `%s' must not be in class `%s'"), character L'\\u%0*x' in class `%s' must not be in class `%s'"),
value > 0xffff ? 8 : 4, value, value > 0xffff ? 8 : 4,
valid_table[cls1].name, value,
valid_table[cls2].name); valid_table[cls1].name,
valid_table[cls2].name));
} }
break; break;
@ -486,8 +490,8 @@ character L'\\u%0*x' in class `%s' must not be in class `%s'"),
break; break;
default: default:
error (5, 0, _("internal error in %s, line %u"), WITH_CUR_LOCALE (error (5, 0, _("\
__FUNCTION__, __LINE__); internal error in %s, line %u"), __FUNCTION__, __LINE__));
} }
} }
} }
@ -515,10 +519,11 @@ character L'\\u%0*x' in class `%s' must not be in class `%s'"),
snprintf (buf, sizeof buf, "\\%Zo", cnt); snprintf (buf, sizeof buf, "\\%Zo", cnt);
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
character '%s' in class `%s' must be in class `%s'"), character '%s' in class `%s' must be in class `%s'"),
buf, valid_table[cls1].name, buf,
valid_table[cls2].name); valid_table[cls1].name,
valid_table[cls2].name));
} }
break; break;
@ -530,10 +535,11 @@ character '%s' in class `%s' must be in class `%s'"),
snprintf (buf, sizeof buf, "\\%Zo", cnt); snprintf (buf, sizeof buf, "\\%Zo", cnt);
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
character '%s' in class `%s' must not be in class `%s'"), character '%s' in class `%s' must not be in class `%s'"),
buf, valid_table[cls1].name, buf,
valid_table[cls2].name); valid_table[cls1].name,
valid_table[cls2].name));
} }
break; break;
@ -542,8 +548,8 @@ character '%s' in class `%s' must not be in class `%s'"),
break; break;
default: default:
error (5, 0, _("internal error in %s, line %u"), WITH_CUR_LOCALE (error (5, 0, _("\
__FUNCTION__, __LINE__); internal error in %s, line %u"), __FUNCTION__, __LINE__));
} }
} }
} }
@ -559,8 +565,8 @@ character '%s' in class `%s' must not be in class `%s'"),
& BITw (tok_blank)) == 0))) & BITw (tok_blank)) == 0)))
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("<SP> character not in class `%s'"), WITH_CUR_LOCALE (error (0, 0, _("<SP> character not in class `%s'"),
valid_table[cnt].name); valid_table[cnt].name));
} }
else if (((cnt = BITPOS (tok_punct), else if (((cnt = BITPOS (tok_punct),
(ELEM (ctype, class_collection, , space_value) (ELEM (ctype, class_collection, , space_value)
@ -571,8 +577,9 @@ character '%s' in class `%s' must not be in class `%s'"),
!= 0))) != 0)))
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("<SP> character must not be in class `%s'"), WITH_CUR_LOCALE (error (0, 0, _("\
valid_table[cnt].name); <SP> character must not be in class `%s'"),
valid_table[cnt].name));
} }
else else
ELEM (ctype, class_collection, , space_value) |= BITw (tok_print); ELEM (ctype, class_collection, , space_value) |= BITw (tok_print);
@ -585,7 +592,8 @@ character '%s' in class `%s' must not be in class `%s'"),
if (space_seq == NULL || space_seq->nbytes != 1) if (space_seq == NULL || space_seq->nbytes != 1)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("character <SP> not defined in character map")); WITH_CUR_LOCALE (error (0, 0, _("\
character <SP> not defined in character map")));
} }
else if (((cnt = BITPOS (tok_space), else if (((cnt = BITPOS (tok_space),
(ctype->class256_collection[space_seq->bytes[0]] (ctype->class256_collection[space_seq->bytes[0]]
@ -595,8 +603,8 @@ character '%s' in class `%s' must not be in class `%s'"),
& BIT (tok_blank)) == 0))) & BIT (tok_blank)) == 0)))
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("<SP> character not in class `%s'"), WITH_CUR_LOCALE (error (0, 0, _("<SP> character not in class `%s'"),
valid_table[cnt].name); valid_table[cnt].name));
} }
else if (((cnt = BITPOS (tok_punct), else if (((cnt = BITPOS (tok_punct),
(ctype->class256_collection[space_seq->bytes[0]] (ctype->class256_collection[space_seq->bytes[0]]
@ -606,8 +614,9 @@ character '%s' in class `%s' must not be in class `%s'"),
& BIT (tok_graph)) != 0))) & BIT (tok_graph)) != 0)))
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("<SP> character must not be in class `%s'"), WITH_CUR_LOCALE (error (0, 0, _("\
valid_table[cnt].name); <SP> character must not be in class `%s'"),
valid_table[cnt].name));
} }
else else
ctype->class256_collection[space_seq->bytes[0]] |= BIT (tok_print); ctype->class256_collection[space_seq->bytes[0]] |= BIT (tok_print);
@ -697,7 +706,8 @@ character '%s' in class `%s' must not be in class `%s'"),
assert (ctype->mbdigits_act == ctype->wcdigits_act); assert (ctype->mbdigits_act == ctype->wcdigits_act);
ctype->wcdigits_act -= ctype->mbdigits_act % 10; ctype->wcdigits_act -= ctype->mbdigits_act % 10;
ctype->mbdigits_act -= ctype->mbdigits_act % 10; ctype->mbdigits_act -= ctype->mbdigits_act % 10;
error (0, 0, _("`digit' category has not entries in groups of ten")); WITH_CUR_LOCALE (error (0, 0, _("\
`digit' category has not entries in groups of ten")));
} }
/* Check the input digits. There must be a multiple of ten available. /* Check the input digits. There must be a multiple of ten available.
@ -745,8 +755,8 @@ character '%s' in class `%s' must not be in class `%s'"),
if (ctype->mbdigits[cnt] == NULL) if (ctype->mbdigits[cnt] == NULL)
{ {
/* Hum, this ain't good. */ /* Hum, this ain't good. */
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
no input digits defined and none of the standard names in the charmap")); no input digits defined and none of the standard names in the charmap")));
ctype->mbdigits[cnt] = obstack_alloc (&((struct charmap_t *) charmap)->mem_pool, ctype->mbdigits[cnt] = obstack_alloc (&((struct charmap_t *) charmap)->mem_pool,
sizeof (struct charseq) + 1); sizeof (struct charseq) + 1);
@ -810,8 +820,8 @@ no input digits defined and none of the standard names in the charmap"));
if (!warned) if (!warned)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
not all characters used in `outdigit' are available in the charmap")); not all characters used in `outdigit' are available in the charmap")));
warned = 1; warned = 1;
} }
@ -827,8 +837,8 @@ not all characters used in `outdigit' are available in the charmap"));
{ {
if (!warned) if (!warned)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
not all characters used in `outdigit' are available in the repertoire")); not all characters used in `outdigit' are available in the repertoire")));
warned = 1; warned = 1;
} }
@ -1227,9 +1237,9 @@ ctype_class_new (struct linereader *lr, struct locale_ctype_t *ctype,
if (ctype->nr_charclass == MAX_NR_CHARCLASS) if (ctype->nr_charclass == MAX_NR_CHARCLASS)
/* Exit code 2 is prescribed in P1003.2b. */ /* Exit code 2 is prescribed in P1003.2b. */
error (2, 0, _("\ WITH_CUR_LOCALE (error (2, 0, _("\
implementation limit: no more than %Zd character classes allowed"), implementation limit: no more than %Zd character classes allowed"),
MAX_NR_CHARCLASS); MAX_NR_CHARCLASS));
ctype->classnames[ctype->nr_charclass++] = name; ctype->classnames[ctype->nr_charclass++] = name;
} }
@ -1259,9 +1269,9 @@ ctype_map_new (struct linereader *lr, struct locale_ctype_t *ctype,
if (ctype->map_collection_nr == MAX_NR_CHARMAP) if (ctype->map_collection_nr == MAX_NR_CHARMAP)
/* Exit code 2 is prescribed in P1003.2b. */ /* Exit code 2 is prescribed in P1003.2b. */
error (2, 0, _("\ WITH_CUR_LOCALE (error (2, 0, _("\
implementation limit: no more than %d character maps allowed"), implementation limit: no more than %d character maps allowed"),
MAX_NR_CHARMAP); MAX_NR_CHARMAP));
ctype->mapnames[cnt] = name; ctype->mapnames[cnt] = name;
@ -2824,10 +2834,11 @@ with character code range values one must use the absolute ellipsis `...'"));
{ {
lr_error (ldfile, _("\ lr_error (ldfile, _("\
%s: duplicate `default_missing' definition"), "LC_CTYPE"); %s: duplicate `default_missing' definition"), "LC_CTYPE");
error_at_line (0, 0, ctype->default_missing_file, WITH_CUR_LOCALE (error_at_line (0, 0,
ctype->default_missing_lineno, ctype->default_missing_file,
_("\ ctype->default_missing_lineno,
previous definition was here")); _("\
previous definition was here")));
} }
else else
{ {
@ -3001,14 +3012,14 @@ set_class_defaults (struct locale_ctype_t *ctype,
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined in charmap while needed as default value"), %s: character `%s' not defined in charmap while needed as default value"),
"LC_CTYPE", tmp); "LC_CTYPE", tmp));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", tmp); "LC_CTYPE", tmp));
else else
ctype->class256_collection[seq->bytes[0]] |= bit; ctype->class256_collection[seq->bytes[0]] |= bit;
@ -3085,14 +3096,14 @@ set_class_defaults (struct locale_ctype_t *ctype,
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<space>"); "LC_CTYPE", "<space>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<space>"); "LC_CTYPE", "<space>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space);
@ -3105,14 +3116,14 @@ set_class_defaults (struct locale_ctype_t *ctype,
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<form-feed>"); "LC_CTYPE", "<form-feed>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<form-feed>"); "LC_CTYPE", "<form-feed>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space);
@ -3126,14 +3137,14 @@ set_class_defaults (struct locale_ctype_t *ctype,
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
character `%s' not defined while needed as default value"), character `%s' not defined while needed as default value"),
"<newline>"); "<newline>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<newline>"); "LC_CTYPE", "<newline>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space);
@ -3147,14 +3158,14 @@ character `%s' not defined while needed as default value"),
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<carriage-return>"); "LC_CTYPE", "<carriage-return>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<carriage-return>"); "LC_CTYPE", "<carriage-return>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space);
@ -3168,14 +3179,14 @@ character `%s' not defined while needed as default value"),
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<tab>"); "LC_CTYPE", "<tab>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<tab>"); "LC_CTYPE", "<tab>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space);
@ -3189,14 +3200,14 @@ character `%s' not defined while needed as default value"),
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<vertical-tab>"); "LC_CTYPE", "<vertical-tab>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<vertical-tab>"); "LC_CTYPE", "<vertical-tab>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_space);
@ -3229,14 +3240,14 @@ character `%s' not defined while needed as default value"),
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<space>"); "LC_CTYPE", "<space>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<space>"); "LC_CTYPE", "<space>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_blank); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_blank);
@ -3250,14 +3261,14 @@ character `%s' not defined while needed as default value"),
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<tab>"); "LC_CTYPE", "<tab>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<tab>"); "LC_CTYPE", "<tab>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_blank); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_blank);
@ -3317,14 +3328,14 @@ character `%s' not defined while needed as default value"),
if (seq == NULL) if (seq == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", "<space>"); "LC_CTYPE", "<space>"));
} }
else if (seq->nbytes != 1) else if (seq->nbytes != 1)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' in charmap not representable with one byte"), %s: character `%s' in charmap not representable with one byte"),
"LC_CTYPE", "<space>"); "LC_CTYPE", "<space>"));
else else
ctype->class256_collection[seq->bytes[0]] |= BIT (tok_print); ctype->class256_collection[seq->bytes[0]] |= BIT (tok_print);
@ -3359,16 +3370,16 @@ character `%s' not defined while needed as default value"),
if (seq_from == NULL) if (seq_from == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", tmp); "LC_CTYPE", tmp));
} }
else if (seq_from->nbytes != 1) else if (seq_from->nbytes != 1)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' needed as default value not representable with one byte"), %s: character `%s' needed as default value not representable with one byte"),
"LC_CTYPE", tmp); "LC_CTYPE", tmp));
} }
else else
{ {
@ -3384,16 +3395,16 @@ character `%s' not defined while needed as default value"),
if (seq_to == NULL) if (seq_to == NULL)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' not defined while needed as default value"), %s: character `%s' not defined while needed as default value"),
"LC_CTYPE", tmp); "LC_CTYPE", tmp));
} }
else if (seq_to->nbytes != 1) else if (seq_to->nbytes != 1)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: character `%s' needed as default value not representable with one byte"), %s: character `%s' needed as default value not representable with one byte"),
"LC_CTYPE", tmp); "LC_CTYPE", tmp));
} }
else else
/* The index [0] is determined by the order of the /* The index [0] is determined by the order of the
@ -3425,8 +3436,9 @@ character `%s' not defined while needed as default value"),
if (ctype->outdigits_act != 10) if (ctype->outdigits_act != 10)
{ {
if (ctype->outdigits_act != 0) if (ctype->outdigits_act != 0)
error (0,0, _("%s: field `%s' does not contain exactly ten entries"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_CTYPE", "outdigit"); %s: field `%s' does not contain exactly ten entries"),
"LC_CTYPE", "outdigit"));
for (cnt = ctype->outdigits_act; cnt < 10; ++cnt) for (cnt = ctype->outdigits_act; cnt < 10; ++cnt)
{ {
@ -3445,8 +3457,8 @@ character `%s' not defined while needed as default value"),
if (ctype->mboutdigits[cnt] == NULL) if (ctype->mboutdigits[cnt] == NULL)
{ {
/* Provide a replacement. */ /* Provide a replacement. */
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
no output digits defined and none of the standard names in the charmap")); no output digits defined and none of the standard names in the charmap")));
ctype->mboutdigits[cnt] = obstack_alloc (&((struct charmap_t *) charmap)->mem_pool, ctype->mboutdigits[cnt] = obstack_alloc (&((struct charmap_t *) charmap)->mem_pool,
sizeof (struct charseq) sizeof (struct charseq)
@ -3736,9 +3748,9 @@ translit_flatten (struct locale_ctype_t *ctype,
if (other == NULL) if (other == NULL)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: transliteration data from locale `%s' not available"), %s: transliteration data from locale `%s' not available"),
"LC_CTYPE", copy_locale); "LC_CTYPE", copy_locale));
} }
else else
{ {
@ -3832,9 +3844,10 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
wctype_table_finalize (&t); wctype_table_finalize (&t);
if (verbose) if (verbose)
fprintf (stderr, _("%s: table for class \"%s\": %lu bytes\n"), WITH_CUR_LOCALE (fprintf (stderr, _("\
"LC_CTYPE", ctype->classnames[nr], %s: table for class \"%s\": %lu bytes\n"),
(unsigned long int) t.result_size); "LC_CTYPE", ctype->classnames[nr],
(unsigned long int) t.result_size));
ctype->class_3level[nr].iov_base = t.result; ctype->class_3level[nr].iov_base = t.result;
ctype->class_3level[nr].iov_len = t.result_size; ctype->class_3level[nr].iov_len = t.result_size;
@ -3900,9 +3913,10 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
wctrans_table_finalize (&t); wctrans_table_finalize (&t);
if (verbose) if (verbose)
fprintf (stderr, _("%s: table for map \"%s\": %lu bytes\n"), WITH_CUR_LOCALE (fprintf (stderr, _("\
"LC_CTYPE", ctype->mapnames[nr], %s: table for map \"%s\": %lu bytes\n"),
(unsigned long int) t.result_size); "LC_CTYPE", ctype->mapnames[nr],
(unsigned long int) t.result_size));
ctype->map_3level[nr].iov_base = t.result; ctype->map_3level[nr].iov_base = t.result;
ctype->map_3level[nr].iov_len = t.result_size; ctype->map_3level[nr].iov_len = t.result_size;
@ -4032,8 +4046,8 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
wcwidth_table_finalize (&t); wcwidth_table_finalize (&t);
if (verbose) if (verbose)
fprintf (stderr, _("%s: table for width: %lu bytes\n"), WITH_CUR_LOCALE (fprintf (stderr, _("%s: table for width: %lu bytes\n"),
"LC_CTYPE", (unsigned long int) t.result_size); "LC_CTYPE", (unsigned long int) t.result_size));
ctype->width.iov_base = t.result; ctype->width.iov_base = t.result;
ctype->width.iov_len = t.result_size; ctype->width.iov_len = t.result_size;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -29,6 +29,7 @@
#include <assert.h> #include <assert.h>
#include "localedef.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -130,8 +131,8 @@ identification_finish (struct localedef_t *locale,
if (identification == NULL) if (identification == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_IDENTIFICATION"); No definition for %s category found"), "LC_IDENTIFICATION"));
identification_startup (NULL, locale, 0); identification_startup (NULL, locale, 0);
identification identification
= locale->categories[LC_IDENTIFICATION].identification; = locale->categories[LC_IDENTIFICATION].identification;
@ -143,8 +144,8 @@ identification_finish (struct localedef_t *locale,
if (identification->cat == NULL) \ if (identification->cat == NULL) \
{ \ { \
if (verbose && ! nothing) \ if (verbose && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_IDENTIFICATION", #cat); \ "LC_IDENTIFICATION", #cat)); \
identification->cat = ""; \ identification->cat = ""; \
} }
@ -167,8 +168,9 @@ identification_finish (struct localedef_t *locale,
if (num != LC_ALL && identification->category[num] == NULL) if (num != LC_ALL && identification->category[num] == NULL)
{ {
if (verbose && ! nothing) if (verbose && ! nothing)
error (0, 0, _("%s: no identification for category `%s'"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_IDENTIFICATION", category_name[num]); %s: no identification for category `%s'"),
"LC_IDENTIFICATION", category_name[num]));
identification->category[num] = ""; identification->category[num] = "";
} }
} }

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -28,6 +28,7 @@
#include <assert.h> #include <assert.h>
#include "localedef.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -91,8 +92,8 @@ measurement_finish (struct localedef_t *locale,
if (measurement == NULL) if (measurement == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_MEASUREMENT"); No definition for %s category found"), "LC_MEASUREMENT"));
measurement_startup (NULL, locale, 0); measurement_startup (NULL, locale, 0);
measurement = locale->categories[LC_MEASUREMENT].measurement; measurement = locale->categories[LC_MEASUREMENT].measurement;
nothing = 1; nothing = 1;
@ -102,16 +103,16 @@ measurement_finish (struct localedef_t *locale,
if (measurement->measurement == 0) if (measurement->measurement == 0)
{ {
if (! nothing) if (! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_MEASUREMENT", "measurement"); "LC_MEASUREMENT", "measurement"));
/* Use as the default value the value of the i18n locale. */ /* Use as the default value the value of the i18n locale. */
measurement->measurement = 1; measurement->measurement = 1;
} }
else else
{ {
if (measurement->measurement > 3) if (measurement->measurement > 3)
error (0, 0, _("%s: invalid value for field `%s'"), WITH_CUR_LOCALE (error (0, 0, _("%s: invalid value for field `%s'"),
"LC_MEASUREMENT", "measurement"); "LC_MEASUREMENT", "measurement"));
} }
} }

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995. Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@ -29,8 +29,8 @@
#include <assert.h> #include <assert.h>
#include "linereader.h"
#include "localedef.h" #include "localedef.h"
#include "linereader.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -95,8 +95,8 @@ messages_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (messages == NULL) if (messages == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_MESSAGES"); No definition for %s category found"), "LC_MESSAGES"));
messages_startup (NULL, locale, 0); messages_startup (NULL, locale, 0);
messages = locale->categories[LC_MESSAGES].messages; messages = locale->categories[LC_MESSAGES].messages;
nothing = 1; nothing = 1;
@ -112,15 +112,16 @@ messages_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (messages->yesexpr == NULL) if (messages->yesexpr == NULL)
{ {
if (! be_quiet && ! nothing) if (! be_quiet && ! nothing)
error (0, 0, _("%s: field `%s' undefined"), "LC_MESSAGES", "yesexpr"); WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' undefined"),
"LC_MESSAGES", "yesexpr"));
messages->yesexpr = "^[yY]"; messages->yesexpr = "^[yY]";
} }
else if (messages->yesexpr[0] == '\0') else if (messages->yesexpr[0] == '\0')
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value for field `%s' must not be an empty string"), %s: value for field `%s' must not be an empty string"),
"LC_MESSAGES", "yesexpr"); "LC_MESSAGES", "yesexpr"));
} }
else else
{ {
@ -134,9 +135,9 @@ messages_finish (struct localedef_t *locale, const struct charmap_t *charmap)
char errbuf[BUFSIZ]; char errbuf[BUFSIZ];
(void) regerror (result, &re, errbuf, BUFSIZ); (void) regerror (result, &re, errbuf, BUFSIZ);
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: no correct regular expression for field `%s': %s"), %s: no correct regular expression for field `%s': %s"),
"LC_MESSAGES", "yesexpr", errbuf); "LC_MESSAGES", "yesexpr", errbuf));
} }
else if (result != 0) else if (result != 0)
regfree (&re); regfree (&re);
@ -145,15 +146,16 @@ messages_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (messages->noexpr == NULL) if (messages->noexpr == NULL)
{ {
if (! be_quiet && ! nothing) if (! be_quiet && ! nothing)
error (0, 0, _("%s: field `%s' undefined"), "LC_MESSAGES", "noexpr"); WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' undefined"),
"LC_MESSAGES", "noexpr"));
messages->noexpr = "^[nN]"; messages->noexpr = "^[nN]";
} }
else if (messages->noexpr[0] == '\0') else if (messages->noexpr[0] == '\0')
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value for field `%s' must not be an empty string"), %s: value for field `%s' must not be an empty string"),
"LC_MESSAGES", "noexpr"); "LC_MESSAGES", "noexpr"));
} }
else else
{ {
@ -167,9 +169,9 @@ messages_finish (struct localedef_t *locale, const struct charmap_t *charmap)
char errbuf[BUFSIZ]; char errbuf[BUFSIZ];
(void) regerror (result, &re, errbuf, BUFSIZ); (void) regerror (result, &re, errbuf, BUFSIZ);
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: no correct regular expression for field `%s': %s"), %s: no correct regular expression for field `%s': %s"),
"LC_MESSAGES", "noexpr", errbuf); "LC_MESSAGES", "noexpr", errbuf));
} }
else if (result != 0) else if (result != 0)
regfree (&re); regfree (&re);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995. Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@ -30,8 +30,8 @@
#include <assert.h> #include <assert.h>
#include "linereader.h"
#include "localedef.h" #include "localedef.h"
#include "linereader.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -191,8 +191,8 @@ monetary_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (monetary == NULL) if (monetary == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_MONETARY"); No definition for %s category found"), "LC_MONETARY"));
monetary_startup (NULL, locale, 0); monetary_startup (NULL, locale, 0);
monetary = locale->categories[LC_MONETARY].monetary; monetary = locale->categories[LC_MONETARY].monetary;
nothing = 1; nothing = 1;
@ -203,8 +203,8 @@ monetary_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (monetary->cat == NULL) \ if (monetary->cat == NULL) \
{ \ { \
if (! be_quiet && ! nothing) \ if (! be_quiet && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_MONETARY", #cat); \ "LC_MONETARY", #cat)); \
monetary->cat = initval; \ monetary->cat = initval; \
} }
@ -221,18 +221,18 @@ monetary_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (strlen (monetary->int_curr_symbol) != 4) if (strlen (monetary->int_curr_symbol) != 4)
{ {
if (! be_quiet && ! nothing) if (! be_quiet && ! nothing)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value of field `int_curr_symbol' has wrong length"), %s: value of field `int_curr_symbol' has wrong length"),
"LC_MONETARY"); "LC_MONETARY"));
} }
else if (bsearch (monetary->int_curr_symbol, valid_int_curr, else if (bsearch (monetary->int_curr_symbol, valid_int_curr,
NR_VALID_INT_CURR, sizeof (const char *), NR_VALID_INT_CURR, sizeof (const char *),
(comparison_fn_t) curr_strcmp) == NULL (comparison_fn_t) curr_strcmp) == NULL
&& !be_quiet) && !be_quiet)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value of field `int_curr_symbol' does \ %s: value of field `int_curr_symbol' does \
not correspond to a valid name in ISO 4217"), not correspond to a valid name in ISO 4217"),
"LC_MONETARY"); "LC_MONETARY"));
} }
/* The decimal point must not be empty. This is not said explicitly /* The decimal point must not be empty. This is not said explicitly
@ -241,15 +241,15 @@ not correspond to a valid name in ISO 4217"),
if (monetary->mon_decimal_point == NULL) if (monetary->mon_decimal_point == NULL)
{ {
if (! be_quiet && ! nothing) if (! be_quiet && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_MONETARY", "mon_decimal_point"); "LC_MONETARY", "mon_decimal_point"));
monetary->mon_decimal_point = "."; monetary->mon_decimal_point = ".";
} }
else if (monetary->mon_decimal_point[0] == '\0' && ! be_quiet && ! nothing) else if (monetary->mon_decimal_point[0] == '\0' && ! be_quiet && ! nothing)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value for field `%s' must not be the empty string"), %s: value for field `%s' must not be the empty string"),
"LC_MONETARY", "mon_decimal_point"); "LC_MONETARY", "mon_decimal_point"));
} }
if (monetary->mon_decimal_point_wc == L'\0') if (monetary->mon_decimal_point_wc == L'\0')
monetary->mon_decimal_point_wc = L'.'; monetary->mon_decimal_point_wc = L'.';
@ -257,8 +257,8 @@ not correspond to a valid name in ISO 4217"),
if (monetary->mon_grouping_len == 0) if (monetary->mon_grouping_len == 0)
{ {
if (! be_quiet && ! nothing) if (! be_quiet && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_MONETARY", "mon_grouping"); "LC_MONETARY", "mon_grouping"));
monetary->mon_grouping = (char *) "\177"; monetary->mon_grouping = (char *) "\177";
monetary->mon_grouping_len = 1; monetary->mon_grouping_len = 1;
@ -269,15 +269,15 @@ not correspond to a valid name in ISO 4217"),
if (monetary->cat == -2) \ if (monetary->cat == -2) \
{ \ { \
if (! be_quiet && ! nothing) \ if (! be_quiet && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_MONETARY", #cat); \ "LC_MONETARY", #cat)); \
monetary->cat = initval; \ monetary->cat = initval; \
} \ } \
else if ((monetary->cat < min || monetary->cat > max) \ else if ((monetary->cat < min || monetary->cat > max) \
&& !be_quiet && !nothing) \ && !be_quiet && !nothing) \
error (0, 0, _(" \ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value for field `%s' must be in range %d...%d"), \ %s: value for field `%s' must be in range %d...%d"), \
"LC_MONETARY", #cat, min, max) "LC_MONETARY", #cat, min, max))
TEST_ELEM (int_frac_digits, -128, 127, -1); TEST_ELEM (int_frac_digits, -128, 127, -1);
TEST_ELEM (frac_digits, -128, 127, -1); TEST_ELEM (frac_digits, -128, 127, -1);
@ -305,9 +305,9 @@ not correspond to a valid name in ISO 4217"),
monetary->cat = monetary->alt; \ monetary->cat = monetary->alt; \
else if ((monetary->cat < min || monetary->cat > max) && !be_quiet \ else if ((monetary->cat < min || monetary->cat > max) && !be_quiet \
&& ! nothing) \ && ! nothing) \
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value for field `%s' must be in range %d...%d"), \ %s: value for field `%s' must be in range %d...%d"), \
"LC_MONETARY", #cat, min, max) "LC_MONETARY", #cat, min, max))
TEST_ELEM (int_p_cs_precedes, p_cs_precedes, -1, 1); TEST_ELEM (int_p_cs_precedes, p_cs_precedes, -1, 1);
TEST_ELEM (int_p_sep_by_space, p_sep_by_space, -1, 2); TEST_ELEM (int_p_sep_by_space, p_sep_by_space, -1, 2);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -27,6 +27,7 @@
#include <assert.h> #include <assert.h>
#include "localedef.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -91,7 +92,8 @@ name_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (name == NULL) if (name == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), "LC_NAME"); WITH_CUR_LOCALE (error (0, 0, _("\
No definition for %s category found"), "LC_NAME"));
name_startup (NULL, locale, 0); name_startup (NULL, locale, 0);
name = locale->categories[LC_NAME].name; name = locale->categories[LC_NAME].name;
nothing = 1; nothing = 1;
@ -101,7 +103,8 @@ name_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (name->name_fmt == NULL) if (name->name_fmt == NULL)
{ {
if (! nothing) if (! nothing)
error (0, 0, _("%s: field `%s' not defined"), "LC_NAME", "name_fmt"); WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_NAME", "name_fmt"));
/* Use as the default value the value of the i18n locale. */ /* Use as the default value the value of the i18n locale. */
name->name_fmt = "%p%t%g%t%m%t%f"; name->name_fmt = "%p%t%g%t%m%t%f";
} }
@ -112,8 +115,8 @@ name_finish (struct localedef_t *locale, const struct charmap_t *charmap)
const char *cp = name->name_fmt; const char *cp = name->name_fmt;
if (*cp == '\0') if (*cp == '\0')
error (0, 0, _("%s: field `%s' must not be empty"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be empty"),
"LC_NAME", "name_fmt"); "LC_NAME", "name_fmt"));
else else
while (*cp != '\0') while (*cp != '\0')
{ {
@ -124,9 +127,8 @@ name_finish (struct localedef_t *locale, const struct charmap_t *charmap)
++cp; ++cp;
if (strchr ("dfFgGlomMpsSt", *cp) == NULL) if (strchr ("dfFgGlomMpsSt", *cp) == NULL)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: invalid escape sequence in field `%s'"), %s: invalid escape sequence in field `%s'"), "LC_NAME", "name_fmt"));
"LC_NAME", "name_fmt");
break; break;
} }
} }
@ -138,7 +140,8 @@ name_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (name->cat == NULL) \ if (name->cat == NULL) \
{ \ { \
if (verbose && ! nothing) \ if (verbose && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), "LC_NAME", #cat); \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_NAME", #cat)); \
name->cat = ""; \ name->cat = ""; \
} }

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995. Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@ -27,8 +27,8 @@
#include <assert.h> #include <assert.h>
#include "linereader.h"
#include "localedef.h" #include "localedef.h"
#include "linereader.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -96,8 +96,8 @@ numeric_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (numeric == NULL) if (numeric == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_NUMERIC"); No definition for %s category found"), "LC_NUMERIC"));
numeric_startup (NULL, locale, 0); numeric_startup (NULL, locale, 0);
numeric = locale->categories[LC_NUMERIC].numeric; numeric = locale->categories[LC_NUMERIC].numeric;
nothing = 1; nothing = 1;
@ -110,21 +110,22 @@ numeric_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (numeric->decimal_point == NULL) if (numeric->decimal_point == NULL)
{ {
if (! be_quiet && ! nothing) if (! be_quiet && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_NUMERIC", "decimal_point"); "LC_NUMERIC", "decimal_point"));
numeric->decimal_point = "."; numeric->decimal_point = ".";
} }
else if (numeric->decimal_point[0] == '\0' && ! be_quiet && ! nothing) else if (numeric->decimal_point[0] == '\0' && ! be_quiet && ! nothing)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: value for field `%s' must not be the empty string"), %s: value for field `%s' must not be the empty string"),
"LC_NUMERIC", "decimal_point"); "LC_NUMERIC", "decimal_point"));
} }
if (numeric->decimal_point_wc == L'\0') if (numeric->decimal_point_wc == L'\0')
numeric->decimal_point_wc = L'.'; numeric->decimal_point_wc = L'.';
if (numeric->grouping_len == 0 && ! be_quiet && ! nothing) if (numeric->grouping_len == 0 && ! be_quiet && ! nothing)
error (0, 0, _("%s: field `%s' not defined"), "LC_NUMERIC", "grouping"); WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_NUMERIC", "grouping"));
} }

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -28,6 +28,7 @@
#include <assert.h> #include <assert.h>
#include "localedef.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -88,7 +89,8 @@ paper_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (paper == NULL) if (paper == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), "LC_PAPER"); WITH_CUR_LOCALE (error (0, 0, _("\
No definition for %s category found"), "LC_PAPER"));
paper_startup (NULL, locale, 0); paper_startup (NULL, locale, 0);
paper = locale->categories[LC_PAPER].paper; paper = locale->categories[LC_PAPER].paper;
nothing = 1; nothing = 1;
@ -98,7 +100,8 @@ paper_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (paper->height == 0) if (paper->height == 0)
{ {
if (! nothing) if (! nothing)
error (0, 0, _("%s: field `%s' not defined"), "LC_PAPER", "height"); WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_PAPER", "height"));
/* Use as default values the values from the i18n locale. */ /* Use as default values the values from the i18n locale. */
paper->height = 297; paper->height = 297;
} }
@ -106,7 +109,8 @@ paper_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (paper->width == 0) if (paper->width == 0)
{ {
if (! nothing) if (! nothing)
error (0, 0, _("%s: field `%s' not defined"), "LC_PAPER", "width"); WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_PAPER", "width"));
/* Use as default values the values from the i18n locale. */ /* Use as default values the values from the i18n locale. */
paper->width = 210; paper->width = 210;
} }

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -28,6 +28,7 @@
#include <assert.h> #include <assert.h>
#include "localedef.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -91,8 +92,8 @@ telephone_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (telephone == NULL) if (telephone == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_TELEPHONE"); No definition for %s category found"), "LC_TELEPHONE"));
telephone_startup (NULL, locale, 0); telephone_startup (NULL, locale, 0);
telephone = locale->categories[LC_TELEPHONE].telephone; telephone = locale->categories[LC_TELEPHONE].telephone;
nothing = 1; nothing = 1;
@ -102,8 +103,8 @@ telephone_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (telephone->tel_int_fmt == NULL) if (telephone->tel_int_fmt == NULL)
{ {
if (! nothing) if (! nothing)
error (0, 0, _("%s: field `%s' not defined"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"),
"LC_TELEPHONE", "tel_int_fmt"); "LC_TELEPHONE", "tel_int_fmt"));
/* Use as the default value the value of the i18n locale. */ /* Use as the default value the value of the i18n locale. */
telephone->tel_int_fmt = "+%c %a %l"; telephone->tel_int_fmt = "+%c %a %l";
} }
@ -114,8 +115,8 @@ telephone_finish (struct localedef_t *locale, const struct charmap_t *charmap)
const char *cp = telephone->tel_int_fmt; const char *cp = telephone->tel_int_fmt;
if (*cp == '\0') if (*cp == '\0')
error (0, 0, _("%s: field `%s' must not be empty"), WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' must not be empty"),
"LC_TELEPHONE", "tel_int_fmt"); "LC_TELEPHONE", "tel_int_fmt"));
else else
while (*cp != '\0') while (*cp != '\0')
{ {
@ -123,9 +124,8 @@ telephone_finish (struct localedef_t *locale, const struct charmap_t *charmap)
{ {
if (strchr ("aAlc", *++cp) == NULL) if (strchr ("aAlc", *++cp) == NULL)
{ {
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: invalid escape sequence in field `%s'"), %s: invalid escape sequence in field `%s'"), "LC_TELEPHONE", "tel_int_fmt"));
"LC_TELEPHONE", "tel_int_fmt");
break; break;
} }
} }
@ -147,8 +147,8 @@ telephone_finish (struct localedef_t *locale, const struct charmap_t *charmap)
{ {
if (strchr ("aAlc", *++cp) == NULL) if (strchr ("aAlc", *++cp) == NULL)
{ {
error (0, 0, _("%s: invalid escape sequence in field `%s'"), WITH_CUR_LOCALE (error (0, 0, _("\
"LC_TELEPHONE", "tel_dom_fmt"); %s: invalid escape sequence in field `%s'"), "LC_TELEPHONE", "tel_dom_fmt"));
break; break;
} }
} }
@ -160,7 +160,8 @@ telephone_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (telephone->cat == NULL) \ if (telephone->cat == NULL) \
{ \ { \
if (verbose && ! nothing) \ if (verbose && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), "LC_TELEPHONE", #cat); \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_TELEPHONE", #cat)); \
telephone->cat = ""; \ telephone->cat = ""; \
} }

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995. Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@ -30,8 +30,8 @@
#include <assert.h> #include <assert.h>
#include "linereader.h"
#include "localedef.h" #include "localedef.h"
#include "linereader.h"
#include "localeinfo.h" #include "localeinfo.h"
#include "locfile.h" #include "locfile.h"
@ -157,7 +157,8 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (time == NULL) if (time == NULL)
{ {
if (! be_quiet) if (! be_quiet)
error (0, 0, _("No definition for %s category found"), "LC_TIME"); WITH_CUR_LOCALE (error (0, 0, _("\
No definition for %s category found"), "LC_TIME"));
time_startup (NULL, locale, 0); time_startup (NULL, locale, 0);
time = locale->categories[LC_TIME].time; time = locale->categories[LC_TIME].time;
nothing = 1; nothing = 1;
@ -172,7 +173,8 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
int i; \ int i; \
\ \
if (! be_quiet && ! nothing) \ if (! be_quiet && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), "LC_TIME", #cat); \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_TIME", #cat)); \
\ \
for (i = 0; i < sizeof (initval) / sizeof (initval[0]); ++i) \ for (i = 0; i < sizeof (initval) / sizeof (initval[0]); ++i) \
time->cat[i] = initval[i]; \ time->cat[i] = initval[i]; \
@ -192,7 +194,8 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (time->cat == NULL) \ if (time->cat == NULL) \
{ \ { \
if (! be_quiet && ! nothing) \ if (! be_quiet && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), "LC_TIME", #cat); \ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
"LC_TIME", #cat)); \
\ \
time->cat = initval; \ time->cat = initval; \
} }
@ -242,10 +245,9 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (*str != '+' && *str != '-') if (*str != '+' && *str != '-')
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, WITH_CUR_LOCALE (error (0, 0, _("\
_("%s: direction flag in string %Zd in `era' field" %s: direction flag in string %Zd in `era' field is not '+' nor '-'"),
" is not '+' nor '-'"), "LC_TIME", idx + 1));
"LC_TIME", idx + 1);
/* Default arbitrarily to '+'. */ /* Default arbitrarily to '+'. */
time->era_entries[idx].direction = '+'; time->era_entries[idx].direction = '+';
} }
@ -254,10 +256,9 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (*++str != ':') if (*++str != ':')
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, WITH_CUR_LOCALE (error (0, 0, _("\
_("%s: direction flag in string %Zd in `era' field" %s: direction flag in string %Zd in `era' field is not a single character"),
" is not a single character"), "LC_TIME", idx + 1));
"LC_TIME", idx + 1);
(void) strsep (&str, ":"); (void) strsep (&str, ":");
} }
else else
@ -268,17 +269,17 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (endp == str) if (endp == str)
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: invalid number for offset in string %Zd in" WITH_CUR_LOCALE (error (0, 0, _("\
" `era' field"), %s: invalid number for offset in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
(void) strsep (&str, ":"); (void) strsep (&str, ":");
} }
else if (*endp != ':') else if (*endp != ':')
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: garbage at end of offset value in" WITH_CUR_LOCALE (error (0, 0, _("\
" string %Zd in `era' field"), %s: garbage at end of offset value in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
(void) strsep (&str, ":"); (void) strsep (&str, ":");
} }
else else
@ -327,18 +328,18 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
{ {
invalid_start_date: invalid_start_date:
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: invalid starting date in string %Zd in" WITH_CUR_LOCALE (error (0, 0, _("\
" `era' field"), %s: invalid starting date in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
(void) strsep (&str, ":"); (void) strsep (&str, ":");
} }
else if (*endp != ':') else if (*endp != ':')
{ {
garbage_start_date: garbage_start_date:
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: garbage at end of starting date " WITH_CUR_LOCALE (error (0, 0, _("\
"in string %Zd in `era' field "), %s: garbage at end of starting date in string %Zd in `era' field "),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
(void) strsep (&str, ":"); (void) strsep (&str, ":");
} }
else else
@ -355,9 +356,9 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
&& time->era_entries[idx].start_date[2] == 29 && time->era_entries[idx].start_date[2] == 29
&& !__isleap (time->era_entries[idx].start_date[0]))) && !__isleap (time->era_entries[idx].start_date[0])))
&& !be_quiet) && !be_quiet)
error (0, 0, _("%s: starting date is invalid in" WITH_CUR_LOCALE (error (0, 0, _("\
" string %Zd in `era' field"), %s: starting date is invalid in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
} }
} }
@ -404,18 +405,18 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
{ {
invalid_stop_date: invalid_stop_date:
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: invalid stopping date in string %Zd in" WITH_CUR_LOCALE (error (0, 0, _("\
" `era' field"), %s: invalid stopping date in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
(void) strsep (&str, ":"); (void) strsep (&str, ":");
} }
else if (*endp != ':') else if (*endp != ':')
{ {
garbage_stop_date: garbage_stop_date:
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: garbage at end of stopping date " WITH_CUR_LOCALE (error (0, 0, _("\
"in string %Zd in `era' field"), %s: garbage at end of stopping date in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
(void) strsep (&str, ":"); (void) strsep (&str, ":");
} }
else else
@ -432,17 +433,17 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
&& time->era_entries[idx].stop_date[2] == 29 && time->era_entries[idx].stop_date[2] == 29
&& !__isleap (time->era_entries[idx].stop_date[0]))) && !__isleap (time->era_entries[idx].stop_date[0])))
&& !be_quiet) && !be_quiet)
error (0, 0, _("%s: stopping date is invalid in" WITH_CUR_LOCALE (error (0, 0, _("\
" string %Zd in `era' field"), %s: stopping date is invalid in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
} }
} }
if (str == NULL || *str == '\0') if (str == NULL || *str == '\0')
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: missing era name in string %Zd in `era'" WITH_CUR_LOCALE (error (0, 0, _("\
" field"), "LC_TIME", idx + 1); %s: missing era name in string %Zd in `era' field"), "LC_TIME", idx + 1));
time->era_entries[idx].name = time->era_entries[idx].name =
time->era_entries[idx].format = ""; time->era_entries[idx].format = "";
} }
@ -453,9 +454,9 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
if (str == NULL || *str == '\0') if (str == NULL || *str == '\0')
{ {
if (!be_quiet) if (!be_quiet)
error (0, 0, _("%s: missing era format in string %Zd" WITH_CUR_LOCALE (error (0, 0, _("\
" in `era' field"), %s: missing era format in string %Zd in `era' field"),
"LC_TIME", idx + 1); "LC_TIME", idx + 1));
time->era_entries[idx].name = time->era_entries[idx].name =
time->era_entries[idx].format = ""; time->era_entries[idx].format = "";
} }
@ -482,33 +483,33 @@ time_finish (struct localedef_t *locale, const struct charmap_t *charmap)
time->week_1stday = 19971130; time->week_1stday = 19971130;
if (time->week_1stweek > time->week_ndays) if (time->week_1stweek > time->week_ndays)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: third operand for value of field `%s' must not be larger than %d"), %s: third operand for value of field `%s' must not be larger than %d"),
"LC_TIME", "week", 7); "LC_TIME", "week", 7));
if (time->first_weekday == '\0') if (time->first_weekday == '\0')
/* The definition does not specify this so the default is used. */ /* The definition does not specify this so the default is used. */
time->first_weekday = 1; time->first_weekday = 1;
else if (time->first_weekday > time->week_ndays) else if (time->first_weekday > time->week_ndays)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: values of field `%s' must not be larger than %d"), %s: values of field `%s' must not be larger than %d"),
"LC_TIME", "first_weekday", 7); "LC_TIME", "first_weekday", 7));
if (time->first_workday == '\0') if (time->first_workday == '\0')
/* The definition does not specify this so the default is used. */ /* The definition does not specify this so the default is used. */
time->first_workday = 1; time->first_workday = 1;
else if (time->first_workday > time->week_ndays) else if (time->first_workday > time->week_ndays)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: values of field `%s' must not be larger than %d"), %s: values of field `%s' must not be larger than %d"),
"LC_TIME", "first_workday", 7); "LC_TIME", "first_workday", 7));
if (time->cal_direction == '\0') if (time->cal_direction == '\0')
/* The definition does not specify this so the default is used. */ /* The definition does not specify this so the default is used. */
time->cal_direction = 1; time->cal_direction = 1;
else if (time->cal_direction > 3) else if (time->cal_direction > 3)
error (0, 0, _("\ WITH_CUR_LOCALE (error (0, 0, _("\
%s: values for field `%s' must not be larger than %d"), %s: values for field `%s' must not be larger than %d"),
"LC_TIME", "cal_direction", 3); "LC_TIME", "cal_direction", 3));
/* XXX We don't perform any tests on the timezone value since this is /* XXX We don't perform any tests on the timezone value since this is
simply useless, stupid $&$!@... */ simply useless, stupid $&$!@... */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. /* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
@ -29,18 +29,12 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "localedef.h"
#include "charmap.h" #include "charmap.h"
#include "error.h" #include "error.h"
#include "linereader.h" #include "linereader.h"
#include "localedef.h"
#include "locfile.h" #include "locfile.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. */ /* Prototypes for local functions. */
static struct token *get_toplvl_escape (struct linereader *lr); static struct token *get_toplvl_escape (struct linereader *lr);
static struct token *get_symname (struct linereader *lr); static struct token *get_symname (struct linereader *lr);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. /* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.org>. Contributed by Ulrich Drepper, <drepper@gnu.org>.
@ -98,7 +98,7 @@ extern struct token *lr_token (struct linereader *lr,
#define lr_error(lr, fmt, args...) \ #define lr_error(lr, fmt, args...) \
error_at_line (0, 0, lr->fname, lr->lineno, fmt, ## args) WITH_CUR_LOCALE (error_at_line (0, 0, lr->fname, lr->lineno, fmt, ## args))

View File

@ -31,10 +31,11 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <error.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/stat.h> #include <sys/stat.h>
#include "error.h" #include "localedef.h"
#include "charmap.h" #include "charmap.h"
#include "locfile.h" #include "locfile.h"
@ -189,7 +190,8 @@ main (int argc, char *argv[])
defines error code 3 for this situation so I think it must be defines error code 3 for this situation so I think it must be
a fatal error (see P1003.2 4.35.8). */ a fatal error (see P1003.2 4.35.8). */
if (sysconf (_SC_2_LOCALEDEF) < 0) if (sysconf (_SC_2_LOCALEDEF) < 0)
error (3, 0, _("FATAL: system does not define `_POSIX2_LOCALEDEF'")); WITH_CUR_LOCALE (error (3, 0, _("\
FATAL: system does not define `_POSIX2_LOCALEDEF'")));
/* Process charmap file. */ /* Process charmap file. */
charmap = charmap_read (charmap_file, verbose, be_quiet, 1); charmap = charmap_read (charmap_file, verbose, be_quiet, 1);
@ -202,7 +204,8 @@ main (int argc, char *argv[])
/* Now read the locale file. */ /* Now read the locale file. */
if (locfile_read (&global, charmap) != 0) if (locfile_read (&global, charmap) != 0)
error (4, errno, _("cannot open locale definition file `%s'"), input_file); WITH_CUR_LOCALE (error (4, errno, _("\
cannot open locale definition file `%s'"), input_file));
/* Perhaps we saw some `copy' instructions. */ /* Perhaps we saw some `copy' instructions. */
while (1) while (1)
@ -217,8 +220,8 @@ main (int argc, char *argv[])
break; break;
if (locfile_read (runp, charmap) != 0) if (locfile_read (runp, charmap) != 0)
error (4, errno, _("cannot open locale definition file `%s'"), WITH_CUR_LOCALE (error (4, errno, _("\
runp->name); cannot open locale definition file `%s'"), runp->name));
} }
/* Check the categories we processed in source form. */ /* Check the categories we processed in source form. */
@ -229,13 +232,14 @@ main (int argc, char *argv[])
if (error_message_count == 0 || force_output != 0) if (error_message_count == 0 || force_output != 0)
{ {
if (cannot_write_why != 0) if (cannot_write_why != 0)
error (4, cannot_write_why, _("cannot write output files to `%s'"), WITH_CUR_LOCALE (error (4, cannot_write_why, _("\
output_path); cannot write output files to `%s'"), output_path));
else else
write_all_categories (locales, charmap, output_path); write_all_categories (locales, charmap, output_path);
} }
else else
error (4, 0, _("no output file produced because warning were issued")); WITH_CUR_LOCALE (error (4, 0, _("\
no output file produced because warning were issued")));
/* This exit status is prescribed by POSIX.2 4.35.7. */ /* This exit status is prescribed by POSIX.2 4.35.7. */
exit (error_message_count != 0); exit (error_message_count != 0);
@ -485,13 +489,14 @@ add_to_readlist (int locale, const char *name, const char *repertoire_name,
} }
if (generate && (runp->needed & (1 << locale)) != 0) if (generate && (runp->needed & (1 << locale)) != 0)
error (5, 0, _("circular dependencies between locale definitions")); WITH_CUR_LOCALE (error (5, 0, _("\
circular dependencies between locale definitions")));
if (copy_locale != NULL) if (copy_locale != NULL)
{ {
if (runp->categories[locale].generic != NULL) if (runp->categories[locale].generic != NULL)
error (5, 0, _("cannot add already read locale `%s' a second time"), WITH_CUR_LOCALE (error (5, 0, _("\
name); cannot add already read locale `%s' a second time"), name));
else else
runp->categories[locale].generic = runp->categories[locale].generic =
copy_locale->categories[locale].generic; copy_locale->categories[locale].generic;
@ -516,8 +521,8 @@ find_locale (int locale, const char *name, const char *repertoire_name,
if ((result->avail & (1 << locale)) == 0 if ((result->avail & (1 << locale)) == 0
&& locfile_read (result, charmap) != 0) && locfile_read (result, charmap) != 0)
error (4, errno, _("cannot open locale definition file `%s'"), WITH_CUR_LOCALE (error (4, errno, _("\
result->name); cannot open locale definition file `%s'"), result->name));
return result; return result;
} }
@ -536,8 +541,8 @@ load_locale (int locale, const char *name, const char *repertoire_name,
if ((result->avail & (1 << locale)) == 0 if ((result->avail & (1 << locale)) == 0
&& locfile_read (result, charmap) != 0) && locfile_read (result, charmap) != 0)
error (4, errno, _("cannot open locale definition file `%s'"), WITH_CUR_LOCALE (error (4, errno, _("\
result->name); cannot open locale definition file `%s'"), result->name));
return result; return result;
} }

View File

@ -24,6 +24,7 @@
/* Get the basic locale definitions. */ /* Get the basic locale definitions. */
#include <locale.h> #include <locale.h>
#include <stddef.h> #include <stddef.h>
#include <errno.h>
#include "repertoire.h" #include "repertoire.h"
@ -122,6 +123,19 @@ extern void *xrealloc (void *__p, size_t __n);
extern char *xstrdup (const char *__str); extern char *xstrdup (const char *__str);
/* Wrapper to switch LC_CTYPE back to the locale specified in the
environment for output. */
#define WITH_CUR_LOCALE(stmt) \
do { \
int saved_errno = errno; \
const char *cur_locale_ = setlocale (LC_CTYPE, NULL); \
setlocale (LC_CTYPE, ""); \
errno = saved_errno; \
stmt; \
setlocale (LC_CTYPE, cur_locale_); \
} while (0)
/* Mark given locale as to be read. */ /* Mark given locale as to be read. */
extern struct localedef_t *add_to_readlist (int locale, const char *name, extern struct localedef_t *add_to_readlist (int locale, const char *name,
const char *repertoire_name, const char *repertoire_name,

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. /* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
@ -568,9 +568,8 @@ write_locale_data (const char *output_path, const char *category,
if (fd == -1) if (fd == -1)
{ {
if (!be_quiet) if (!be_quiet)
error (0, save_err, _("\ WITH_CUR_LOCALE (error (0, save_err, _("\
cannot open output file `%s' for category `%s'"), cannot open output file `%s' for category `%s'"), fname, category));
fname, category);
free (fname); free (fname);
return; return;
} }
@ -593,8 +592,8 @@ cannot open output file `%s' for category `%s'"),
if (writev (fd, &vec[cnt], step) < 0) if (writev (fd, &vec[cnt], step) < 0)
{ {
if (!be_quiet) if (!be_quiet)
error (0, errno, _("failure while writing data for category `%s'"), WITH_CUR_LOCALE (error (0, errno, _("\
category); failure while writing data for category `%s'"), category));
break; break;
} }
} }
@ -690,9 +689,8 @@ cannot open output file `%s' for category `%s'"),
if (rename (tmp_fname, fname) < 0) if (rename (tmp_fname, fname) < 0)
{ {
if (!be_quiet) if (!be_quiet)
error (0, errno, _("\ WITH_CUR_LOCALE (error (0, errno, _("\
cannot create output file `%s' for category `%s'"), cannot create output file `%s' for category `%s'"), fname, category));
fname, category);
} }
free (tmp_fname); free (tmp_fname);
free (other_fname); free (other_fname);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -30,11 +30,11 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include "localedef.h"
#include "linereader.h" #include "linereader.h"
#include "charmap.h" #include "charmap.h"
#include "repertoire.h" #include "repertoire.h"
#include "simple-hash.h" #include "simple-hash.h"
#include "localedef.h"
/* Simple keyword hashing for the repertoiremap. */ /* Simple keyword hashing for the repertoiremap. */
@ -322,13 +322,14 @@ argument to <%s> must be a single character"),
} }
if (state != 2 && state != 90 && !be_quiet) if (state != 2 && state != 90 && !be_quiet)
error (0, 0, _("%s: premature end of file"), repfile->fname); WITH_CUR_LOCALE (error (0, 0, _("%s: premature end of file"),
repfile->fname));
lr_close (repfile); lr_close (repfile);
if (tsearch (result, &known, &repertoire_compare) == NULL) if (tsearch (result, &known, &repertoire_compare) == NULL)
/* Something went wrong. */ /* Something went wrong. */
error (0, errno, _("cannot safe new repertoire map")); WITH_CUR_LOCALE (error (0, errno, _("cannot safe new repertoire map")));
return result; return result;
} }
@ -339,7 +340,8 @@ repertoire_complain (const char *name)
{ {
if (tfind (name, &unavailable, (__compar_fn_t) strcmp) == NULL) if (tfind (name, &unavailable, (__compar_fn_t) strcmp) == NULL)
{ {
error (0, errno, _("repertoire map file `%s' not found"), name); WITH_CUR_LOCALE (error (0, errno, _("\
repertoire map file `%s' not found"), name));
/* Remember that we reported this map. */ /* Remember that we reported this map. */
tsearch (name, &unavailable, (__compar_fn_t) strcmp); tsearch (name, &unavailable, (__compar_fn_t) strcmp);