iliaa Mon Oct 11 02:39:44 2004 EDT Modified files: /php-src/ext/calendar calendar.c Log: Fixed bug #30375 (cal_info() does not work without a parameter). http://cvs.php.net/diff.php/php-src/ext/calendar/calendar.c?r1=1.40&r2=1.41&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.41 --- 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:39:41 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.41 2004/10/11 06:39:41 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