summary refs log tree commit diff
path: root/locale/loadlocale.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-28 23:11:21 +0000
committerRoland McGrath <roland@gnu.org>2002-08-28 23:11:21 +0000
commitdf9f41c94286bcaac949fd490e11bde61b8a9567 (patch)
tree2d7deceaa2e48d4dc55a4be335ef9fc010ca161d /locale/loadlocale.c
parent6e68eecf7b2d778e0bd488466a1798c3b3fd4dcc (diff)
downloadglibc-df9f41c94286bcaac949fd490e11bde61b8a9567.tar.gz
glibc-df9f41c94286bcaac949fd490e11bde61b8a9567.tar.xz
glibc-df9f41c94286bcaac949fd490e11bde61b8a9567.zip
* locale/lc-time.c (_nl_init_era_entries, _nl_get_era_entry,
	_nl_select_era_entry): Moved to ...
	* time/era.c: ... here, new file.
	(_nl_init_era_entries, _nl_get_era_entry, _nl_select_era_entry):
	Add internal_function to definitions.  Take an additional argument
	giving the `struct locale_data *' to use.
	* locale/lc-time.c (_get_alt_digit, _nl_get_walt_digit,
	_nl_parse_alt_digit): Moved to ...
	* time/alt_digit.c: ... here, new file.
	* time/lc-time-cleanup.c: New file.
	* locale/lc-time.c (_nl_postload_time, free_mem): Functions removed.
	* locale/localeinfo.h (_nl_postload_time): Remove decl.
	(_nl_cleanup_time): Declare it.
	(_nl_get_era_entry, _nl_select_era_entry): Update decls.
	(_get_alt_digit, _nl_get_walt_digit, _nl_parse_alt_digit): Likewise.
	* time/Makefile (aux): New variable: era, alt_digit, lc-time-cleanup.
	* time/strftime.c: Pass locale data to helper functions.
	* time/strptime.c: Likewise.

	* locale/localeinfo.h (struct locale_data): New member `private'
	* locale/loadlocale.c (_nl_intern_locale_data): Initialize it.
	(_nl_unload_locale): Call LOCALE->private.cleanup if it is set.
	* locale/C-collate.c: Update initializer.
	* locale/C-identification.c: Likewise.
	* locale/C-measurement.c: Likewise.
	* locale/C-telephone.c: Likewise.
	* locale/C-address.c: Likewise.
	* locale/C-name.c: Likewise.
	* locale/C-paper.c: Likewise.
	* locale/C-time.c: Likewise.
	* locale/C-numeric.c: Likewise.
	* locale/C-monetary.c: Likewise.
	* locale/C-messages.c : Likewise.
	* locale/C-ctype.c: Likewise.

	* time/strptime.c [USE_IN_EXTENDED_LOCALE_MODEL] (_NL_CURRENT_WORD):
	Redefine this too.
Diffstat (limited to 'locale/loadlocale.c')
-rw-r--r--locale/loadlocale.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/locale/loadlocale.c b/locale/loadlocale.c
index ebf25f33d1..32faad57e9 100644
--- a/locale/loadlocale.c
+++ b/locale/loadlocale.c
@@ -99,6 +99,8 @@ _nl_intern_locale_data (int category, const void *data, size_t datasize)
 
   newdata->filedata = (void *) filedata;
   newdata->filesize = datasize;
+  newdata->private.data = NULL;
+  newdata->private.cleanup = NULL;
   newdata->usage_count = 0;
   newdata->use_translit = 0;
   newdata->nstrings = filedata->nstrings;
@@ -251,6 +253,9 @@ void
 internal_function
 _nl_unload_locale (struct locale_data *locale)
 {
+  if (locale->private.cleanup)
+    (*locale->private.cleanup) (locale);
+
   switch (__builtin_expect (locale->alloc, ld_mapped))
     {
     case ld_malloced: