Diff for /embedaddon/php/ext/standard/http.c between versions 1.1.1.1 and 1.1.1.3

version 1.1.1.1, 2012/02/21 23:48:02 version 1.1.1.3, 2013/07/22 01:32:05
Line 2 Line 2
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | PHP Version 5                                                        |     | PHP Version 5                                                        |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
   | Copyright (c) 1997-2012 The PHP Group                                |   | Copyright (c) 1997-2013 The PHP Group                                |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | This source file is subject to version 3.01 of the PHP license,      |     | This source file is subject to version 3.01 of the PHP license,      |
    | that is bundled with this package in the file LICENSE, and is        |     | that is bundled with this package in the file LICENSE, and is        |
Line 29  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 29  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
                                 const char *num_prefix, int num_prefix_len,                                  const char *num_prefix, int num_prefix_len,
                                 const char *key_prefix, int key_prefix_len,                                  const char *key_prefix, int key_prefix_len,
                                 const char *key_suffix, int key_suffix_len,                                  const char *key_suffix, int key_suffix_len,
                                zval *type, char *arg_sep TSRMLS_DC)                          zval *type, char *arg_sep, int enc_type TSRMLS_DC)
 {  {
        char *key = NULL, *ekey, *newprefix, *p;        char *key = NULL;
        int arg_sep_len, key_len, ekey_len, key_type, newprefix_len;        char *ekey, *newprefix, *p;
         int arg_sep_len, ekey_len, key_type, newprefix_len;
         uint key_len;
         ulong idx;          ulong idx;
         zval **zdata = NULL, *copyzval;          zval **zdata = NULL, *copyzval;
   
Line 64  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 66  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
   
                 /* handling for private & protected object properties */                  /* handling for private & protected object properties */
                 if (key && *key == '\0' && type != NULL) {                  if (key && *key == '\0' && type != NULL) {
                        char *tmp;                        const char *tmp;
   
                         zend_object *zobj = zend_objects_get_address(type TSRMLS_CC);                          zend_object *zobj = zend_objects_get_address(type TSRMLS_CC);
                         if (zend_check_property_access(zobj, key, key_len-1 TSRMLS_CC) != SUCCESS) {                          if (zend_check_property_access(zobj, key, key_len-1 TSRMLS_CC) != SUCCESS) {
                                 /* private or protected property access outside of the class */                                  /* private or protected property access outside of the class */
                                 continue;                                  continue;
                         }                          }
                        zend_unmangle_property_name(key, key_len-1, &tmp, &key);                        zend_unmangle_property_name(key, key_len-1, &tmp, (const char**)&key);
                         key_len = strlen(key);                                    key_len = strlen(key);          
                 }                  }
   
Line 81  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 83  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
                 }                  }
                 if (Z_TYPE_PP(zdata) == IS_ARRAY || Z_TYPE_PP(zdata) == IS_OBJECT) {                  if (Z_TYPE_PP(zdata) == IS_ARRAY || Z_TYPE_PP(zdata) == IS_OBJECT) {
                         if (key_type == HASH_KEY_IS_STRING) {                          if (key_type == HASH_KEY_IS_STRING) {
                                ekey = php_url_encode(key, key_len, &ekey_len);                                if (enc_type == PHP_QUERY_RFC3986) {
                                         ekey = php_raw_url_encode(key, key_len, &ekey_len);
                                 } else {
                                         ekey = php_url_encode(key, key_len, &ekey_len);
                                 }
                                 newprefix_len = key_suffix_len + ekey_len + key_prefix_len + 3 /* %5B */;                                  newprefix_len = key_suffix_len + ekey_len + key_prefix_len + 3 /* %5B */;
                                 newprefix = emalloc(newprefix_len + 1);                                  newprefix = emalloc(newprefix_len + 1);
                                 p = newprefix;                                  p = newprefix;
Line 132  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 138  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
                                 *p = '\0';                                  *p = '\0';
                         }                          }
                         ht->nApplyCount++;                          ht->nApplyCount++;
                        php_url_encode_hash_ex(HASH_OF(*zdata), formstr, NULL, 0, newprefix, newprefix_len, "%5D", 3, (Z_TYPE_PP(zdata) == IS_OBJECT ? *zdata : NULL), arg_sep TSRMLS_CC);                        php_url_encode_hash_ex(HASH_OF(*zdata), formstr, NULL, 0, newprefix, newprefix_len, "%5D", 3, (Z_TYPE_PP(zdata) == IS_OBJECT ? *zdata : NULL), arg_sep, enc_type TSRMLS_CC);
                         ht->nApplyCount--;                          ht->nApplyCount--;
                         efree(newprefix);                          efree(newprefix);
                 } else if (Z_TYPE_PP(zdata) == IS_NULL || Z_TYPE_PP(zdata) == IS_RESOURCE) {                  } else if (Z_TYPE_PP(zdata) == IS_NULL || Z_TYPE_PP(zdata) == IS_RESOURCE) {
Line 145  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 151  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
                         /* Simple key=value */                          /* Simple key=value */
                         smart_str_appendl(formstr, key_prefix, key_prefix_len);                          smart_str_appendl(formstr, key_prefix, key_prefix_len);
                         if (key_type == HASH_KEY_IS_STRING) {                          if (key_type == HASH_KEY_IS_STRING) {
                                ekey = php_url_encode(key, key_len, &ekey_len);                                if (enc_type == PHP_QUERY_RFC3986) {
                                         ekey = php_raw_url_encode(key, key_len, &ekey_len);
                                 } else {
                                         ekey = php_url_encode(key, key_len, &ekey_len);
                                 }
                                 smart_str_appendl(formstr, ekey, ekey_len);                                  smart_str_appendl(formstr, ekey, ekey_len);
                                 efree(ekey);                                  efree(ekey);
                         } else {                          } else {
Line 161  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 171  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
                         smart_str_appendl(formstr, "=", 1);                          smart_str_appendl(formstr, "=", 1);
                         switch (Z_TYPE_PP(zdata)) {                          switch (Z_TYPE_PP(zdata)) {
                                 case IS_STRING:                                  case IS_STRING:
                                        ekey = php_url_encode(Z_STRVAL_PP(zdata), Z_STRLEN_PP(zdata), &ekey_len);                                        if (enc_type == PHP_QUERY_RFC3986) {
                                                 ekey = php_raw_url_encode(Z_STRVAL_PP(zdata), Z_STRLEN_PP(zdata), &ekey_len);
                                         } else {
                                                 ekey = php_url_encode(Z_STRVAL_PP(zdata), Z_STRLEN_PP(zdata), &ekey_len);                                               
                                         }
                                         break;                                          break;
                                 case IS_LONG:                                  case IS_LONG:
                                 case IS_BOOL:                                  case IS_BOOL:
Line 176  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 190  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
                                         *copyzval = **zdata;                                          *copyzval = **zdata;
                                         zval_copy_ctor(copyzval);                                          zval_copy_ctor(copyzval);
                                         convert_to_string_ex(&copyzval);                                          convert_to_string_ex(&copyzval);
                                        ekey = php_url_encode(Z_STRVAL_P(copyzval), Z_STRLEN_P(copyzval), &ekey_len);                                        if (enc_type == PHP_QUERY_RFC3986) {
                                                 ekey = php_raw_url_encode(Z_STRVAL_P(copyzval), Z_STRLEN_P(copyzval), &ekey_len);
                                         } else {
                                                 ekey = php_url_encode(Z_STRVAL_P(copyzval), Z_STRLEN_P(copyzval), &ekey_len);
                                         }
                                         zval_ptr_dtor(&copyzval);                                          zval_ptr_dtor(&copyzval);
                         }                          }
                         smart_str_appendl(formstr, ekey, ekey_len);                          smart_str_appendl(formstr, ekey, ekey_len);
Line 188  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart Line 206  PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart
 }  }
 /* }}} */  /* }}} */
   
/* {{{ proto string http_build_query(mixed formdata [, string prefix [, string arg_separator]])/* {{{ proto string http_build_query(mixed formdata [, string prefix [, string arg_separator [, int enc_type]]])
    Generates a form-encoded query string from an associative array or object. */     Generates a form-encoded query string from an associative array or object. */
 PHP_FUNCTION(http_build_query)  PHP_FUNCTION(http_build_query)
 {  {
Line 196  PHP_FUNCTION(http_build_query) Line 214  PHP_FUNCTION(http_build_query)
         char *prefix = NULL, *arg_sep=NULL;          char *prefix = NULL, *arg_sep=NULL;
         int arg_sep_len = 0, prefix_len = 0;          int arg_sep_len = 0, prefix_len = 0;
         smart_str formstr = {0};          smart_str formstr = {0};
                long enc_type = PHP_QUERY_RFC1738;
   
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|ss", &formdata, &prefix, &prefix_len, &arg_sep, &arg_sep_len) != SUCCESS) {        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|ssl", &formdata, &prefix, &prefix_len, &arg_sep, &arg_sep_len, &enc_type) != SUCCESS) {
                 RETURN_FALSE;                  RETURN_FALSE;
         }          }
   
Line 207  PHP_FUNCTION(http_build_query) Line 225  PHP_FUNCTION(http_build_query)
                 RETURN_FALSE;                  RETURN_FALSE;
         }          }
   
        if (php_url_encode_hash_ex(HASH_OF(formdata), &formstr, prefix, prefix_len, NULL, 0, NULL, 0, (Z_TYPE_P(formdata) == IS_OBJECT ? formdata : NULL), arg_sep TSRMLS_CC) == FAILURE) {        if (php_url_encode_hash_ex(HASH_OF(formdata), &formstr, prefix, prefix_len, NULL, 0, NULL, 0, (Z_TYPE_P(formdata) == IS_OBJECT ? formdata : NULL), arg_sep, enc_type TSRMLS_CC) == FAILURE) {
                 if (formstr.c) {                  if (formstr.c) {
                         efree(formstr.c);                          efree(formstr.c);
                 }                  }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>