iliaa Mon Oct 11 02:40:20 2004 EDT Modified files: (Branch: PHP_5_0) /php-src NEWS /php-src/ext/calendar calendar.c Log: MFH: Fixed bug #30375 (cal_info() does not work without a parameter). http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.98&r2=1.1760.2.99&ty=u Index: php-src/NEWS diff -u php-src/NEWS:1.1760.2.98 php-src/NEWS:1.1760.2.99 --- php-src/NEWS:1.1760.2.98 Sun Oct 10 21:43:40 2004 +++ php-src/NEWS Mon Oct 11 02:40:17 2004 @@ -4,6 +4,7 @@ - Fixed bug #30387 (stream_socket_client async connect was broken). (vnegrier at esds dot com, Wez). - Fixed potential problems with unserializing invalid serialize data. (Marcus) +- Fixed bug #30375 (cal_info() does not work without a parameter). (Ilia) - Fixed bug #30356 (str_ireplace() does not work on all strings). (Ilia) - Fixed bug #30344 (Reflection::getModifierNames() returns too long strings). (Marcus) http://cvs.php.net/diff.php/php-src/ext/calendar/calendar.c?r1=1.40&r2=1.40.2.1&ty=u Index: php-src/ext/calendar/calendar.c diff -u php-src/ext/calendar/calendar.c:1.40 php-src/ext/calendar/calendar.c:1.40.2.1 --- php-src/ext/calendar/calendar.c:1.40 Sun Feb 1 19:06:17 2004 +++ php-src/ext/calendar/calendar.c Mon Oct 11 02:40:20 2004 @@ -18,7 +18,7 @@ | Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: calendar.c,v 1.40 2004/02/02 00:06:17 iliaa Exp $ */ +/* $Id: calendar.c,v 1.40.2.1 2004/10/11 06:40:20 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -163,26 +163,14 @@ php_info_print_table_end(); } -/* {{{ proto array cal_info(int calendar) - Returns information about a particular calendar */ -PHP_FUNCTION(cal_info) +static void _php_cal_info(int cal, zval **ret) { - long cal; zval *months, *smonths; int i; struct cal_entry_t *calendar; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &cal) == FAILURE) { - RETURN_FALSE; - } - - if (cal < 0 || cal >= CAL_NUM_CALS) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid calendar ID %ld.", cal); - RETURN_FALSE; - } - calendar = &cal_conversion_table[cal]; - array_init(return_value); + array_init(*ret); MAKE_STD_ZVAL(months); MAKE_STD_ZVAL(smonths); @@ -193,11 +181,46 @@ add_index_string(months, i, calendar->month_name_long[i], 1); add_index_string(smonths, i, calendar->month_name_short[i], 1); } - add_assoc_zval(return_value, "months", months); - add_assoc_zval(return_value, "abbrevmonths", smonths); - add_assoc_long(return_value, "maxdaysinmonth", calendar->max_days_in_month); - add_assoc_string(return_value, "calname", calendar->name, 1); - add_assoc_string(return_value, "calsymbol", calendar->symbol, 1); + add_assoc_zval(*ret, "months", months); + add_assoc_zval(*ret, "abbrevmonths", smonths); + add_assoc_long(*ret, "maxdaysinmonth", calendar->max_days_in_month); + add_assoc_string(*ret, "calname", calendar->name, 1); + add_assoc_string(*ret, "calsymbol", calendar->symbol, 1); + +} + +/* {{{ proto array cal_info(int calendar) + Returns information about a particular calendar */ +PHP_FUNCTION(cal_info) +{ + long cal = -1; + + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &cal) == FAILURE) { + RETURN_FALSE; + } + + if (cal == -1) { + int i; + zval *val; + + array_init(return_value); + + for (i = 0; i < CAL_NUM_CALS; i++) { + MAKE_STD_ZVAL(val); + _php_cal_info(i, &val); + add_index_zval(return_value, i, val); + } + return; + } + + + if (cal != -1 && (cal < 0 || cal >= CAL_NUM_CALS)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid calendar ID %ld.", cal); + RETURN_FALSE; + } + + _php_cal_info(cal, &return_value); } /* }}} */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php