Print this page
2964 need POSIX 2008 locale object support

@@ -5,10 +5,15 @@
  *      The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * Paul Borman at Krystal Technologies.
  *
+ * Copyright (c) 2011 The FreeBSD Foundation
+ * All rights reserved.
+ * Portions of this software were developed by David Chisnall
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  * 1. Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.

@@ -58,20 +63,21 @@
     size_t, size_t, mbstate_t *_RESTRICT_KYWD);
 
 /* setup defaults */
 
 int
-_none_init(_RuneLocale *rl)
+_none_init(struct xlocale_ctype *l, _RuneLocale *rl)
 {
-        charset_is_ascii = 1;
+        charset_is_ascii = 1;   /* XXX */
 
-        __mbrtowc = _none_mbrtowc;
-        __mbsinit = _none_mbsinit;
-        __mbsnrtowcs = _none_mbsnrtowcs;
-        __wcrtomb = _none_wcrtomb;
-        __wcsnrtombs = _none_wcsnrtombs;
-        _CurrentRuneLocale = rl;
+        l->__mbrtowc = _none_mbrtowc;
+        l->__mbsinit = _none_mbsinit;
+        l->__mbsnrtowcs = _none_mbsnrtowcs;
+        l->__wcrtomb = _none_wcrtomb;
+        l->__wcsnrtombs = _none_wcsnrtombs;
+        l->runes = rl;
+        /* XXX */
         return (0);
 }
 
 static int
 _none_mbsinit(const mbstate_t *unused)

@@ -195,5 +201,29 @@
 size_t (*__wcrtomb)(char *_RESTRICT_KYWD, wchar_t, mbstate_t *_RESTRICT_KYWD) =
     _none_wcrtomb;
 
 size_t (*__wcsnrtombs)(char *_RESTRICT_KYWD, const wchar_t **_RESTRICT_KYWD,
     size_t, size_t, mbstate_t *_RESTRICT_KYWD) = _none_wcsnrtombs;
+
+struct xlocale_ctype __xlocale_global_ctype = {
+        {{0}, "C"},
+        (_RuneLocale*)&_DefaultRuneLocale,
+        _none_mbrtowc,
+        _none_mbsinit,
+        _none_mbsnrtowcs,
+        _none_wcrtomb,
+        _none_wcsnrtombs,
+        1,      /* __mb_cur_max */
+        256     /* __mb_sb_limit */
+};
+
+const struct xlocale_ctype __xlocale_C_ctype = {
+        {{0}, "C"},
+        (_RuneLocale*)&_DefaultRuneLocale,
+        _none_mbrtowc,
+        _none_mbsinit,
+        _none_mbsnrtowcs,
+        _none_wcrtomb,
+        _none_wcsnrtombs,
+        1,      /* __mb_cur_max */
+        256     /* __mb_sb_limit */
+};