From baa0a2c9a410a88fcacdf82abc7d21b0c99c7cd3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 21 Dec 2005 09:35:28 +0000 Subject: Updated to fedora-glibc-20051221T0931 --- ChangeLog | 75 +++++++++++++++++++++++++++++++++ csu/dso_handle.c | 5 ++- fedora/branch.mk | 4 +- fedora/glibc.spec.in | 7 +++- iconv/gconv_charset.h | 8 ++-- iconv/gconv_conf.c | 32 +++++++-------- iconv/gconv_int.h | 2 +- iconv/gconv_open.c | 8 ++-- include/locale.h | 3 +- intl/plural-exp.c | 4 +- intl/plural-exp.h | 4 +- io/fts.c | 13 +++--- locale/duplocale.c | 4 +- locale/freelocale.c | 4 +- locale/newlocale.c | 6 +-- locale/xlocale.c | 4 +- misc/getusershell.c | 16 +++----- misc/syslog.c | 2 +- nss/databases.def | 5 ++- nss/nsswitch.c | 6 +-- resolv/herror.c | 4 +- resolv/res_hconf.c | 10 ++--- stdlib/strtod_l.c | 8 ++-- sunrpc/auth_des.c | 4 +- sunrpc/auth_none.c | 6 +-- sunrpc/auth_unix.c | 4 +- sunrpc/clnt_raw.c | 4 +- sunrpc/clnt_tcp.c | 4 +- sunrpc/clnt_udp.c | 4 +- sunrpc/clnt_unix.c | 4 +- sunrpc/svc_raw.c | 4 +- sysdeps/mach/hurd/ifreq.c | 59 ++++++++++++++++++++++++++ sysdeps/mach/hurd/ifreq.h | 80 ------------------------------------ sysdeps/mach/hurd/xmknod.c | 12 ++++-- sysdeps/unix/sysv/linux/getloadavg.c | 4 +- sysdeps/unix/sysv/linux/ifreq.c | 3 +- sysdeps/unix/sysv/linux/ifreq.h | 41 ------------------ 37 files changed, 245 insertions(+), 222 deletions(-) create mode 100644 sysdeps/mach/hurd/ifreq.c delete mode 100644 sysdeps/mach/hurd/ifreq.h delete mode 100644 sysdeps/unix/sysv/linux/ifreq.h diff --git a/ChangeLog b/ChangeLog index e5003fb02b..93c0f79b0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,80 @@ +2005-12-21 Ulrich Drepper + + [BZ #1962] + * io/fts.c (fts_open): Change type of len to size_t. + (fts_build): Remove cast in call to fts_alloc. + (fts_alloc): Change third parameter's type to size_t. + + [BZ #1960] + * io/fts.c (fts_open): Avoid function call in MAX macro use. + 2005-12-20 Ulrich Drepper + * 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. + + * intl/plural-exp.c (GERMANIC_PLURAL): Mark as const. + * intl/plural-exp.h: Adjust declaration of + __gettext_germanic_plural. + + * resolv/herror.c (h_errlist): Mark as const. + (h_nerr): Likewise. + +2005-12-15 Thomas Schwinge + + [BZ #2061] + * sysdeps/mach/hurd/xmknod.c (__xmknod): Handle S_IFREG. + +2005-12-20 Roland McGrath + + * sysdeps/unix/sysv/linux/ifreq.h: File removed. + * sysdeps/unix/sysv/linux/ifreq.c: #include "kernel-features.h" here. + + * sysdeps/mach/hurd/ifreq.h: File removed. + (__ifreq): Function moved to ... + * sysdeps/mach/hurd/ifreq.c: ... here, new file. + +2005-12-20 Ulrich Drepper + + * sunrpc/clnt_unix.c (unix_ops): Mark as const. + * sunrpc/auth_des.c (authdes_ops): Likewise. + * sunrpc/svc_raw.c (server_ops): Likewise. + * sunrpc/clnt_udp.c (udp_ops): Likewise. + * sunrpc/clnt_tcp.c (tcp_ops): Likewise. + * sunrpc/clnt_raw.c (client_ops): Likewise. + * sunrpc/auth_unix.c (auth_unix_ops): Likewise. + * sunrpc/auth_none.c (ops): Likewise. + + * nss/nsswitch.c (databases): Mark as const. Change name field + into array. + * nss/databases.def: Add warning. + + * resolv/res_hconf.c (arg_service_list): Reduce size of svcs and + mark const. + (cmd): Mark as const. + (parse_line): Mark c as pointer to const. + + * misc/getusershell.c (initshells): Remove unnecessary tests. + (endusershell): Likewise. + (okshells): Mark as const. + + * sysdeps/posix/gai_strerror.c: Complete rewrite. Avoid relocations. + * sysdeps/posix/gai_strerror-strs.h: New file. + * sysdeps/posix/Dist: New file. + * sysdeps/posix/getaddrinfo.c (gaih): Mark as const. * locale/loadlocale.c (_nl_value_types): Likewise. * iconv/gconv_conf.c (builtin_aliases): Likewise. diff --git a/csu/dso_handle.c b/csu/dso_handle.c index 04ed078625..72f80889d7 100644 --- a/csu/dso_handle.c +++ b/csu/dso_handle.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -18,4 +18,5 @@ /* We have to define __dso_handle ourselves since we do not use gcc's crtbegin files. */ -void *__dso_handle __attribute__ ((__visibility__ ("hidden"))) = &__dso_handle; +void *const __dso_handle __attribute__ ((__visibility__ ("hidden"))) + = &__dso_handle; diff --git a/fedora/branch.mk b/fedora/branch.mk index e40e93094d..43a878b1bd 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-fc4 -fedora-sync-date := 2005-12-20 17:51 UTC -fedora-sync-tag := fedora-glibc-20051220T1751 +fedora-sync-date := 2005-12-21 09:31 UTC +fedora-sync-tag := fedora-glibc-20051221T0931 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index ea7640684d..d28e5481ab 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -1,4 +1,4 @@ -%define glibcrelease 21 +%define glibcrelease 22 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define prelinkarches noarch %define xenarches i686 athlon @@ -1074,6 +1074,11 @@ rm -f *.filelist* %endif %changelog +* Wed Dec 21 2005 Jakub Jelinek 2.3.90-22 +- update from CVS + - minor fts fixes +- revert broken _Pragma () workaround + * Tue Dec 20 2005 Jakub Jelinek 2.3.90-21 - update from CVS - fix pointer (de)mangling in gconv_cache.c diff --git a/iconv/gconv_charset.h b/iconv/gconv_charset.h index 4a3db73118..c18abec578 100644 --- a/iconv/gconv_charset.h +++ b/iconv/gconv_charset.h @@ -1,5 +1,5 @@ /* 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. Contributed by Ulrich Drepper , 2001. @@ -29,9 +29,9 @@ strip (char *wp, const char *s) while (*s != '\0') { - if (__isalnum_l (*s, &_nl_C_locobj) + if (__isalnum_l (*s, _nl_C_locobj_ptr) || *s == '_' || *s == '-' || *s == '.' || *s == ',') - *wp++ = __toupper_l (*s, &_nl_C_locobj); + *wp++ = __toupper_l (*s, _nl_C_locobj_ptr); else if (*s == '/') { if (++slash_count == 3) @@ -52,7 +52,7 @@ static inline char * __attribute__ ((unused, always_inline)) upstr (char *dst, const char *str) { char *cp = dst; - while ((*cp++ = __toupper_l (*str++, &_nl_C_locobj)) != '\0') + while ((*cp++ = __toupper_l (*str++, _nl_C_locobj_ptr)) != '\0') /* nothing */; return dst; } diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c index 37179518ba..78f41cb368 100644 --- a/iconv/gconv_conf.c +++ b/iconv/gconv_conf.c @@ -133,20 +133,20 @@ add_alias (char *rp, void *modules) struct gconv_alias *new_alias; char *from, *to, *wp; - while (__isspace_l (*rp, &_nl_C_locobj)) + while (__isspace_l (*rp, _nl_C_locobj_ptr)) ++rp; from = wp = rp; - while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) - *wp++ = __toupper_l (*rp++, &_nl_C_locobj); + while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr)) + *wp++ = __toupper_l (*rp++, _nl_C_locobj_ptr); if (*rp == '\0') /* There is no `to' string on the line. Ignore it. */ return; *wp++ = '\0'; to = ++rp; - while (__isspace_l (*rp, &_nl_C_locobj)) + while (__isspace_l (*rp, _nl_C_locobj_ptr)) ++rp; - while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) - *wp++ = __toupper_l (*rp++, &_nl_C_locobj); + while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr)) + *wp++ = __toupper_l (*rp++, _nl_C_locobj_ptr); if (to == wp) /* No `to' string, ignore the line. */ return; @@ -254,30 +254,30 @@ add_module (char *rp, const char *directory, size_t dir_len, void **modules, int need_ext; int cost_hi; - while (__isspace_l (*rp, &_nl_C_locobj)) + while (__isspace_l (*rp, _nl_C_locobj_ptr)) ++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; } if (*rp == '\0') return; *rp++ = '\0'; to = wp = rp; - while (__isspace_l (*rp, &_nl_C_locobj)) + while (__isspace_l (*rp, _nl_C_locobj_ptr)) ++rp; - while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) - *wp++ = __toupper_l (*rp++, &_nl_C_locobj); + while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr)) + *wp++ = __toupper_l (*rp++, _nl_C_locobj_ptr); if (*rp == '\0') return; *wp++ = '\0'; do ++rp; - while (__isspace_l (*rp, &_nl_C_locobj)); + while (__isspace_l (*rp, _nl_C_locobj_ptr)); module = wp; - while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) + while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr)) *wp++ = *rp++; 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') rp[n - 1] = '\0'; - while (__isspace_l (*rp, &_nl_C_locobj)) + while (__isspace_l (*rp, _nl_C_locobj_ptr)) ++rp; /* 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; word = rp; - while (*rp != '\0' && !__isspace_l (*rp, &_nl_C_locobj)) + while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr)) ++rp; if (rp - word == sizeof ("alias") - 1 diff --git a/iconv/gconv_int.h b/iconv/gconv_int.h index 768ebf0a97..ace2bae1c6 100644 --- a/iconv/gconv_int.h +++ b/iconv/gconv_int.h @@ -148,7 +148,7 @@ __libc_lock_define (extern, __gconv_lock); tmp = result = __alloca (cp - (str) + 3 + suffix_len); \ cp = (str); \ while (*cp != '\0') \ - *tmp++ = __toupper_l (*cp++, &_nl_C_locobj); \ + *tmp++ = __toupper_l (*cp++, _nl_C_locobj_ptr); \ if (cnt < 2) \ { \ *tmp++ = '/'; \ diff --git a/iconv/gconv_open.c b/iconv/gconv_open.c index 95f3203394..bbf27b3dc5 100644 --- a/iconv/gconv_open.c +++ b/iconv/gconv_open.c @@ -67,7 +67,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle, tok = __strtok_r (tok, ",", &ptr); 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 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; } } - 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. */ conv_flags |= __GCONV_IGNORE_ERRORS; else @@ -115,7 +115,7 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle, for (runp = trans; runp != NULL; runp = runp->next) if (runp->name != NULL && __strcasecmp_l (tok, runp->name, - &_nl_C_locobj) == 0) + _nl_C_locobj_ptr) == 0) break; else 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 (n = 0; n < runp->ncsnames; ++n) 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; diff --git a/include/locale.h b/include/locale.h index 22770b9ad2..5226001929 100644 --- a/include/locale.h +++ b/include/locale.h @@ -11,7 +11,8 @@ libc_hidden_proto (setlocale) extern struct loaded_l10nfile *_nl_locale_file_list[] attribute_hidden; /* 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. */ extern struct lconv *__localeconv (void); diff --git a/intl/plural-exp.c b/intl/plural-exp.c index ba5d455cd5..9cb7a4540a 100644 --- a/intl/plural-exp.c +++ b/intl/plural-exp.c @@ -1,5 +1,5 @@ /* Expression parsing for plural form selection. - Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. This file is part of the GNU C Library. @@ -47,7 +47,7 @@ static const struct expression plone = .num = 1 } }; -struct expression GERMANIC_PLURAL = +const struct expression GERMANIC_PLURAL = { .nargs = 2, .operation = not_equal, diff --git a/intl/plural-exp.h b/intl/plural-exp.h index 75c702f79c..f8a5c87ff0 100644 --- a/intl/plural-exp.h +++ b/intl/plural-exp.h @@ -1,5 +1,5 @@ /* Expression parsing and evaluation for plural form selection. - Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2005 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. This file is part of the GNU C Library. @@ -113,7 +113,7 @@ struct parse_args extern void FREE_EXPRESSION PARAMS ((struct expression *exp)) internal_function; extern int PLURAL_PARSE PARAMS ((void *arg)); -extern struct expression GERMANIC_PLURAL attribute_hidden; +extern const struct expression GERMANIC_PLURAL attribute_hidden; extern void EXTRACT_PLURAL_EXPRESSION PARAMS ((const char *nullentry, struct expression **pluralp, unsigned long int *npluralsp)) diff --git a/io/fts.c b/io/fts.c index f0df56cc7b..2b99206b88 100644 --- a/io/fts.c +++ b/io/fts.c @@ -53,7 +53,7 @@ static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94"; #endif -static FTSENT *fts_alloc (FTS *, const char *, int) internal_function; +static FTSENT *fts_alloc (FTS *, const char *, size_t) internal_function; static FTSENT *fts_build (FTS *, int) internal_function; static void fts_lfree (FTSENT *) internal_function; static void fts_load (FTS *, FTSENT *) internal_function; @@ -94,7 +94,6 @@ fts_open(argv, options, compar) register FTSENT *p, *root; register int nitems; FTSENT *parent, *tmp; - int len; /* Options check. */ if (options & ~FTS_OPTIONMASK) { @@ -120,7 +119,8 @@ fts_open(argv, options, compar) #ifndef MAXPATHLEN #define MAXPATHLEN 1024 #endif - if (fts_palloc(sp, MAX(fts_maxarglen(argv), MAXPATHLEN))) + size_t maxarglen = fts_maxarglen(argv); + if (fts_palloc(sp, MAX(maxarglen, MAXPATHLEN))) goto mem1; /* Allocate/initialize root's parent. */ @@ -131,7 +131,8 @@ fts_open(argv, options, compar) /* Allocate/initialize root(s). */ for (root = NULL, nitems = 0; *argv != NULL; ++argv, ++nitems) { /* Don't allow zero-length paths. */ - if ((len = strlen(*argv)) == 0) { + size_t len = strlen(*argv); + if (len == 0) { __set_errno (ENOENT); goto mem3; } @@ -690,7 +691,7 @@ fts_build(sp, type) if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name)) continue; - if ((p = fts_alloc(sp, dp->d_name, (int)_D_EXACT_NAMLEN (dp))) == NULL) + if ((p = fts_alloc(sp, dp->d_name, _D_EXACT_NAMLEN (dp))) == NULL) goto mem1; if (_D_EXACT_NAMLEN (dp) >= maxlen) {/* include space for NUL */ oldaddr = sp->fts_path; @@ -961,7 +962,7 @@ internal_function fts_alloc(sp, name, namelen) FTS *sp; const char *name; - register int namelen; + size_t namelen; { register FTSENT *p; size_t len; diff --git a/locale/duplocale.c b/locale/duplocale.c index 77dfc01046..0cec09f63a 100644 --- a/locale/duplocale.c +++ b/locale/duplocale.c @@ -1,5 +1,5 @@ /* 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. Contributed by Ulrich Drepper , 1997. @@ -34,7 +34,7 @@ __locale_t __duplocale (__locale_t dataset) { /* This static object is returned for newlocale (LC_ALL_MASK, "C"). */ - if (dataset == &_nl_C_locobj) + if (dataset == _nl_C_locobj_ptr) return dataset; __locale_t result; diff --git a/locale/freelocale.c b/locale/freelocale.c index ec169bcb66..7430455d56 100644 --- a/locale/freelocale.c +++ b/locale/freelocale.c @@ -1,5 +1,5 @@ /* 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. Contributed by Ulrich Drepper , 1996. @@ -35,7 +35,7 @@ __freelocale (__locale_t dataset) int cnt; /* This static object is returned for newlocale (LC_ALL_MASK, "C"). */ - if (dataset == &_nl_C_locobj) + if (dataset == _nl_C_locobj_ptr) return; /* We modify global data (the usage counts). */ diff --git a/locale/newlocale.c b/locale/newlocale.c index b646ffeacd..b3d4b464b1 100644 --- a/locale/newlocale.c +++ b/locale/newlocale.c @@ -1,5 +1,5 @@ /* 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. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -66,7 +66,7 @@ __newlocale (int category_mask, const char *locale, __locale_t base) if (locale == NULL) 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 can't really modify the read-only structure, so instead 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)) && (category_mask == 0 || !strcmp (locale, "C"))) /* 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. */ if (base != NULL) diff --git a/locale/xlocale.c b/locale/xlocale.c index d9d3442621..4573e6f390 100644 --- a/locale/xlocale.c +++ b/locale/xlocale.c @@ -1,5 +1,5 @@ /* 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. Contributed by Ulrich Drepper , 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; -struct __locale_struct _nl_C_locobj attribute_hidden = +const struct __locale_struct _nl_C_locobj attribute_hidden = { .__locales = { diff --git a/misc/getusershell.c b/misc/getusershell.c index 95f0eab5e2..f41c6fa5f0 100644 --- a/misc/getusershell.c +++ b/misc/getusershell.c @@ -46,7 +46,7 @@ static char sccsid[] = "@(#)getusershell.c 8.1 (Berkeley) 6/4/93"; * /etc/shells. */ -static const char *okshells[] = { _PATH_BSHELL, _PATH_CSHELL, NULL }; +static const char *const okshells[] = { _PATH_BSHELL, _PATH_CSHELL, NULL }; static char **curshell, **shells, *strings; static char **initshells (void) __THROW; @@ -70,11 +70,9 @@ void endusershell() { - if (shells != NULL) - free(shells); + free(shells); shells = NULL; - if (strings != NULL) - free(strings); + free(strings); strings = NULL; curshell = NULL; } @@ -94,11 +92,9 @@ initshells() struct stat64 statb; int flen; - if (shells != NULL) - free(shells); + free(shells); shells = NULL; - if (strings != NULL) - free(strings); + free(strings); strings = NULL; if ((fp = fopen(_PATH_SHELLS, "rc")) == NULL) return (char **) okshells; @@ -117,8 +113,6 @@ initshells() strings = NULL; return (char **) okshells; } - /* No threads using this stream. */ - __fsetlocking (fp, FSETLOCKING_BYCALLER); sp = shells; cp = strings; flen = statb.st_size; diff --git a/misc/syslog.c b/misc/syslog.c index 9c5597f5aa..cae13f876b 100644 --- a/misc/syslog.c +++ b/misc/syslog.c @@ -195,7 +195,7 @@ __vsyslog_chk(int pri, int flag, const char *fmt, va_list ap) - f->_IO_write_ptr, "%h %e %T ", __localtime_r (&now, &now_tm), - &_nl_C_locobj); + _nl_C_locobj_ptr); msgoff = ftell (f); if (LogTag == NULL) LogTag = __progname; diff --git a/nss/databases.def b/nss/databases.def index 27c15fc04f..c35d7f18c2 100644 --- a/nss/databases.def +++ b/nss/databases.def @@ -1,5 +1,5 @@ /* List of all databases defined for the NSS in GNU C Library. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -18,7 +18,8 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -/* This list must be kept sorted!!! */ +/* This list must be kept sorted!!! If any long name is added the + field size for it must be increases. */ DEFINE_DATABASE (aliases) DEFINE_DATABASE (ethers) diff --git a/nss/nsswitch.c b/nss/nsswitch.c index 895b17825a..7e5e6e8164 100644 --- a/nss/nsswitch.c +++ b/nss/nsswitch.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 +/* Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -59,9 +59,9 @@ static service_library *nss_new_service (name_database *database, #undef DEFINE_DATABASE /* Structure to map database name to variable. */ -static struct +static const struct { - const char *name; + const char name[10]; service_user **dbp; } databases[] = { diff --git a/resolv/herror.c b/resolv/herror.c index a61a3a9a4d..c143cec28c 100644 --- a/resolv/herror.c +++ b/resolv/herror.c @@ -64,14 +64,14 @@ static const char rcsid[] = "$BINDId: herror.c,v 8.11 1999/10/13 16:39:39 vixie #include #include -const char *h_errlist[] = { +const char *const h_errlist[] = { N_("Resolver Error 0 (no error)"), N_("Unknown host"), /* 1 HOST_NOT_FOUND */ N_("Host name lookup failure"), /* 2 TRY_AGAIN */ N_("Unknown server error"), /* 3 NO_RECOVERY */ N_("No address associated with name"), /* 4 NO_ADDRESS */ }; -int h_nerr = { sizeof h_errlist / sizeof h_errlist[0] }; +const int h_nerr = { sizeof h_errlist / sizeof h_errlist[0] }; /* * herror -- diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c index 9beb881701..c54b28dadd 100644 --- a/resolv/res_hconf.c +++ b/resolv/res_hconf.c @@ -67,7 +67,7 @@ static const char *arg_trimdomain_list (const char *, int, const char *, static const char *arg_spoof (const char *, int, const char *, unsigned int); static const char *arg_bool (const char *, int, const char *, unsigned int); -static struct cmd +static const struct cmd { const char *name; const char *(*parse_args) (const char * filename, int line_num, @@ -114,10 +114,10 @@ arg_service_list (const char *fname, int line_num, const char *args, const char *start; size_t len; size_t i; - static struct + static const struct { - const char * name; - enum Name_Service service; + const char name[6]; + int16_t service; } svcs[] = { {"bind", SERVICE_BIND}, @@ -315,7 +315,7 @@ static void parse_line (const char *fname, int line_num, const char *str) { const char *start; - struct cmd *c = 0; + const struct cmd *c = 0; size_t len; size_t i; diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index c7901c29fe..5743ee434c 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -100,9 +100,9 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **, # define ISDIGIT(Ch) __iswdigit_l ((Ch), loc) # define ISXDIGIT(Ch) __iswxdigit_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) \ - __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) #else # 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 ISXDIGIT(Ch) __isxdigit_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) \ - __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) #endif diff --git a/sunrpc/auth_des.c b/sunrpc/auth_des.c index dbd12e5aad..a76f0278ce 100644 --- a/sunrpc/auth_des.c +++ b/sunrpc/auth_des.c @@ -66,7 +66,7 @@ static void authdes_destroy (AUTH *); static bool_t synchronize (struct sockaddr *, struct rpc_timeval *) internal_function; -static struct auth_ops authdes_ops = { +static const struct auth_ops authdes_ops = { authdes_nextverf, authdes_marshal, authdes_validate, @@ -185,7 +185,7 @@ authdes_pk_create (const char *servername, netobj *pkey, u_int window, */ auth->ah_cred.oa_flavor = AUTH_DES; auth->ah_verf.oa_flavor = AUTH_DES; - auth->ah_ops = &authdes_ops; + auth->ah_ops = (struct auth_ops *) &authdes_ops; auth->ah_private = (caddr_t) ad; if (!authdes_refresh (auth)) diff --git a/sunrpc/auth_none.c b/sunrpc/auth_none.c index 9c4d3fde66..f459520a2c 100644 --- a/sunrpc/auth_none.c +++ b/sunrpc/auth_none.c @@ -49,7 +49,7 @@ static bool_t authnone_marshal (AUTH *, XDR *); static bool_t authnone_validate (AUTH *, struct opaque_auth *); static bool_t authnone_refresh (AUTH *); -static struct auth_ops ops = { +static const struct auth_ops ops = { authnone_verf, authnone_marshal, authnone_validate, @@ -80,7 +80,7 @@ authnone_create_once (void) ap = &authnone_private; ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth; - ap->no_client.ah_ops = &ops; + ap->no_client.ah_ops = (struct auth_ops *) &ops; xdrs = &xdr_stream; INTUSE(xdrmem_create) (xdrs, ap->marshalled_client, (u_int) MAX_MARSHAL_SIZE, XDR_ENCODE); @@ -88,7 +88,7 @@ authnone_create_once (void) (void) INTUSE(xdr_opaque_auth) (xdrs, &ap->no_client.ah_verf); ap->mcnt = XDR_GETPOS (xdrs); XDR_DESTROY (xdrs); -} +} AUTH * authnone_create (void) diff --git a/sunrpc/auth_unix.c b/sunrpc/auth_unix.c index c5a874bbbe..1740e58cdc 100644 --- a/sunrpc/auth_unix.c +++ b/sunrpc/auth_unix.c @@ -65,7 +65,7 @@ static bool_t authunix_validate (AUTH *, struct opaque_auth *); static bool_t authunix_refresh (AUTH *); static void authunix_destroy (AUTH *); -static struct auth_ops auth_unix_ops = { +static const struct auth_ops auth_unix_ops = { authunix_nextverf, authunix_marshal, authunix_validate, @@ -116,7 +116,7 @@ no_memory: mem_free (au, sizeof (*au)); return NULL; } - auth->ah_ops = &auth_unix_ops; + auth->ah_ops = (struct auth_ops *) &auth_unix_ops; auth->ah_private = (caddr_t) au; auth->ah_verf = au->au_shcred = _null_auth; au->au_shfaults = 0; diff --git a/sunrpc/clnt_raw.c b/sunrpc/clnt_raw.c index e8613422a5..019f1bbae0 100644 --- a/sunrpc/clnt_raw.c +++ b/sunrpc/clnt_raw.c @@ -74,7 +74,7 @@ static bool_t clntraw_freeres (CLIENT *, xdrproc_t, caddr_t); static bool_t clntraw_control (CLIENT *, int, char *); static void clntraw_destroy (CLIENT *); -static struct clnt_ops client_ops = +static const struct clnt_ops client_ops = { clntraw_call, clntraw_abort, @@ -127,7 +127,7 @@ clntraw_create (u_long prog, u_long vers) /* * create client handle */ - client->cl_ops = &client_ops; + client->cl_ops = (struct clnt_ops *) &client_ops; client->cl_auth = INTUSE(authnone_create) (); return client; } diff --git a/sunrpc/clnt_tcp.c b/sunrpc/clnt_tcp.c index 095baa87aa..5bec3bcf3a 100644 --- a/sunrpc/clnt_tcp.c +++ b/sunrpc/clnt_tcp.c @@ -91,7 +91,7 @@ static bool_t clnttcp_freeres (CLIENT *, xdrproc_t, caddr_t); static bool_t clnttcp_control (CLIENT *, int, char *); static void clnttcp_destroy (CLIENT *); -static struct clnt_ops tcp_ops = +static const struct clnt_ops tcp_ops = { clnttcp_call, clnttcp_abort, @@ -213,7 +213,7 @@ clnttcp_create (struct sockaddr_in *raddr, u_long prog, u_long vers, */ INTUSE(xdrrec_create) (&(ct->ct_xdrs), sendsz, recvsz, (caddr_t) ct, readtcp, writetcp); - h->cl_ops = &tcp_ops; + h->cl_ops = (struct clnt_ops *) &tcp_ops; h->cl_private = (caddr_t) ct; h->cl_auth = INTUSE(authnone_create) (); return h; diff --git a/sunrpc/clnt_udp.c b/sunrpc/clnt_udp.c index f4a46b5036..8c24677c83 100644 --- a/sunrpc/clnt_udp.c +++ b/sunrpc/clnt_udp.c @@ -74,7 +74,7 @@ static bool_t clntudp_freeres (CLIENT *, xdrproc_t, caddr_t); static bool_t clntudp_control (CLIENT *, int, char *); static void clntudp_destroy (CLIENT *); -static struct clnt_ops udp_ops = +static const struct clnt_ops udp_ops = { clntudp_call, clntudp_abort, @@ -153,7 +153,7 @@ clntudp_bufcreate (struct sockaddr_in *raddr, u_long program, u_long version, } raddr->sin_port = htons (port); } - cl->cl_ops = &udp_ops; + cl->cl_ops = (struct clnt_ops *) &udp_ops; cl->cl_private = (caddr_t) cu; cu->cu_raddr = *raddr; cu->cu_rlen = sizeof (cu->cu_raddr); diff --git a/sunrpc/clnt_unix.c b/sunrpc/clnt_unix.c index 4e93e0d855..848a480581 100644 --- a/sunrpc/clnt_unix.c +++ b/sunrpc/clnt_unix.c @@ -88,7 +88,7 @@ static bool_t clntunix_freeres (CLIENT *, xdrproc_t, caddr_t); static bool_t clntunix_control (CLIENT *, int, char *); static void clntunix_destroy (CLIENT *); -static struct clnt_ops unix_ops = +static const struct clnt_ops unix_ops = { clntunix_call, clntunix_abort, @@ -192,7 +192,7 @@ clntunix_create (struct sockaddr_un *raddr, u_long prog, u_long vers, */ INTUSE(xdrrec_create) (&(ct->ct_xdrs), sendsz, recvsz, (caddr_t) ct, readunix, writeunix); - h->cl_ops = &unix_ops; + h->cl_ops = (struct clnt_ops *) &unix_ops; h->cl_private = (caddr_t) ct; h->cl_auth = INTUSE(authnone_create) (); return h; diff --git a/sunrpc/svc_raw.c b/sunrpc/svc_raw.c index 37a027d412..ff8fa7ccd9 100644 --- a/sunrpc/svc_raw.c +++ b/sunrpc/svc_raw.c @@ -66,7 +66,7 @@ static bool_t svcraw_reply (SVCXPRT *, struct rpc_msg *); static bool_t svcraw_freeargs (SVCXPRT *, xdrproc_t, caddr_t); static void svcraw_destroy (SVCXPRT *); -static struct xp_ops server_ops = +static const struct xp_ops server_ops = { svcraw_recv, svcraw_stat, @@ -89,7 +89,7 @@ svcraw_create (void) } srp->server.xp_sock = 0; srp->server.xp_port = 0; - srp->server.xp_ops = &server_ops; + srp->server.xp_ops = (struct xp_ops *) &server_ops; srp->server.xp_verf.oa_base = srp->verf_body; INTUSE(xdrmem_create) (&srp->xdr_stream, srp->_raw_buf, UDPMSGSIZE, XDR_FREE); diff --git a/sysdeps/mach/hurd/ifreq.c b/sysdeps/mach/hurd/ifreq.c new file mode 100644 index 0000000000..258ea6368d --- /dev/null +++ b/sysdeps/mach/hurd/ifreq.c @@ -0,0 +1,59 @@ +/* Fetch the host's network interface list. Hurd version. + Copyright (C) 2002,2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +void +__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd) +{ + file_t server; + + server = _hurd_socket_server (PF_INET, 0); + if (server == MACH_PORT_NULL) + { + out: + *num_ifs = 0; + *ifreqs = NULL; + } + else + { + char *data = NULL; + size_t len = 0; + error_t err = __pfinet_siocgifconf (server, -1, &data, &len); + if (err == MACH_SEND_INVALID_DEST || err == MIG_SERVER_DIED) + { + /* On the first use of the socket server during the operation, + allow for the old server port dying. */ + server = _hurd_socket_server (PF_INET, 1); + if (server == MACH_PORT_NULL) + goto out; + err = __pfinet_siocgifconf (server, -1, (data_t *) ifreqs, &len); + } + if (err) + goto out; + + if (len % sizeof (struct ifreq) != 0) + { + munmap (data, len); + errno = EGRATUITOUS; + goto out; + } + *num_ifs = len / sizeof (struct ifreq); + *ifreqs = (struct ifreq *) data; + } + +} diff --git a/sysdeps/mach/hurd/ifreq.h b/sysdeps/mach/hurd/ifreq.h deleted file mode 100644 index 77f0b9cac0..0000000000 --- a/sysdeps/mach/hurd/ifreq.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Fetch the host's network interface list. Hurd version. - Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include - - -static inline void -__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd) -{ - file_t server; - - server = _hurd_socket_server (PF_INET, 0); - if (server == MACH_PORT_NULL) - { - out: - *num_ifs = 0; - *ifreqs = NULL; - } - else - { - char *data = NULL; - size_t len = 0; - error_t err = __pfinet_siocgifconf (server, -1, &data, &len); - if (err == MACH_SEND_INVALID_DEST || err == MIG_SERVER_DIED) - { - /* On the first use of the socket server during the operation, - allow for the old server port dying. */ - server = _hurd_socket_server (PF_INET, 1); - if (server == MACH_PORT_NULL) - goto out; - err = __pfinet_siocgifconf (server, -1, (data_t *) ifreqs, &len); - } - if (err) - goto out; - - if (len % sizeof (struct ifreq) != 0) - { - munmap (data, len); - errno = EGRATUITOUS; - goto out; - } - *num_ifs = len / sizeof (struct ifreq); - *ifreqs = (struct ifreq *) data; - } - -} - - -static inline struct ifreq * -__if_nextreq (struct ifreq *ifr) -{ - return ifr + 1; -} - - -static inline void -__if_freereq (struct ifreq *ifreqs, int num_ifs) -{ - __munmap (ifreqs, num_ifs * sizeof (struct ifreq)); -} diff --git a/sysdeps/mach/hurd/xmknod.c b/sysdeps/mach/hurd/xmknod.c index 2989215d9c..aaa6771cd8 100644 --- a/sysdeps/mach/hurd/xmknod.c +++ b/sysdeps/mach/hurd/xmknod.c @@ -1,4 +1,5 @@ -/* Copyright (C) 1991,92,93,94,95,96,99,2002 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1993,1994,1995,1996,1999,2002,2005 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -57,13 +58,18 @@ __xmknod (int vers, const char *file_name, mode_t mode, dev_t *dev) translator = _HURD_FIFO; len = sizeof (_HURD_FIFO); } + else if (S_ISREG (mode)) + { + translator = NULL; + len = 0; + } else { errno = EINVAL; return -1; } - if (! S_ISFIFO (mode)) + if (translator != NULL && ! S_ISFIFO (mode)) { /* We set the translator to "ifmt\0major\0minor\0", where IFMT depends on the S_IFMT bits of our MODE argument, and MAJOR and @@ -89,7 +95,7 @@ __xmknod (int vers, const char *file_name, mode_t mode, dev_t *dev) /* Create a new, unlinked node in the target directory. */ err = __dir_mkfile (dir, O_WRITE, (mode & ~S_IFMT) & ~_hurd_umask, &node); - if (! err) + if (! err && translator != NULL) /* Set the node's translator to make it a device. */ err = __file_set_translator (node, FS_TRANS_EXCL | FS_TRANS_SET, diff --git a/sysdeps/unix/sysv/linux/getloadavg.c b/sysdeps/unix/sysv/linux/getloadavg.c index 6a521431ba..81a1c0dd52 100644 --- a/sysdeps/unix/sysv/linux/getloadavg.c +++ b/sysdeps/unix/sysv/linux/getloadavg.c @@ -1,5 +1,5 @@ /* 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. 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) { char *endp; - loadavg[i] = __strtod_l (p, &endp, &_nl_C_locobj); + loadavg[i] = __strtod_l (p, &endp, _nl_C_locobj_ptr); if (endp == p) /* This should not happen. The format of /proc/loadavg must have changed. Don't return with what we have, diff --git a/sysdeps/unix/sysv/linux/ifreq.c b/sysdeps/unix/sysv/linux/ifreq.c index 098f11750f..43d54014bc 100644 --- a/sysdeps/unix/sysv/linux/ifreq.c +++ b/sysdeps/unix/sysv/linux/ifreq.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2002, 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 1999,2002,2003,2004,2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger . @@ -18,6 +18,7 @@ 02111-1307 USA. */ #include "ifreq.h" +#include "kernel-features.h" /* Variable to signal whether SIOCGIFCONF is not available. */ #if __ASSUME_SIOCGIFNAME == 0 || 1 diff --git a/sysdeps/unix/sysv/linux/ifreq.h b/sysdeps/unix/sysv/linux/ifreq.h deleted file mode 100644 index b92e0638e2..0000000000 --- a/sysdeps/unix/sysv/linux/ifreq.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include -#include -#include "kernel-features.h" - - -extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd); - -static inline struct ifreq * -__if_nextreq (struct ifreq *ifr) -{ - return ifr + 1; -} - -static inline void -__if_freereq (struct ifreq *ifreqs, int num_ifs) -{ - free (ifreqs); -} -- cgit v1.2.3