Module Name:    src
Committed By:   tnozaki
Date:           Sun Mar  4 21:14:57 UTC 2012

Modified Files:
        src/lib/libc/citrus: citrus_lc_ctype.c citrus_lc_messages.c
            citrus_lc_monetary.c citrus_lc_numeric.c citrus_lc_time.c
        src/lib/libc/locale: dummy_lc_collate.c dummy_lc_template.h
            generic_lc_all.c generic_lc_template_decl.h nb_lc_template.h
            setlocale.c setlocale_local.h
Removed Files:
        src/lib/libc/locale: generic_lc_template.h

Log Message:
don't use __link_set_* stuff for locale implementation.
patch reviewed by matt@, thanks.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/lib/libc/citrus/citrus_lc_ctype.c
cvs rdiff -u -r1.4 -r1.5 src/lib/libc/citrus/citrus_lc_messages.c \
    src/lib/libc/citrus/citrus_lc_monetary.c \
    src/lib/libc/citrus/citrus_lc_numeric.c
cvs rdiff -u -r1.5 -r1.6 src/lib/libc/citrus/citrus_lc_time.c
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/locale/dummy_lc_collate.c \
    src/lib/libc/locale/dummy_lc_template.h \
    src/lib/libc/locale/generic_lc_template_decl.h
cvs rdiff -u -r1.3 -r1.4 src/lib/libc/locale/generic_lc_all.c \
    src/lib/libc/locale/nb_lc_template.h
cvs rdiff -u -r1.3 -r0 src/lib/libc/locale/generic_lc_template.h
cvs rdiff -u -r1.59 -r1.60 src/lib/libc/locale/setlocale.c
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/locale/setlocale_local.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/citrus/citrus_lc_ctype.c
diff -u src/lib/libc/citrus/citrus_lc_ctype.c:1.9 src/lib/libc/citrus/citrus_lc_ctype.c:1.10
--- src/lib/libc/citrus/citrus_lc_ctype.c:1.9	Sat Jun 19 13:26:51 2010
+++ src/lib/libc/citrus/citrus_lc_ctype.c	Sun Mar  4 21:14:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_ctype.c,v 1.9 2010/06/19 13:26:51 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_ctype.c,v 1.10 2012/03/04 21:14:55 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_ctype.c,v 1.9 2010/06/19 13:26:51 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_ctype.c,v 1.10 2012/03/04 21:14:55 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "reentrant.h"
@@ -130,4 +130,3 @@ _PREFIX(fixup)(_RuneLocale *data)
 #define _CATEGORY_DEFAULT	_DefaultRuneLocale
 
 #include "nb_lc_template.h"
-_LOCALE_CATEGORY_ENTRY(_citrus_LC_CTYPE_);

Index: src/lib/libc/citrus/citrus_lc_messages.c
diff -u src/lib/libc/citrus/citrus_lc_messages.c:1.4 src/lib/libc/citrus/citrus_lc_messages.c:1.5
--- src/lib/libc/citrus/citrus_lc_messages.c:1.4	Sun Jun 13 04:14:57 2010
+++ src/lib/libc/citrus/citrus_lc_messages.c	Sun Mar  4 21:14:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_messages.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_messages.c,v 1.5 2012/03/04 21:14:55 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_messages.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_messages.c,v 1.5 2012/03/04 21:14:55 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -160,4 +160,3 @@ fatal:
 #define _CATEGORY_MAGIC		_CITRUS_LC_MESSAGES_MAGIC_1
 
 #include "citrus_lc_template.h"
-_LOCALE_CATEGORY_ENTRY(_citrus_LC_MESSAGES_);
Index: src/lib/libc/citrus/citrus_lc_monetary.c
diff -u src/lib/libc/citrus/citrus_lc_monetary.c:1.4 src/lib/libc/citrus/citrus_lc_monetary.c:1.5
--- src/lib/libc/citrus/citrus_lc_monetary.c:1.4	Sun Jun 13 04:14:57 2010
+++ src/lib/libc/citrus/citrus_lc_monetary.c	Sun Mar  4 21:14:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_monetary.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_monetary.c,v 1.5 2012/03/04 21:14:55 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_monetary.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_monetary.c,v 1.5 2012/03/04 21:14:55 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -217,4 +217,3 @@ fatal:
 #define _CATEGORY_MAGIC		_CITRUS_LC_MONETARY_MAGIC_1
 
 #include "citrus_lc_template.h"
