* locale/xlocale.c (_nl_C_locobj): Mark as const.

* include/locale.h: Define _nl_C_locobj_ptr.
	* iconv/gconv_charset.h: Use _nl_C_locobj_ptr instead of using pointer
	to _nl_C_locobj because we also need a cast.
	* iconv/gconv_conf.c: Likewise.
	* iconv/gconv_int.h: Likewise.
	* iconv/gconv_open.c: Likewise.
	* locale/duplocale.c: Likewise.
	* locale/freelocale.c: Likewise.
	* locale/newlocale.c: Likewise.
	* misc/syslog.c: Likewise.
	* stdlib/strtod_l.c: Likewise.
	* sysdeps/unix/sysv/linux/getloadavg.c: Likewise.
This commit is contained in:
Ulrich Drepper 2005-12-21 07:28:33 +00:00
parent 808e0190f7
commit 4b5b009cc3
13 changed files with 57 additions and 42 deletions

View File

@ -1,5 +1,19 @@
2005-12-20 Ulrich Drepper <drepper@redhat.com> 2005-12-20 Ulrich Drepper <drepper@redhat.com>
* locale/xlocale.c (_nl_C_locobj): Mark as const.
* include/locale.h: Define _nl_C_locobj_ptr.
* iconv/gconv_charset.h: Use _nl_C_locobj_ptr instead of using pointer
to _nl_C_locobj because we also need a cast.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_open.c: Likewise.
* locale/duplocale.c: Likewise.
* locale/freelocale.c: Likewise.
* locale/newlocale.c: Likewise.
* misc/syslog.c: Likewise.
* stdlib/strtod_l.c: Likewise.
* sysdeps/unix/sysv/linux/getloadavg.c: Likewise.
* csu/dso_handle.c (__dso_handle): Mark as const. * csu/dso_handle.c (__dso_handle): Mark as const.
* intl/plural-exp.c (GERMANIC_PLURAL): Mark as const. * intl/plural-exp.c (GERMANIC_PLURAL): Mark as const.

View File

@ -1,5 +1,5 @@
/* Charset name normalization. /* Charset name normalization.
Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2003, 2004, 2005 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>, 2001. Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
@ -29,9 +29,9 @@ strip (char *wp, const char *s)
while (*s != '\0') while (*s != '\0')
{ {
if (__isalnum_l (*s, &_nl_C_locobj) if (__isalnum_l (*s, _nl_C_locobj_ptr)
|| *s == '_' || *s == '-' || *s == '.' || *s == ',') || *s == '_' || *s == '-' || *s == '.' || *s == ',')
*wp++ = __toupper_l (*s, &_nl_C_locobj); *wp++ = __toupper_l (*s, _nl_C_locobj_ptr);
else if (*s == '/') else if (*s == '/')
{ {
if (++slash_count == 3) if (++slash_count == 3)
@ -52,7 +52,7 @@ static inline char * __attribute__ ((unused, always_inline))
upstr (char *dst, const char *str) upstr (char *dst, const char *str)
{ {
char *cp = dst; char *cp = dst;
while ((*cp++ = __toupper_l (*str++, &_nl_C_locobj)) != '\0') while ((*cp++ = __toupper_l (*str++, _nl_C_locobj_ptr)) != '\0')
/* nothing */; /* nothing */;
return dst; return dst;
} }

View File

