]> git.saurik.com Git - apple/libc.git/blobdiff - locale/FreeBSD/wctrans.c
Libc-1439.40.11.tar.gz
[apple/libc.git] / locale / FreeBSD / wctrans.c
index d056bfa63ef7c998c8bc4b4ab4dedb198c514229..30ca5b9546f6dbf4f0f59f1d7edc4890e31fe9b0 100644 (file)
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/locale/wctrans.c,v 1.2 2002/11/09 05:19:08 tjr Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/locale/wctrans.c,v 1.3 2003/11/01 08:20:58 tjr Exp $");
+
+#include "xlocale_private.h"
 
-#include <ctype.h>
 #include <errno.h>
 #include <string.h>
 #include <wctype.h>
@@ -38,19 +39,17 @@ enum {
        _WCT_TOUPPER    = 2
 };
 
-/*
- * TODO: Supply a macro version of this.
- */
 wint_t
-towctrans(wint_t wc, wctrans_t desc)
+towctrans_l(wint_t wc, wctrans_t desc, locale_t loc)
 {
 
+       NORMALIZE_LOCALE(loc);
        switch (desc) {
        case _WCT_TOLOWER:
-               wc = towlower(wc);
+               wc = towlower_l(wc, loc);
                break;
        case _WCT_TOUPPER:
-               wc = towupper(wc);
+               wc = towupper_l(wc, loc);
                break;
        case _WCT_ERROR:
        default:
@@ -61,6 +60,12 @@ towctrans(wint_t wc, wctrans_t desc)
        return (wc);
 }
 
+wint_t
+towctrans(wint_t wc, wctrans_t desc)
+{
+       return towctrans_l(wc, desc, __current_locale());
+}
+
 wctrans_t
 wctrans(const char *charclass)
 {
@@ -82,3 +87,14 @@ wctrans(const char *charclass)
                errno = EINVAL;
        return (ccls[i].trans);
 }
+
+/*
+ * The extended locale version just calls the regular version.  If there
+ * is ever support for arbitrary per-locale translations, this need to
+ * be modified.
+ */
+wctrans_t
+wctrans_l(const char *charclass, locale_t loc)
+{
+       return wctrans(charclass);
+}