-_LOCALE_CATEGORY_ENTRY(_citrus_LC_MONETARY_);
Index: src/lib/libc/citrus/citrus_lc_numeric.c
diff -u src/lib/libc/citrus/citrus_lc_numeric.c:1.4 src/lib/libc/citrus/citrus_lc_numeric.c:1.5
--- src/lib/libc/citrus/citrus_lc_numeric.c:1.4	Sun Jun 13 04:14:57 2010
+++ src/lib/libc/citrus/citrus_lc_numeric.c	Sun Mar  4 21:14:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_numeric.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_numeric.c,v 1.5 2012/03/04 21:14:55 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_numeric.c,v 1.4 2010/06/13 04:14:57 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_numeric.c,v 1.5 2012/03/04 21:14:55 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -166,4 +166,3 @@ fatal:
 #define _CATEGORY_MAGIC		_CITRUS_LC_NUMERIC_MAGIC_1
 
 #include "citrus_lc_template.h"
-_LOCALE_CATEGORY_ENTRY(_citrus_LC_NUMERIC_);

Index: src/lib/libc/citrus/citrus_lc_time.c
diff -u src/lib/libc/citrus/citrus_lc_time.c:1.5 src/lib/libc/citrus/citrus_lc_time.c:1.6
--- src/lib/libc/citrus/citrus_lc_time.c:1.5	Sun Jun 13 04:14:57 2010
+++ src/lib/libc/citrus/citrus_lc_time.c	Sun Mar  4 21:14:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: citrus_lc_time.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $ */
+/* $NetBSD: citrus_lc_time.c,v 1.6 2012/03/04 21:14:55 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: citrus_lc_time.c,v 1.5 2010/06/13 04:14:57 tnozaki Exp $");
+__RCSID("$NetBSD: citrus_lc_time.c,v 1.6 2012/03/04 21:14:55 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -211,4 +211,3 @@ fatal:
 #define _CATEGORY_MAGIC		_CITRUS_LC_TIME_MAGIC_1
 
 #include "citrus_lc_template.h"
-_LOCALE_CATEGORY_ENTRY(_citrus_LC_TIME_);

Index: src/lib/libc/locale/dummy_lc_collate.c
diff -u src/lib/libc/locale/dummy_lc_collate.c:1.2 src/lib/libc/locale/dummy_lc_collate.c:1.3
--- src/lib/libc/locale/dummy_lc_collate.c:1.2	Sun Jan 11 02:46:28 2009
+++ src/lib/libc/locale/dummy_lc_collate.c	Sun Mar  4 21:14:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: dummy_lc_collate.c,v 1.2 2009/01/11 02:46:28 christos Exp $ */
+/* $NetBSD: dummy_lc_collate.c,v 1.3 2012/03/04 21:14:56 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: dummy_lc_collate.c,v 1.2 2009/01/11 02:46:28 christos Exp $");
+__RCSID("$NetBSD: dummy_lc_collate.c,v 1.3 2012/03/04 21:14:56 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -51,4 +51,3 @@ __RCSID("$NetBSD: dummy_lc_collate.c,v 1
 #define _CATEGORY_NAME		"LC_COLLATE"
 
 #include "dummy_lc_template.h"
-_LOCALE_CATEGORY_ENTRY(_dummy_LC_COLLATE_);
Index: src/lib/libc/locale/dummy_lc_template.h
diff -u src/lib/libc/locale/dummy_lc_template.h:1.2 src/lib/libc/locale/dummy_lc_template.h:1.3
--- src/lib/libc/locale/dummy_lc_template.h:1.2	Sun Jan 11 02:46:28 2009
+++ src/lib/libc/locale/dummy_lc_template.h	Sun Mar  4 21:14:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: dummy_lc_template.h,v 1.2 2009/01/11 02:46:28 christos Exp $ */
+/* $NetBSD: dummy_lc_template.h,v 1.3 2012/03/04 21:14:56 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -31,7 +31,7 @@
 
 #include "generic_lc_template_decl.h"
 
-static const char *
+const char *
 _PREFIX(setlocale)(const char * __restrict name,
     struct _locale_impl_t * __restrict locale)
 {
@@ -51,6 +51,4 @@ _PREFIX(setlocale)(const char * __restri
 	return locale->part_name[(size_t)_CATEGORY_ID];
 }
 
-#include "generic_lc_template.h"
-
 #endif /*_DUMMY_LC_TEMPLATE_H_*/
