diff options
author | Roland McGrath <roland@gnu.org> | 2002-09-01 12:39:40 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-09-01 12:39:40 +0000 |
commit | 0f283ffc5e8822a367c4703abd584348ff139810 (patch) | |
tree | ea4e3a9a5c4dca2c51fb8cb08995de41b2bf998e /locale/findlocale.c | |
parent | 0ba454fccb56eb5890ad692949323af6ad64189c (diff) | |
download | glibc-0f283ffc5e8822a367c4703abd584348ff139810.zip glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.gz glibc-0f283ffc5e8822a367c4703abd584348ff139810.tar.bz2 |
* sysdeps/generic/libc-tls.c (__pthread_initialize_minimal): Pass
TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN instead of 0, 1.
* include/getopt.h: Include <features.h> before <posix/getopt.h>.
* locale/findlocale.c (_nl_remove_locale): Don't search in
_nl_locale_file_list if DATA->alloc is ld_archive.
Use _nl_unload_locale to do the rest of the work.
* locale/loadarchive.c (_nl_load_locale_from_archive): Set usage_count
of new structure to UNDELETABLE.
* wctype/wctype.h (iswalnum, iswalpha, iswcntrl, iswdigit, iswlower,
iswgraph, iswprint, iswpunct, iswspace, iswupper, iswxdigit, iswblank,
towlower, towupper): Macros removed.
* ctype/ctype.h (__tobody): Put parens around macro argument.
(__isctype): Macro removed.
(__ctype_b, __ctype_tolower, __ctype_toupper): Decls removed.
(isalnum, isalpha, iscntrl, isdigit, islower, isgraph, isprint,
ispunct, isspace, isupper, isxdigit, isblank, _tolower, _toupper,
tolower, toupper): Macros and inlines removed.
* include/ctype.h [! NOT_IN_libc]
(isalnum, isalpha, iscntrl, isdigit, islower, isgraph, isprint,
ispunct, isspace, isupper, isxdigit, isblank, _tolower, _toupper,
tolower, toupper): Define here instead, using _NL_CURRENT.
* ctype/ctype.c (__ctype_tolower, __ctype_toupper): Define as macros
using _NL_CURRENT.
* ctype/ctype-extn.c (__ctype_tolower, __ctype_toupper): Likewise.
* ctype/ctype-info.c (__ctype_b, __ctype_tolower, __ctype_toupper):
Renamed these to __ctype_old_*. Define old names only for SHLIB_COMPAT.
(__ctype32_b, __ctype32_tolower, __ctype32_toupper): Likewise.
(__ctype32_wctrans, __ctype32_wctrans, __ctype32_width): Removed.
* locale/lc-ctype.c (_nl_postload_ctype): Use renamed variables,
conditional on SHLIB_COMPAT. Don't set removed variables at all.
* wctype/wcfuncs.c: Use _NL_CURRENT instead of those globals.
* wcsmbs/wcwidth.h (internal_wcwidth): Likewise.
* resolv/res_init.c [RESOLVSORT] (sort_mask): Renamed sort_mask_chars.
(ISSORTMASK): Update use.
* intl/localealias.c [__GNUC__]: #undef alloca before #define.
* nss/nss_files/files-XXX.c (last_use): Rename `none' to `nouse'.
(_nss_files_getENTNAME_r): Likewise.
* nss/nss_files/files-alias.c (last_use, _nss_files_getaliasent_r):
Likewise.
* Makerules (all-nonlib): Renamed from all-tests.
Include $(others) here too.
* locale/Makefile (CPPFLAGS-locale, CPPFLAGS-localedef,
CPPFLAGS-ld-ctype, CPPFLAGS-ld-time, CPPFLAGS-ld-numeric,
CPPFLAGS-ld-monetary, CPPFLAGS-ld-collate, CPPFLAGS-ld-identification,
CPPFLAGS-charmap, CPPFLAGS-locarchive, CPPFLAGS-linereader,
CPPFLAGS-charmap-dir): Variables removed. Instead, catch all
the program modules via cppflags-iterator.mk.
* sunrpc/Makefile (CPPFLAGS-rpc_main): Variable removed.
Instead, catch all rpcgen-objs via cppflags-iterator.mk.
* posix/tst-getconf.sh: If no third arg, work with static linking.
Diffstat (limited to 'locale/findlocale.c')
-rw-r--r-- | locale/findlocale.c | 47 |
1 files changed, 15 insertions, 32 deletions
diff --git a/locale/findlocale.c b/locale/findlocale.c index 6ecfdc2..9c9b853 100644 --- a/locale/findlocale.c +++ b/locale/findlocale.c @@ -270,40 +270,23 @@ _nl_remove_locale (int locale, struct locale_data *data) { if (--data->usage_count == 0) { - /* First search the entry in the list of loaded files. */ - struct loaded_l10nfile *ptr = _nl_locale_file_list[locale]; - - /* Search for the entry. It must be in the list. Otherwise it - is a bug and we crash badly. */ - while ((struct locale_data *) ptr->data != data) - ptr = ptr->next; - - /* Mark the data as not available anymore. So when the data has - to be used again it is reloaded. */ - ptr->decided = 0; - ptr->data = NULL; - - /* Free the name. */ - free ((char *) data->name); - -#ifdef _POSIX_MAPPED_FILES - /* Really delete the data. First delete the real data. */ - if (__builtin_expect (data->alloc == ld_mapped, 1)) + if (data->alloc != ld_archive) { - /* Try to unmap the area. If this fails we mark the area as - permanent. */ - if (__munmap ((caddr_t) data->filedata, data->filesize) != 0) - { - data->usage_count = UNDELETABLE; - return; - } + /* First search the entry in the list of loaded files. */ + struct loaded_l10nfile *ptr = _nl_locale_file_list[locale]; + + /* Search for the entry. It must be in the list. Otherwise it + is a bug and we crash badly. */ + while ((struct locale_data *) ptr->data != data) + ptr = ptr->next; + + /* Mark the data as not available anymore. So when the data has + to be used again it is reloaded. */ + ptr->decided = 0; + ptr->data = NULL; } - else -#endif /* _POSIX_MAPPED_FILES */ - /* The memory was malloced. */ - free ((void *) data->filedata); - /* Now free the structure itself. */ - free (data); + /* This does the real work. */ + _nl_unload_locale (data); } } |