Module Name:    src
Committed By:   tnozaki
Date:           Sat May 22 13:15:59 UTC 2010

Modified Files:
        src/lib/libc/gen: isctype.c
        src/lib/libc/locale: global_locale.c localeconv.c nb_lc_template.h
            nl_langinfo.c setlocale_local.h

Log Message:
make _locale_impl_t.cache as pointer to maintain easily binary compatibility in 
future.
no ABI change was made.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/lib/libc/gen/isctype.c
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/locale/global_locale.c
cvs rdiff -u -r1.17 -r1.18 src/lib/libc/locale/localeconv.c
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/locale/nb_lc_template.h
cvs rdiff -u -r1.14 -r1.15 src/lib/libc/locale/nl_langinfo.c
cvs rdiff -u -r1.4 -r1.5 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/gen/isctype.c
diff -u src/lib/libc/gen/isctype.c:1.18 src/lib/libc/gen/isctype.c:1.19
--- src/lib/libc/gen/isctype.c:1.18	Sun Jan 11 02:46:27 2009
+++ src/lib/libc/gen/isctype.c	Sat May 22 13:15:59 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: isctype.c,v 1.18 2009/01/11 02:46:27 christos Exp $ */
+/* $NetBSD: isctype.c,v 1.19 2010/05/22 13:15:59 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: isctype.c,v 1.18 2009/01/11 02:46:27 christos Exp $");
+__RCSID("$NetBSD: isctype.c,v 1.19 2010/05/22 13:15:59 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -44,8 +44,7 @@
 
 #include "setlocale_local.h"
 
-#define _CTYPE_TAB(table, i) \
-    (((*_current_locale())->cache.table + 1)[i])
+#define _CTYPE_TAB(table, i)	((_current_cache()->table + 1)[i])
 
 #undef isalnum
 #undef isalpha

Index: src/lib/libc/locale/global_locale.c
diff -u src/lib/libc/locale/global_locale.c:1.7 src/lib/libc/locale/global_locale.c:1.8
--- src/lib/libc/locale/global_locale.c:1.7	Sat May 22 07:18:43 2010
+++ src/lib/libc/locale/global_locale.c	Sat May 22 13:15:59 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: global_locale.c,v 1.7 2010/05/22 07:18:43 tnozaki Exp $ */
+/* $NetBSD: global_locale.c,v 1.8 2010/05/22 13:15:59 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: global_locale.c,v 1.7 2010/05/22 07:18:43 tnozaki Exp $");
+__RCSID("$NetBSD: global_locale.c,v 1.8 2010/05/22 13:15:59 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -134,16 +134,17 @@
 	[(size_t)ALT_DIGITS ] = NULL,
 };
 
-struct _locale_impl_t _global_locale =
-{
-    .cache = {
-        .ctype_tab   = (const unsigned char *)&_C_ctype_[0],
-        .tolower_tab = (const short *)&_C_tolower_[0],
-        .toupper_tab = (const short *)&_C_toupper_[0],
-        .mb_cur_max = (size_t)1,
-        .ldata = &_global_ldata,
-        .items = &_global_items[0],
-    },
+static struct _locale_cache_t _global_cache = {
+    .ctype_tab   = (const unsigned char *)&_C_ctype_[0],
+    .tolower_tab = (const short *)&_C_tolower_[0],
+    .toupper_tab = (const short *)&_C_toupper_[0],
+    .mb_cur_max = (size_t)1,
+    .ldata = &_global_ldata,
+    .items = &_global_items[0],
+};
+
+struct _locale_impl_t _global_locale = {
+    .cache = &_global_cache,
     .query = { _C_LOCALE },
     .part_name = {
 	[(size_t)LC_ALL     ] = _C_LOCALE,

Index: src/lib/libc/locale/localeconv.c
diff -u src/lib/libc/locale/localeconv.c:1.17 src/lib/libc/locale/localeconv.c:1.18
--- src/lib/libc/locale/localeconv.c:1.17	Sat Mar 27 15:25:22 2010
+++ src/lib/libc/locale/localeconv.c	Sat May 22 13:15:59 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: localeconv.c,v 1.17 2010/03/27 15:25:22 tnozaki Exp $ */
+/* $NetBSD: localeconv.c,v 1.18 2010/05/22 13:15:59 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: localeconv.c,v 1.17 2010/03/27 15:25:22 tnozaki Exp $");
+__RCSID("$NetBSD: localeconv.c,v 1.18 2010/05/22 13:15:59 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -41,8 +41,5 @@
 struct lconv *
 localeconv()
 {
-	struct _locale_impl_t *impl;
-
-	impl = *_current_locale();
-	return impl->cache.ldata;
+	return _current_cache()->ldata;
 }

Index: src/lib/libc/locale/nb_lc_template.h
diff -u src/lib/libc/locale/nb_lc_template.h:1.2 src/lib/libc/locale/nb_lc_template.h:1.3
--- src/lib/libc/locale/nb_lc_template.h:1.2	Sun Jan 11 02:46:29 2009
+++ src/lib/libc/locale/nb_lc_template.h	Sat May 22 13:15:59 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: nb_lc_template.h,v 1.2 2009/01/11 02:46:29 christos Exp $ */
+/* $NetBSD: nb_lc_template.h,v 1.3 2010/05/22 13:15:59 tnozaki Exp $ */
 
 /*-
  * Copyright (c)1999, 2008 Citrus Project,
@@ -235,7 +235,7 @@
 			    = &part->name[0];
 			locale->part_impl[(size_t)_CATEGORY_ID]
 			    = part->impl;
-			_PREFIX(build_cache)(&locale->cache, part->impl);
+			_PREFIX(build_cache)(locale->cache, part->impl);
 			if (locale == &_global_locale)
 				_PREFIX(fixup)(part->impl);
 		}

Index: src/lib/libc/locale/nl_langinfo.c
diff -u src/lib/libc/locale/nl_langinfo.c:1.14 src/lib/libc/locale/nl_langinfo.c:1.15
--- src/lib/libc/locale/nl_langinfo.c:1.14	Sat Mar 27 15:25:22 2010
+++ src/lib/libc/locale/nl_langinfo.c	Sat May 22 13:15:59 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: nl_langinfo.c,v 1.14 2010/03/27 15:25:22 tnozaki Exp $ */
+/* $NetBSD: nl_langinfo.c,v 1.15 2010/05/22 13:15:59 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: nl_langinfo.c,v 1.14 2010/03/27 15:25:22 tnozaki Exp $");
+__RCSID("$NetBSD: nl_langinfo.c,v 1.15 2010/05/22 13:15:59 tnozaki Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/types.h>
@@ -43,13 +43,10 @@
 nl_langinfo(nl_item item)
 {
 	const char *s;
-	struct _locale_impl_t *impl;
 
 	s = NULL;
-	if (item >= D_T_FMT && item <= ALT_DIGITS) {
-		impl = *_current_locale();
-		s = impl->cache.items[(size_t)item];
-	}
+	if (item >= D_T_FMT && item <= ALT_DIGITS)
+		s = _current_cache()->items[(size_t)item];
 	if (s == NULL)
 		s = "";
 	return __UNCONST(s);

Index: src/lib/libc/locale/setlocale_local.h
diff -u src/lib/libc/locale/setlocale_local.h:1.4 src/lib/libc/locale/setlocale_local.h:1.5
--- src/lib/libc/locale/setlocale_local.h:1.4	Sat Mar 27 15:25:22 2010
+++ src/lib/libc/locale/setlocale_local.h	Sat May 22 13:15:59 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: setlocale_local.h,v 1.4 2010/03/27 15:25:22 tnozaki Exp $ */
+/* $NetBSD: setlocale_local.h,v 1.5 2010/05/22 13:15:59 tnozaki Exp $ */
 
 /*-
  * Copyright (c)2008 Citrus Project,
@@ -49,7 +49,7 @@
 };
 
 struct _locale_impl_t {
-	struct _locale_cache_t cache;
+	struct _locale_cache_t *cache;
 	char query[_LOCALENAME_LEN_MAX * (_LC_LAST - 1)];
 	const char *part_name[_LC_LAST];
 	_locale_part_t part_impl[_LC_LAST];
@@ -71,4 +71,10 @@
 struct _locale_impl_t	**_current_locale(void);
 __END_DECLS
 
+static __inline struct _locale_cache_t *
+_current_cache(void)
+{
+	return (*_current_locale())->cache;
+}
+
 #endif /*_SETLOCALE_LOCAL_H_*/

Reply via email to