andrei Wed Aug 17 13:30:03 2005 EDT
Modified files:
/ZendEngine2 zend_API.c zend_operators.c
Log:
- Introduce 'y' specifier for functions expecting binary data.
- convert_to_binary() now uses convert_to_string() in non-Unicode mode.
http://cvs.php.net/diff.php/ZendEngine2/zend_API.c?r1=1.303&r2=1.304&ty=u
Index: ZendEngine2/zend_API.c
diff -u ZendEngine2/zend_API.c:1.303 ZendEngine2/zend_API.c:1.304
--- ZendEngine2/zend_API.c:1.303 Wed Aug 17 06:24:38 2005
+++ ZendEngine2/zend_API.c Wed Aug 17 13:30:02 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_API.c,v 1.303 2005/08/17 10:24:38 dmitry Exp $ */
+/* $Id: zend_API.c,v 1.304 2005/08/17 17:30:02 andrei Exp $ */
#include "zend.h"
#include "zend_execute.h"
@@ -227,7 +227,7 @@
return "double";
case IS_STRING:
- return "string";
+ return "native string";
case IS_ARRAY:
return "array";
@@ -437,7 +437,7 @@
*p =
Z_STRVAL_PP(arg);
break;
} else {
- return "string";
+ return "native
string";
}
}
}
@@ -445,7 +445,56 @@
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string";
+ return "native string";
+ }
+ }
+ break;
+
+ case 'y':
+ {
+ char **p = va_arg(*va, char **);
+ int *pl = va_arg(*va, int *);
+ switch (Z_TYPE_PP(arg)) {
+ case IS_NULL:
+ if (return_null) {
+ *p = NULL;
+ *pl = 0;
+ break;
+ }
+ /* break omitted intentionally
*/
+
+ case IS_STRING:
+ case IS_LONG:
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_UNICODE:
+ convert_to_binary_ex(arg);
+ *p = Z_BINVAL_PP(arg);
+ *pl = Z_BINLEN_PP(arg);
+ break;
+
+ case IS_BINARY:
+ *p = Z_BINVAL_PP(arg);
+ *pl = Z_BINLEN_PP(arg);
+ break;
+
+ case IS_OBJECT: {
+ if (Z_OBJ_HANDLER_PP(arg,
cast_object)) {
+
SEPARATE_ZVAL_IF_NOT_REF(arg);
+ if
(Z_OBJ_HANDLER_PP(arg, cast_object)(*arg, *arg, IS_BINARY, 0 TSRMLS_CC) ==
SUCCESS) {
+ *pl =
Z_BINLEN_PP(arg);
+ *p =
Z_BINVAL_PP(arg);
+ break;
+ } else {
+ return "binary
data";
+ }
+ }
+ }
+
+ case IS_ARRAY:
+ case IS_RESOURCE:
+ default:
+ return "binary data";
}
}
break;
@@ -481,7 +530,7 @@
*p =
Z_USTRVAL_PP(arg);
break;
} else {
- return "string";
+ return "Unicode
string";
}
}
}
@@ -489,7 +538,7 @@
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string";
+ return "Unicode string";
}
}
break;
@@ -544,7 +593,7 @@
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string (legacy,
Unicode, or binary)";
+ return "string (native,
Unicode, or binary)";
}
break;
@@ -614,7 +663,7 @@
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string (legacy,
Unicode, or binary)";
+ return "string (native,
Unicode, or binary)";
}
}
break;
@@ -774,7 +823,7 @@
case 'r': case 'a':
case 'o': case 'O':
case 'z': case 'Z':
- case 't':
+ case 't': case 'y':
case 'u':
max_num_args++;
break;
http://cvs.php.net/diff.php/ZendEngine2/zend_operators.c?r1=1.211&r2=1.212&ty=u
Index: ZendEngine2/zend_operators.c
diff -u ZendEngine2/zend_operators.c:1.211 ZendEngine2/zend_operators.c:1.212
--- ZendEngine2/zend_operators.c:1.211 Mon Aug 15 10:39:18 2005
+++ ZendEngine2/zend_operators.c Wed Aug 17 13:30:02 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_operators.c,v 1.211 2005/08/15 14:39:18 dmitry Exp $ */
+/* $Id: zend_operators.c,v 1.212 2005/08/17 17:30:02 andrei Exp $ */
#include <ctype.h>
@@ -774,6 +774,11 @@
ZEND_API void convert_to_binary(zval *op)
{
+ if (!UG(unicode)) {
+ convert_to_string(op);
+ return;
+ }
+
switch (op->type) {
case IS_BINARY:
break;
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
|