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

Reply via email to