/* We use a special value for the usage counter in `locale_data' to
signal that this data must never be removed anymore. */
-#define MAX_USAGE_COUNT UINT_MAX
+#define MAX_USAGE_COUNT (UINT_MAX - 1)
+#define UNDELETABLE UINT_MAX
/* Structure describing locale data in core for a category. */
struct locale_data
extern const size_t _nl_category_name_sizes[LC_ALL + 1];
extern struct locale_data * *const _nl_current[LC_ALL + 1];
-/* Name of the standard locale. */
+/* Name of the standard locales. */
extern const char _nl_C_name[];
+extern const char _nl_POSIX_name[];
/* Extract the current CATEGORY locale's string for ITEM. */
#define _NL_CURRENT(category, item) \
/* Try to load the file described by FILE. */
extern void _nl_load_locale (struct loaded_l10nfile *file, int category);
+/* Free all resource. */
+extern void _nl_unload_locale (struct locale_data *locale);
+
/* Free the locale and give back all memory if the usage count is one. */
extern void _nl_remove_locale (int locale, struct locale_data *data);