logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

cvs: ZendEngine2 / zend_API.c zend_operators.c: msg#00074

Subject: cvs: ZendEngine2 / zend_API.c zend_operators.c
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




<Prev in Thread] Current Thread [Next in Thread>