@ -133,20 +133,20 @@ add_alias (char *rp, void *modules)
struct gconv_alias *new_alias; struct gconv_alias *new_alias;
char *from, *to, *wp; char *from, *to, *wp;
while (__isspace_l (*rp, &_nl_C_locobj)) while (__isspace_l (*rp, _nl_C_locobj_ptr))
++rp; ++rp;
from = wp = rp; from = wp = rp;
while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr))
*wp++ = __toupper_l (*rp++, &_nl_C_locobj); *wp++ = __toupper_l (*rp++, _nl_C_locobj_ptr);
if (*rp == '\0') if (*rp == '\0')
/* There is no `to' string on the line. Ignore it. */ /* There is no `to' string on the line. Ignore it. */
return; return;
*wp++ = '\0'; *wp++ = '\0';
to = ++rp; to = ++rp;
while (__isspace_l (*rp, &_nl_C_locobj)) while (__isspace_l (*rp, _nl_C_locobj_ptr))
++rp; ++rp;
while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr))
*wp++ = __toupper_l (*rp++, &_nl_C_locobj); *wp++ = __toupper_l (*rp++, _nl_C_locobj_ptr);
if (to == wp) if (to == wp)
/* No `to' string, ignore the line. */ /* No `to' string, ignore the line. */
return; return;
@ -254,30 +254,30 @@ add_module (char *rp, const char *directory, size_t dir_len, void **modules,
int need_ext; int need_ext;
int cost_hi; int cost_hi;
while (__isspace_l (*rp, &_nl_C_locobj)) while (__isspace_l (*rp, _nl_C_locobj_ptr))
++rp; ++rp;
from = rp; from = rp;
while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr))
{ {
*rp = __toupper_l (*rp, &_nl_C_locobj); *rp = __toupper_l (*rp, _nl_C_locobj_ptr);
++rp; ++rp;
} }
if (*rp == '\0') if (*rp == '\0')
return; return;
*rp++ = '\0'; *rp++ = '\0';
to = wp = rp; to = wp = rp;
while (__isspace_l (*rp, &_nl_C_locobj)) while (__isspace_l (*rp, _nl_C_locobj_ptr))
++rp; ++rp;
while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr))
*wp++ = __toupper_l (*rp++, &_nl_C_locobj); *wp++ = __toupper_l (*rp++, _nl_C_locobj_ptr);
if (*rp == '\0') if (*rp == '\0')
return; return;
*wp++ = '\0'; *wp++ = '\0';
do do
++rp; ++rp;
while (__isspace_l (*rp, &_nl_C_locobj)); while (__isspace_l (*rp, _nl_C_locobj_ptr));
module = wp; module = wp;
while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr))
*wp++ = *rp++; *wp++ = *rp++;
if (*rp == '\0') if (*rp == '\0')
{ {
@ -392,7 +392,7 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len,
if (rp[n - 1] == '\n') if (rp[n - 1] == '\n')
rp[n - 1] = '\0'; rp[n - 1] = '\0';
while (__isspace_l (*rp, &_nl_C_locobj)) while (__isspace_l (*rp, _nl_C_locobj_ptr))
++rp; ++rp;
/* If this is an empty line go on with the next one. */ /* If this is an empty line go on with the next one. */
@ -400,7 +400,7 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len,
continue; continue;
word = rp; word = rp;
while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr))
++rp; ++rp;
if (rp - word == sizeof ("alias") - 1 if (rp - word == sizeof ("alias") - 1

View File

@ -148,7 +148,7 @@ __libc_lock_define (extern, __gconv_lock);
tmp = result = __alloca (cp - (str) + 3 + suffix_len); \ tmp = result = __alloca (cp - (str) + 3 + suffix_len); \
cp = (str); \ cp = (str); \
while (*cp != '\0') \ while (*cp != '\0') \
*tmp++ = __toupper_l (*cp++, &_nl_C_locobj); \ *tmp++ = __toupper_l (*cp++, _nl_C_locobj_ptr); \
if (cnt < 2) \ if (cnt < 2) \
{ \ { \
*tmp++ = '/'; \ *tmp++ = '/'; \

View File

@ -67,7 +67,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
tok = __strtok_r (tok, ",", &ptr); tok = __strtok_r (tok, ",", &ptr);
while (tok != NULL) while (tok != NULL)
{ {
if (__strcasecmp_l (tok, "TRANSLIT", &_nl_C_locobj) == 0) if (__strcasecmp_l (tok, "TRANSLIT", _nl_C_locobj_ptr) == 0)
{ {
/* It's the builtin transliteration handling. We only /* It's the builtin transliteration handling. We only
support it for working on the internal encoding. */ support it for working on the internal encoding. */
@ -101,7 +101,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
lastp->next = newp; lastp->next = newp;
} }
} }
else if (__strcasecmp_l (tok, "IGNORE", &_nl_C_locobj) == 0) else if (__strcasecmp_l (tok, "IGNORE", _nl_C_locobj_ptr) == 0)
/* Set the flag to ignore all errors. */ /* Set the flag to ignore all errors. */
conv_flags |= __GCONV_IGNORE_ERRORS; conv_flags |= __GCONV_IGNORE_ERRORS;
else else
@ -115,7 +115,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
for (runp = trans; runp != NULL; runp = runp->next) for (runp = trans; runp != NULL; runp = runp->next)
if (runp->name != NULL if (runp->name != NULL
&& __strcasecmp_l (tok, runp->name, && __strcasecmp_l (tok, runp->name,
&_nl_C_locobj) == 0) _nl_C_locobj_ptr) == 0)
break; break;
else else
lastp = runp; lastp = runp;
@ -235,7 +235,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
for (runp = trans; runp != NULL; runp = runp->next) for (runp = trans; runp != NULL; runp = runp->next)
for (n = 0; n < runp->ncsnames; ++n) for (n = 0; n < runp->ncsnames; ++n)
if (__strcasecmp_l (steps[cnt].__from_name, if (__strcasecmp_l (steps[cnt].__from_name,
runp->csnames[n], &_nl_C_locobj) == 0) runp->csnames[n], _nl_C_locobj_ptr) == 0)
{ {
void *data = NULL; void *data = NULL;

View File

@ -11,7 +11,8 @@ libc_hidden_proto (setlocale)
extern struct loaded_l10nfile *_nl_locale_file_list[] attribute_hidden; extern struct loaded_l10nfile *_nl_locale_file_list[] attribute_hidden;
/* Locale object for C locale. */ /* Locale object for C locale. */
extern struct __locale_struct _nl_C_locobj attribute_hidden; extern const struct __locale_struct _nl_C_locobj attribute_hidden;
#define _nl_C_locobj_ptr ((struct __locale_struct *) &_nl_C_locobj)
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern struct lconv *__localeconv (void); extern struct lconv *__localeconv (void);

View File

@ -1,5 +1,5 @@
/* Duplicate handle for selection of locales. /* Duplicate handle for selection of locales.
Copyright (C) 1997, 2000, 2001, 2002 Free Software Foundation, Inc. Copyright (C) 1997, 2000, 2001, 2002, 2005 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>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -34,7 +34,7 @@ __locale_t
__duplocale (__locale_t dataset) __duplocale (__locale_t dataset)
{ {
/* This static object is returned for newlocale (LC_ALL_MASK, "C"). */ /* This static object is returned for newlocale (LC_ALL_MASK, "C"). */
if (dataset == &_nl_C_locobj) if (dataset == _nl_C_locobj_ptr)
return dataset; return dataset;
__locale_t result; __locale_t result;

View File

@ -1,5 +1,5 @@
/* Free data allocated by a call to setlocale_r /* Free data allocated by a call to setlocale_r
Copyright (C) 1996, 1997, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2000, 2002, 2005 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>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -35,7 +35,7 @@ __freelocale (__locale_t dataset)
int cnt; int cnt;
/* This static object is returned for newlocale (LC_ALL_MASK, "C"). */ /* This static object is returned for newlocale (LC_ALL_MASK, "C"). */
if (dataset == &_nl_C_locobj) if (dataset == _nl_C_locobj_ptr)
return; return;
/* We modify global data (the usage counts). */ /* We modify global data (the usage counts). */

View File

@ -1,5 +1,5 @@
/* Return a reference to locale information record. /* Return a reference to locale information record.
Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004 Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005
Free Software Foundation, Inc. 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>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -66,7 +66,7 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
if (locale == NULL) if (locale == NULL)
ERROR_RETURN; ERROR_RETURN;
if (base == &_nl_C_locobj) if (base == _nl_C_locobj_ptr)
/* We're to modify BASE, returned for a previous call with "C". /* We're to modify BASE, returned for a previous call with "C".
We can't really modify the read-only structure, so instead We can't really modify the read-only structure, so instead
start over by copying it. */ start over by copying it. */
@ -75,7 +75,7 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
if ((base == NULL || category_mask == (1 << __LC_LAST) - 1 - (1 << LC_ALL)) if ((base == NULL || category_mask == (1 << __LC_LAST) - 1 - (1 << LC_ALL))
&& (category_mask == 0 || !strcmp (locale, "C"))) && (category_mask == 0 || !strcmp (locale, "C")))
/* Asking for the "C" locale needn't allocate a new object. */ /* Asking for the "C" locale needn't allocate a new object. */
return &_nl_C_locobj; return _nl_C_locobj_ptr;
/* Allocate memory for the result. */ /* Allocate memory for the result. */
if (base != NULL) if (base != NULL)

View File

@ -1,5 +1,5 @@
/* C locale object. /* C locale object.
Copyright (C) 2001, 2002 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2005 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>, 2001. Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
@ -32,7 +32,7 @@ extern const char _nl_C_LC_CTYPE_toupper[] attribute_hidden;
extern const char _nl_C_LC_CTYPE_tolower[] attribute_hidden; extern const char _nl_C_LC_CTYPE_tolower[] attribute_hidden;
struct __locale_struct _nl_C_locobj attribute_hidden = const struct __locale_struct _nl_C_locobj attribute_hidden =
{ {
.__locales = .__locales =
{ {

View File

@ -195,7 +195,7 @@ __vsyslog_chk(int pri, int flag, const char *fmt, va_list ap)
- f->_IO_write_ptr, - f->_IO_write_ptr,
"%h %e %T ", "%h %e %T ",
__localtime_r (&now, &now_tm), __localtime_r (&now, &now_tm),
&_nl_C_locobj); _nl_C_locobj_ptr);
msgoff = ftell (f); msgoff = ftell (f);
if (LogTag == NULL) if (LogTag == NULL)
LogTag = __progname; LogTag = __progname;

View File

@ -100,9 +100,9 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
# define ISDIGIT(Ch) __iswdigit_l ((Ch), loc) # define ISDIGIT(Ch) __iswdigit_l ((Ch), loc)
# define ISXDIGIT(Ch) __iswxdigit_l ((Ch), loc) # define ISXDIGIT(Ch) __iswxdigit_l ((Ch), loc)
# define TOLOWER(Ch) __towlower_l ((Ch), loc) # define TOLOWER(Ch) __towlower_l ((Ch), loc)
# define TOLOWER_C(Ch) __towlower_l ((Ch), &_nl_C_locobj) # define TOLOWER_C(Ch) __towlower_l ((Ch), _nl_C_locobj_ptr)
# define STRNCASECMP(S1, S2, N) \ # define STRNCASECMP(S1, S2, N) \
__wcsncasecmp_l ((S1), (S2), (N), &_nl_C_locobj) __wcsncasecmp_l ((S1), (S2), (N), _nl_C_locobj_ptr)
# define STRTOULL(S, E, B) ____wcstoull_l_internal ((S), (E), (B), 0, loc) # define STRTOULL(S, E, B) ____wcstoull_l_internal ((S), (E), (B), 0, loc)
#else #else
# define STRING_TYPE char # define STRING_TYPE char
@ -112,9 +112,9 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
# define ISDIGIT(Ch) __isdigit_l ((Ch), loc) # define ISDIGIT(Ch) __isdigit_l ((Ch), loc)
# define ISXDIGIT(Ch) __isxdigit_l ((Ch), loc) # define ISXDIGIT(Ch) __isxdigit_l ((Ch), loc)
# define TOLOWER(Ch) __tolower_l ((Ch), loc) # define TOLOWER(Ch) __tolower_l ((Ch), loc)
# define TOLOWER_C(Ch) __tolower_l ((Ch), &_nl_C_locobj) # define TOLOWER_C(Ch) __tolower_l ((Ch), _nl_C_locobj_ptr)
# define STRNCASECMP(S1, S2, N) \ # define STRNCASECMP(S1, S2, N) \
__strncasecmp_l ((S1), (S2), (N), &_nl_C_locobj) __strncasecmp_l ((S1), (S2), (N), _nl_C_locobj_ptr)
# define STRTOULL(S, E, B) ____strtoull_l_internal ((S), (E), (B), 0, loc) # define STRTOULL(S, E, B) ____strtoull_l_internal ((S), (E), (B), 0, loc)
#endif #endif

View File

@ -1,5 +1,5 @@
/* Get system load averages. Linux (/proc/loadavg) version. /* Get system load averages. Linux (/proc/loadavg) version.
Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc. Copyright (C) 1999, 2000, 2001, 2003, 2005 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
@ -55,7 +55,7 @@ getloadavg (double loadavg[], int nelem)
for (i = 0; i < nelem; ++i) for (i = 0; i < nelem; ++i)
{ {
char *endp; char *endp;
loadavg[i] = __strtod_l (p, &endp, &_nl_C_locobj); loadavg[i] = __strtod_l (p, &endp, _nl_C_locobj_ptr);
if (endp == p) if (endp == p)
/* This should not happen. The format of /proc/loadavg /* This should not happen. The format of /proc/loadavg
must have changed. Don't return with what we have, must have changed. Don't return with what we have,