Index: src/lib/libc/locale/generic_lc_template_decl.h
diff -u src/lib/libc/locale/generic_lc_template_decl.h:1.2 src/lib/libc/locale/generic_lc_template_decl.h:1.3
--- src/lib/libc/locale/generic_lc_template_decl.h:1.2	Sun Jan 11 02:46:28 2009
+++ src/lib/libc/locale/generic_lc_template_decl.h	Sun Mar  4 21:14:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: generic_lc_template_decl.h,v 1.2 2009/01/11 02:46:28 christos Exp $ */
+/* $NetBSD: generic_lc_template_decl.h,v 1.3 2012/03/04 21:14:56 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -29,7 +29,7 @@
 #ifndef _GENERIC_LC_TEMPLATE_DECL_H_
 #define _GENERIC_LC_TEMPLATE_DECL_H_
 
-static const char * _PREFIX(setlocale)(const char * __restrict,
+const char * _PREFIX(setlocale)(const char * __restrict,
     struct _locale_impl_t * __restrict);
 
 #endif /*_GENERIC_LC_TEMPLATE_DECL_H_*/

Index: src/lib/libc/locale/generic_lc_all.c
diff -u src/lib/libc/locale/generic_lc_all.c:1.3 src/lib/libc/locale/generic_lc_all.c:1.4
--- src/lib/libc/locale/generic_lc_all.c:1.3	Sun Oct  4 21:05:18 2009
+++ src/lib/libc/locale/generic_lc_all.c	Sun Mar  4 21:14:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: generic_lc_all.c,v 1.3 2009/10/04 21:05:18 tnozaki Exp $ */
+/* $NetBSD: generic_lc_all.c,v 1.4 2012/03/04 21:14:56 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: generic_lc_all.c,v 1.3 2009/10/04 21:05:18 tnozaki Exp $");
+__RCSID("$NetBSD: generic_lc_all.c,v 1.4 2012/03/04 21:14:56 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -53,13 +53,13 @@ const char *
 _generic_LC_ALL_setlocale(const char * __restrict name,
     struct _locale_impl_t * __restrict locale)
 {
-	_locale_category_t *l;
+	_locale_set_t sl;
 	char head[_LOCALENAME_LEN_MAX * (_LC_LAST - 1)], *tail;
 	const char *tokens[_LC_LAST], *s, *t;
 	int load_locale_success, i, j;
 
-	l = _find_category(1);
-	_DIAGASSERT(l != NULL);
+	sl = _find_category(1);
+	_DIAGASSERT(sl != NULL);
 	load_locale_success = 0;
 	if (name != NULL) {
 		strlcpy(&head[0], name, sizeof(head));
@@ -82,20 +82,20 @@ _generic_LC_ALL_setlocale(const char * _
 			if (tail != NULL)
 				return NULL;
 		}
-		if ((*l->setlocale)(tokens[1], locale) != NULL)
+		if ((*sl)(tokens[1], locale) != NULL)
 			load_locale_success = 1;
 	}
-	s = (*l->setlocale)(NULL, locale);
+	s = (*sl)(NULL, locale);
 	_DIAGASSERT(s != NULL);
 	strlcpy(&locale->query[0], s, sizeof(locale->query));
 	for (i = 2, j = 0; i < _LC_LAST; ++i) {
-		l = _find_category(i);
-		_DIAGASSERT(l != NULL);
+		sl = _find_category(i);
+		_DIAGASSERT(sl != NULL);
 		if (name != NULL) {
-			if ((*l->setlocale)(tokens[i], locale) != NULL)
+			if ((*sl)(tokens[i], locale) != NULL)
 				load_locale_success = 1;
 		}
-		t = (*l->setlocale)(NULL, locale);
+		t = (*sl)(NULL, locale);
 		_DIAGASSERT(t != NULL);
 		if (j == 0) {
 			if (!strcmp(s, t))
@@ -115,10 +115,3 @@ _generic_LC_ALL_setlocale(const char * _
 	return (const char *)&locale->query[0];
 }
 
-/*
- * macro requrired by generic_lc_template.h
- */
-#define _CATEGORY_ID	LC_ALL
-
-#include "generic_lc_template.h"
-_LOCALE_CATEGORY_ENTRY(_generic_LC_ALL_);
Index: src/lib/libc/locale/nb_lc_template.h
diff -u src/lib/libc/locale/nb_lc_template.h:1.3 src/lib/libc/locale/nb_lc_template.h:1.4
--- src/lib/libc/locale/nb_lc_template.h:1.3	Sat May 22 13:15:59 2010
+++ src/lib/libc/locale/nb_lc_template.h	Sun Mar  4 21:14:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: nb_lc_template.h,v 1.3 2010/05/22 13:15:59 tnozaki Exp $ */
+/* $NetBSD: nb_lc_template.h,v 1.4 2012/03/04 21:14:56 tnozaki Exp $ */
 
 /*-
  * Copyright (c)1999, 2008 Citrus Project,
@@ -214,7 +214,7 @@ done:
 	return ret;
 }
 
-static const char *
+const char *
 _PREFIX(setlocale)(const char * __restrict name,
     struct _locale_impl_t * __restrict locale)
 {
@@ -243,6 +243,4 @@ _PREFIX(setlocale)(const char * __restri
 	return locale->part_name[(size_t)_CATEGORY_ID];
 }
 
-#include "generic_lc_template.h"
-
 #endif /*_NB_LC_TEMPLATE_H_*/

