]> code.citadel.org Git - citadel.git/blobdiff - webcit/gettext.c
* several memoryleaks
[citadel.git] / webcit / gettext.c
index f463140c25e8654eb6f45e8f1c8d714b14c1447e..52332f8152b64a4db519d1e8403c808749969745 100644 (file)
@@ -220,8 +220,9 @@ void offer_languages(void) {
  * \brief Set the selected language for this session.
  * \param lang the locale to set.
  */
-void set_selected_language(char *lang) {
+void set_selected_language(const char *lang) {
        int i;
+
 #ifdef HAVE_USELOCALE
        for (i=0; i<NUM_LANGS; ++i) {
                if (!strcasecmp(lang, AvailLang[i])) {
@@ -269,6 +270,11 @@ void preset_locale(void)
 #endif
 #endif
 }
+
+#ifdef HAVE_USELOCALE
+       locale_t Empty_Locale;
+#endif
+
 /**
  * \brief Create a locale_t for each available language
  */
@@ -277,8 +283,6 @@ void initialize_locales(void) {
        char buf[32];
 
 #ifdef HAVE_USELOCALE
-       locale_t Empty_Locale;
-
        /* create default locale */
        Empty_Locale = newlocale(LC_ALL_MASK, NULL, NULL);
 #endif
@@ -309,6 +313,17 @@ void initialize_locales(void) {
        }
 }
 
+void ShutdownLocale(void)
+{
+       int i;
+#ifdef HAVE_USELOCALE
+       for (i = 0; i < NUM_LANGS; ++i) {
+               if (Empty_Locale != wc_locales[i])
+                       freelocale(wc_locales[i]);
+       }
+       freelocale(Empty_Locale);
+#endif
+}
 
 #else  /* ENABLE_NLS */
 /** \brief dummy for non NLS enabled systems */