iliaa Sat Jun 28 02:59:31 2003 EDT Added files: (Branch: PHP_4_3) /php-src/ext/wddx/tests .cvsignore 001.phpt wddx.xml
Modified files: /php-src/ext/wddx wddx.c Log: MFH: Added missing handling of dateTime Index: php-src/ext/wddx/wddx.c diff -u php-src/ext/wddx/wddx.c:1.96.2.3 php-src/ext/wddx/wddx.c:1.96.2.4 --- php-src/ext/wddx/wddx.c:1.96.2.3 Sat Jan 4 14:51:46 2003 +++ php-src/ext/wddx/wddx.c Sat Jun 28 02:59:31 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: wddx.c,v 1.96.2.3 2003/01/04 19:51:46 helly Exp $ */ +/* $Id: wddx.c,v 1.96.2.4 2003/06/28 06:59:31 iliaa Exp $ */ #include "php.h" #include "php_wddx.h" @@ -32,6 +32,7 @@ #include "ext/standard/php_smart_str.h" #include "ext/standard/html.h" #include "ext/standard/php_string.h" +#include "ext/standard/php_parsedate.h" #define WDDX_BUF_LEN 256 #define PHP_CLASS_NAME_VAR "php_class_name" @@ -52,6 +53,7 @@ #define EL_VERSION "version" #define EL_RECORDSET "recordset" #define EL_FIELD "field" +#define EL_DATETIME "dateTime" #define php_wddx_deserialize(a,b) \ php_wddx_deserialize_ex((a)->value.str.val, (a)->value.str.len, (b)) @@ -77,7 +79,8 @@ ST_BINARY, ST_STRUCT, ST_RECORDSET, - ST_FIELD + ST_FIELD, + ST_DATETIME } type; char *varname; } st_entry; @@ -867,6 +870,14 @@ } wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); + } else if (!strcmp(name, EL_DATETIME)) { + ent.type = ST_DATETIME; + SET_STACK_VARNAME; + + ALLOC_ZVAL(ent.data); + INIT_PZVAL(ent.data); + Z_TYPE_P(ent.data) = IS_LONG; + wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); } } /* }}} */ @@ -890,7 +901,8 @@ if (!strcmp(name, EL_STRING) || !strcmp(name, EL_NUMBER) || !strcmp(name, EL_BOOLEAN) || !strcmp(name, EL_NULL) || !strcmp(name, EL_ARRAY) || !strcmp(name, EL_STRUCT) || - !strcmp(name, EL_RECORDSET) || !strcmp(name, EL_BINARY)) { + !strcmp(name, EL_RECORDSET) || !strcmp(name, EL_BINARY) || + !strcmp(name, EL_DATETIME)) { wddx_stack_top(stack, (void**)&ent1); if (!strcmp(name, EL_BINARY)) { @@ -1054,6 +1066,22 @@ } break; + case ST_DATETIME: { + char *tmp; + + tmp = do_alloca(len + 1); + memcpy(tmp, s, len); + tmp[len] = '\0'; + + Z_LVAL_P(ent->data) = php_parse_date(tmp, NULL); + /* date out of range < 1969 or > 2038 */ + if (Z_LVAL_P(ent->data) == -1) { + Z_TYPE_P(ent->data) = IS_STRING; + Z_STRLEN_P(ent->data) = len; + Z_STRVAL_P(ent->data) = estrndup(s, len); + } + free_alloca(tmp); + } default: break; } Index: php-src/ext/wddx/tests/.cvsignore +++ php-src/ext/wddx/tests/.cvsignore phpt.* *.diff *.log *.exp *.out *.php Index: php-src/ext/wddx/tests/001.phpt +++ php-src/ext/wddx/tests/001.phpt --TEST-- wddz deserialization test --FILE-- <?php $path = dirname(__FILE__); var_dump(wddx_deserialize(file_get_contents("{$path}/wddx.xml"))); ?> --EXPECT-- array(11) { ["aNull"]=> NULL ["aString"]=> string(8) "a string" ["aNumber"]=> float(-12.456) ["aDateTime"]=> int(897600732) ["aDateTime2"]=> string(19) "1930-06-12T04:32:12" ["aDateTime3"]=> string(19) "2040-06-12T04:32:12" ["aBoolean"]=> bool(true) ["anArray"]=> array(2) { [0]=> int(10) [1]=> string(14) "second element" } ["aBinary"]=> string(11) "binary data" ["anObject"]=> array(2) { ["s"]=> string(8) "a string" ["n"]=> float(-12.456) } ["aRecordset"]=> array(2) { ["NAME"]=> array(2) { [0]=> string(8) "John Doe" [1]=> string(8) "Jane Doe" } ["AGE"]=> array(2) { [0]=> int(34) [1]=> int(31) } } } Index: php-src/ext/wddx/tests/wddx.xml +++ php-src/ext/wddx/tests/wddx.xml <?xml version='1.0'?> <!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> <wddxPacket version='1.0'> <header/> <data> <struct> <var name='aNull'> <null/> </var> <var name='aString'> <string>a string</string> </var> <var name='aNumber'> <number>-12.456</number> </var> <var name='aDateTime'> <dateTime>1998-06-12T04:32:12</dateTime> </var> <var name='aDateTime2'> <dateTime>1930-06-12T04:32:12</dateTime> </var> <var name='aDateTime3'> <dateTime>2040-06-12T04:32:12</dateTime> </var> <var name='aBoolean'> <boolean value='true'/> </var> <var name='anArray'> <array length='2'> <number>10</number> <string>second element</string> </array> </var> <var name='aBinary'> <binary length='11'>YmluYXJ5IGRhdGE=</binary> </var> <var name='anObject'> <struct> <var name='s'> <string>a string</string> </var> <var name='n'> <number>-12.456</number> </var> </struct> </var> <var name='aRecordset'> <recordset rowCount='2' fieldNames='NAME,AGE'> <field name='NAME'> <string>John Doe</string> <string>Jane Doe</string> </field> <field name='AGE'> <number>34</number> <number>31</number> </field> </recordset> </struct> </data> </wddxPacket> -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php