Index: src/lib/libc/locale/setlocale.c
diff -u src/lib/libc/locale/setlocale.c:1.59 src/lib/libc/locale/setlocale.c:1.60
--- src/lib/libc/locale/setlocale.c:1.59	Fri Jan 20 16:31:30 2012
+++ src/lib/libc/locale/setlocale.c	Sun Mar  4 21:14:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: setlocale.c,v 1.59 2012/01/20 16:31:30 joerg Exp $ */
+/* $NetBSD: setlocale.c,v 1.60 2012/03/04 21:14:56 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: setlocale.c,v 1.59 2012/01/20 16:31:30 joerg Exp $");
+__RCSID("$NetBSD: setlocale.c,v 1.60 2012/03/04 21:14:56 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -43,33 +43,21 @@ __RCSID("$NetBSD: setlocale.c,v 1.59 201
 
 const char *_PathLocale = NULL;
 
-__link_set_decl(all_categories, _locale_category_t);
+static _locale_set_t all_categories[_LC_LAST] = {
+	[LC_ALL     ] = &_generic_LC_ALL_setlocale,
+	[LC_COLLATE ] = &_dummy_LC_COLLATE_setlocale,
+	[LC_CTYPE   ] = &_citrus_LC_CTYPE_setlocale,
+	[LC_MONETARY] = &_citrus_LC_MONETARY_setlocale,
+	[LC_NUMERIC ] = &_citrus_LC_NUMERIC_setlocale,
+	[LC_TIME    ] = &_citrus_LC_TIME_setlocale,
+	[LC_MESSAGES] = &_citrus_LC_MESSAGES_setlocale,
+};
 
-extern const _locale_category_t _generic_LC_ALL_desc;
-extern const _locale_category_t _dummy_LC_COLLATE_desc;
-extern const _locale_category_t _citrus_LC_CTYPE_desc;
-extern const _locale_category_t _citrus_LC_MONETARY_desc;
-extern const _locale_category_t _citrus_LC_NUMERIC_desc;
-extern const _locale_category_t _citrus_LC_TIME_desc;
-extern const _locale_category_t _citrus_LC_MESSAGES_desc;
-
-__link_set_add_data(all_categories, _generic_LC_ALL_desc);
-__link_set_add_data(all_categories, _dummy_LC_COLLATE_desc);
-__link_set_add_data(all_categories, _citrus_LC_CTYPE_desc);
-__link_set_add_data(all_categories, _citrus_LC_MONETARY_desc);
-__link_set_add_data(all_categories, _citrus_LC_NUMERIC_desc);
-__link_set_add_data(all_categories, _citrus_LC_TIME_desc);
-__link_set_add_data(all_categories, _citrus_LC_MESSAGES_desc);
-
-_locale_category_t *
+_locale_set_t
 _find_category(int category)
 {
-	_locale_category_t * const *p;
-
-	__link_set_foreach(p, all_categories) {
-		if ((*p)->category == category)
-			return *p;
-	}
+	if (category >= LC_ALL && category < _LC_LAST)
+		return all_categories[category];
 	return NULL;
 }
 
@@ -97,21 +85,18 @@ _get_locale_env(const char *category)
 char *
 __setlocale(int category, const char *name)
 {
-	_locale_category_t *l;
+	_locale_set_t sl;
 	struct _locale_impl_t *impl;
 
-	if (category >= LC_ALL && category < _LC_LAST) {
-		l = _find_category(category);
-		if (l != NULL) {
-			if (issetugid() || ((_PathLocale == NULL &&
-			    (_PathLocale = getenv("PATH_LOCALE")) == NULL) ||
-			    *_PathLocale == '\0'))
-				_PathLocale = _PATH_LOCALE;
-			impl = *_current_locale();
-			return __UNCONST((*l->setlocale)(name, impl));
-		}
-	}
-	return NULL;
+	sl = _find_category(category);
+	if (sl == NULL)
+		return NULL;
+	if (issetugid() || ((_PathLocale == NULL &&
+	    (_PathLocale = getenv("PATH_LOCALE")) == NULL) ||
+	    *_PathLocale == '\0'))
+		_PathLocale = _PATH_LOCALE;
+	impl = *_current_locale();
+	return __UNCONST((*sl)(name, impl));
 }
 
 char *

Index: src/lib/libc/locale/setlocale_local.h
diff -u src/lib/libc/locale/setlocale_local.h:1.7 src/lib/libc/locale/setlocale_local.h:1.8
--- src/lib/libc/locale/setlocale_local.h:1.7	Mon Jun  7 13:52:30 2010
+++ src/lib/libc/locale/setlocale_local.h	Sun Mar  4 21:14:57 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: setlocale_local.h,v 1.7 2010/06/07 13:52:30 tnozaki Exp $ */
+/* $NetBSD: setlocale_local.h,v 1.8 2012/03/04 21:14:57 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -58,17 +58,26 @@ struct _locale_impl_t {
 typedef const char *(*_locale_set_t)(const char * __restrict,
     struct _locale_impl_t * __restrict);
 
-typedef struct {
-	const char* name;
-	int category;
-	_locale_set_t setlocale;
-} _locale_category_t;
-
 __BEGIN_DECLS
-_locale_category_t	*_find_category(int);
+_locale_set_t		_find_category(int);
 const char		*_get_locale_env(const char *);
 struct _locale_impl_t	**_current_locale(void);
 char			*__setlocale(int, const char *);
+
+const char *_generic_LC_ALL_setlocale(
+    const char * __restrict, struct _locale_impl_t * __restrict);
+const char *_dummy_LC_COLLATE_setlocale(
+    const char * __restrict, struct _locale_impl_t * __restrict);
+const char *_citrus_LC_CTYPE_setlocale(
+    const char * __restrict, struct _locale_impl_t * __restrict);
+const char *_citrus_LC_MONETARY_setlocale(
+    const char * __restrict, struct _locale_impl_t * __restrict);
+const char *_citrus_LC_NUMERIC_setlocale(
+    const char * __restrict, struct _locale_impl_t * __restrict);
+const char *_citrus_LC_TIME_setlocale(
+    const char * __restrict, struct _locale_impl_t * __restrict);
+const char *_citrus_LC_MESSAGES_setlocale(
+    const char * __restrict, struct _locale_impl_t * __restrict);
 __END_DECLS
 
 static __inline struct _locale_cache_t *

Reply via email to