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