summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2007-12-13 22:29:48 +0000
committerAntony Dovgal <tony2001@php.net>2007-12-13 22:29:48 +0000
commitfc78e491b40b03f74da95bfeea3d7daa867f9520 (patch)
treea4f612499cc0da3c0ebf7551ee5833e83fd0ea36
parent9bde93698e81241648596cc8ff79aee6e773600e (diff)
downloadphp-git-fc78e491b40b03f74da95bfeea3d7daa867f9520.tar.gz
MFH: add workaround for glibc issue
-rw-r--r--ext/standard/string.c177
1 files changed, 172 insertions, 5 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index dea0753947..fd6ed395e2 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -451,15 +451,182 @@ PHP_MINIT_FUNCTION(nl_langinfo)
Query language and locale information */
PHP_FUNCTION(nl_langinfo)
{
- zval **item;
+ long item;
char *value;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &item) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &item) == FAILURE) {
+ return;
+ }
+
+ switch(item) { /* {{{ */
+#ifdef ABDAY_1
+ case ABDAY_1:
+ case ABDAY_2:
+ case ABDAY_3:
+ case ABDAY_4:
+ case ABDAY_5:
+ case ABDAY_6:
+ case ABDAY_7:
+#endif
+#ifdef DAY_1
+ case DAY_1:
+ case DAY_2:
+ case DAY_3:
+ case DAY_4:
+ case DAY_5:
+ case DAY_6:
+ case DAY_7:
+#endif
+#ifdef ABMON_1
+ 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:
+#endif
+#ifdef MON_1
+ 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:
+#endif
+#ifdef AM_STR
+ case AM_STR:
+#endif
+#ifdef PM_STR
+ case PM_STR:
+#endif
+#ifdef D_T_FMT
+ case D_T_FMT:
+#endif
+#ifdef D_FMT
+ case D_FMT:
+#endif
+#ifdef T_FMT
+ case T_FMT:
+#endif
+#ifdef T_FMT_AMPM
+ case T_FMT_AMPM:
+#endif
+#ifdef ERA
+ case ERA:
+#endif
+#ifdef ERA_YEAR
+ case ERA_YEAR:
+#endif
+#ifdef ERA_D_T_FMT
+ case ERA_D_T_FMT:
+#endif
+#ifdef ERA_D_FMT
+ case ERA_D_FMT:
+#endif
+#ifdef ERA_T_FMT
+ case ERA_T_FMT:
+#endif
+#ifdef ALT_DIGITS
+ case ALT_DIGITS:
+#endif
+#ifdef INT_CURR_SYMBOL
+ case INT_CURR_SYMBOL:
+#endif
+#ifdef CURRENCY_SYMBOL
+ case CURRENCY_SYMBOL:
+#endif
+#ifdef CRNCYSTR
+ case CRNCYSTR:
+#endif
+#ifdef MON_DECIMAL_POINT
+ case MON_DECIMAL_POINT:
+#endif
+#ifdef MON_THOUSANDS_SEP
+ case MON_THOUSANDS_SEP:
+#endif
+#ifdef MON_GROUPING
+ case MON_GROUPING:
+#endif
+#ifdef POSITIVE_SIGN
+ case POSITIVE_SIGN:
+#endif
+#ifdef NEGATIVE_SIGN
+ case NEGATIVE_SIGN:
+#endif
+#ifdef INT_FRAC_DIGITS
+ case INT_FRAC_DIGITS:
+#endif
+#ifdef FRAC_DIGITS
+ case FRAC_DIGITS:
+#endif
+#ifdef P_CS_PRECEDES
+ case P_CS_PRECEDES:
+#endif
+#ifdef P_SEP_BY_SPACE
+ case P_SEP_BY_SPACE:
+#endif
+#ifdef N_CS_PRECEDES
+ case N_CS_PRECEDES:
+#endif
+#ifdef N_SEP_BY_SPACE
+ case N_SEP_BY_SPACE:
+#endif
+#ifdef P_SIGN_POSN
+ case P_SIGN_POSN:
+#endif
+#ifdef N_SIGN_POSN
+ case N_SIGN_POSN:
+#endif
+#ifdef DECIMAL_POINT
+ case DECIMAL_POINT:
+#endif
+#ifdef RADIXCHAR
+ case RADIXCHAR:
+#endif
+#ifdef THOUSANDS_SEP
+ case THOUSANDS_SEP:
+#endif
+#ifdef THOUSEP
+ case THOUSEP:
+#endif
+#ifdef GROUPING
+ case GROUPING:
+#endif
+#ifdef YESEXPR
+ case YESEXPR:
+#endif
+#ifdef NOEXPR
+ case NOEXPR:
+#endif
+#ifdef YESSTR
+ case YESSTR:
+#endif
+#ifdef NOSTR
+ case NOSTR:
+#endif
+#ifdef CODESET
+ case CODESET:
+#endif
+ break;
+ default:
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Item '%ld' is not valid", item);
+ RETURN_FALSE;
}
- convert_to_long_ex(item);
+ /* }}} */
- value = nl_langinfo(Z_LVAL_PP(item));
+ value = nl_langinfo(item);
if (value == NULL) {
RETURN_FALSE;
} else {