aboutsummaryrefslogtreecommitdiff
path: root/time/lc-time-cleanup.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 /time/lc-time-cleanup.c
parent6e68eecf7b2d778e0bd488466a1798c3b3fd4dcc (diff)
downloadglibc-df9f41c94286bcaac949fd490e11bde61b8a9567.tar
glibc-df9f41c94286bcaac949fd490e11bde61b8a9567.tar.gz
glibc-df9f41c94286bcaac949fd490e11bde61b8a9567.tar.bz2
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 'time/lc-time-cleanup.c')
-rw-r--r--time/lc-time-cleanup.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/time/lc-time-cleanup.c b/time/lc-time-cleanup.c
new file mode 100644
index 0000000000..7972700686
--- /dev/null
+++ b/time/lc-time-cleanup.c
@@ -0,0 +1,41 @@
+/* Cleanup code for data structures kept by strftime/strptime helper functions.
+ 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 "../locale/localeinfo.h"
+#include <stdlib.h>
+
+void internal_function
+_nl_cleanup_time (struct locale_data *locale)
+{
+ struct lc_time_data *const data = locale->private.time;
+ if (data != NULL)
+ {
+ locale->private.time = NULL;
+ locale->private.cleanup = NULL;
+
+ if (data->eras != NULL)
+ free (data->eras);
+ if (data->alt_digits != NULL)
+ free (data->alt_digits);
+ if (data->walt_digits != NULL)
+ free (data->walt_digits);
+
+ free (data);
+ }
+}