X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/9385eb3d10ebe5eb398c52040ec3dbfba9b0cdcf..224c70764cab4e0e39a26aaf3ad3016552f62f55:/locale/FreeBSD/nl_langinfo.c.patch diff --git a/locale/FreeBSD/nl_langinfo.c.patch b/locale/FreeBSD/nl_langinfo.c.patch index a069542..20d62bd 100644 --- a/locale/FreeBSD/nl_langinfo.c.patch +++ b/locale/FreeBSD/nl_langinfo.c.patch @@ -1,11 +1,164 @@ ---- nl_langinfo.c.orig Fri Mar 22 13:52:18 2002 -+++ nl_langinfo.c Sat May 3 14:14:55 2003 -@@ -33,7 +33,7 @@ - #include - #include +--- nl_langinfo.c.orig 2005-03-15 23:26:13.000000000 -0800 ++++ nl_langinfo.c 2005-03-15 23:38:20.000000000 -0800 +@@ -27,6 +27,8 @@ + #include + __FBSDID("$FreeBSD: src/lib/libc/locale/nl_langinfo.c,v 1.17 2003/06/26 10:46:16 phantom Exp $"); --#include "../stdtime/timelocal.h" -+#include "timelocal.h" ++#include "xlocale_private.h" ++ + #include + #include + #include +@@ -36,20 +38,22 @@ #include "lnumeric.h" - #include "lmonetary.h" #include "lmessages.h" + #include "lmonetary.h" +-#include "../stdtime/timelocal.h" ++#include "timelocal.h" + + #define _REL(BASE) ((int)item-BASE) + + char * +-nl_langinfo(nl_item item) ++nl_langinfo_l(nl_item item, locale_t loc) + { +- char *ret, *s, *cs; ++ char *ret, *cs; ++ const char *s; + static char *csym = NULL; + ++ NORMALIZE_LOCALE(loc); + switch (item) { + case CODESET: + ret = ""; +- if ((s = setlocale(LC_CTYPE, NULL)) != NULL) { ++ if ((s = querylocale(LC_CTYPE_MASK, loc)) != NULL) { + if ((cs = strchr(s, '.')) != NULL) + ret = cs + 1; + else if (strcmp(s, "C") == 0 || +@@ -58,40 +62,40 @@ + } + break; + case D_T_FMT: +- ret = (char *) __get_current_time_locale()->c_fmt; ++ ret = (char *) __get_current_time_locale(loc)->c_fmt; + break; + case D_FMT: +- ret = (char *) __get_current_time_locale()->x_fmt; ++ ret = (char *) __get_current_time_locale(loc)->x_fmt; + break; + case T_FMT: +- ret = (char *) __get_current_time_locale()->X_fmt; ++ ret = (char *) __get_current_time_locale(loc)->X_fmt; + break; + case T_FMT_AMPM: +- ret = (char *) __get_current_time_locale()->ampm_fmt; ++ ret = (char *) __get_current_time_locale(loc)->ampm_fmt; + break; + case AM_STR: +- ret = (char *) __get_current_time_locale()->am; ++ ret = (char *) __get_current_time_locale(loc)->am; + break; + case PM_STR: +- ret = (char *) __get_current_time_locale()->pm; ++ ret = (char *) __get_current_time_locale(loc)->pm; + break; + case DAY_1: case DAY_2: case DAY_3: + case DAY_4: case DAY_5: case DAY_6: case DAY_7: +- ret = (char*) __get_current_time_locale()->weekday[_REL(DAY_1)]; ++ ret = (char*) __get_current_time_locale(loc)->weekday[_REL(DAY_1)]; + break; + case ABDAY_1: case ABDAY_2: case ABDAY_3: + case ABDAY_4: case ABDAY_5: case ABDAY_6: case ABDAY_7: +- ret = (char*) __get_current_time_locale()->wday[_REL(ABDAY_1)]; ++ ret = (char*) __get_current_time_locale(loc)->wday[_REL(ABDAY_1)]; + break; + case MON_1: case MON_2: case MON_3: case MON_4: + case MON_5: case MON_6: case MON_7: case MON_8: + case MON_9: case MON_10: case MON_11: case MON_12: +- ret = (char*) __get_current_time_locale()->month[_REL(MON_1)]; ++ ret = (char*) __get_current_time_locale(loc)->month[_REL(MON_1)]; + break; + case ABMON_1: case ABMON_2: case ABMON_3: case ABMON_4: + case ABMON_5: case ABMON_6: case ABMON_7: case ABMON_8: + case ABMON_9: case ABMON_10: case ABMON_11: case ABMON_12: +- ret = (char*) __get_current_time_locale()->mon[_REL(ABMON_1)]; ++ ret = (char*) __get_current_time_locale(loc)->mon[_REL(ABMON_1)]; + break; + case ERA: + /* XXX: need to be implemented */ +@@ -114,16 +118,16 @@ + ret = ""; + break; + case RADIXCHAR: +- ret = (char*) __get_current_numeric_locale()->decimal_point; ++ ret = (char*) __get_current_numeric_locale(loc)->decimal_point; + break; + case THOUSEP: +- ret = (char*) __get_current_numeric_locale()->thousands_sep; ++ ret = (char*) __get_current_numeric_locale(loc)->thousands_sep; + break; + case YESEXPR: +- ret = (char*) __get_current_messages_locale()->yesexpr; ++ ret = (char*) __get_current_messages_locale(loc)->yesexpr; + break; + case NOEXPR: +- ret = (char*) __get_current_messages_locale()->noexpr; ++ ret = (char*) __get_current_messages_locale(loc)->noexpr; + break; + /* + * YESSTR and NOSTR items marked with LEGACY are available, but not +@@ -131,25 +135,25 @@ + * they're subject to remove in future specification editions. + */ + case YESSTR: /* LEGACY */ +- ret = (char*) __get_current_messages_locale()->yesstr; ++ ret = (char*) __get_current_messages_locale(loc)->yesstr; + break; + case NOSTR: /* LEGACY */ +- ret = (char*) __get_current_messages_locale()->nostr; ++ ret = (char*) __get_current_messages_locale(loc)->nostr; + break; + /* + * SUSv2 special formatted currency string + */ + case CRNCYSTR: + ret = ""; +- cs = (char*) __get_current_monetary_locale()->currency_symbol; ++ cs = (char*) __get_current_monetary_locale(loc)->currency_symbol; + if (*cs != '\0') { +- char pos = localeconv()->p_cs_precedes; ++ char pos = localeconv_l(loc)->p_cs_precedes; + +- if (pos == localeconv()->n_cs_precedes) { ++ if (pos == localeconv_l(loc)->n_cs_precedes) { + char psn = '\0'; + + if (pos == CHAR_MAX) { +- if (strcmp(cs, __get_current_monetary_locale()->mon_decimal_point) == 0) ++ if (strcmp(cs, __get_current_monetary_locale(loc)->mon_decimal_point) == 0) + psn = '.'; + } else + psn = pos ? '-' : '+'; +@@ -166,10 +170,19 @@ + } + break; + case D_MD_ORDER: /* FreeBSD local extension */ +- ret = (char *) __get_current_time_locale()->md_order; ++ ret = (char *) __get_current_time_locale(loc)->md_order; + break; + default: +- ret = ""; ++ return ""; /* do not consult POSIX */ ++ } ++ if (ret && !ret[0] && item != D_MD_ORDER && item != CODESET && loc != _c_locale) { ++ ret = nl_langinfo_l(item, _c_locale); + } + return (ret); + } ++ ++char * ++nl_langinfo(nl_item item) ++{ ++ return (nl_langinfo_l(item, __current_locale())); ++}