- char buf[0x20], *key_str;
- int key_len;
-
- if (key->type == HASH_KEY_IS_LONG) {
- key_len = slprintf(buf, sizeof(buf) - 1, "%ld", key->num) + 1;
- key_str = &buf[0];
- } else {
- key_len = key->len;
- key_str = key->str;
- }
if (key->type == HASH_KEY_IS_LONG) {
zend_hash_index_update(&list->extras, key->num, (void *) &arg, sizeof(zval *), NULL);
} else {
zend_hash_update(&list->extras, key->str, key->len, (void *) &arg, sizeof(zval *), NULL);
}
if (key->type == HASH_KEY_IS_LONG) {
zend_hash_index_update(&list->extras, key->num, (void *) &arg, sizeof(zval *), NULL);
} else {
zend_hash_update(&list->extras, key->str, key->len, (void *) &arg, sizeof(zval *), NULL);
}
} else {
zend_hash_update(&list->cookies, key->str, key->len, (void *) &arg, sizeof(zval *), NULL);
}
} else {
zend_hash_update(&list->cookies, key->str, key->len, (void *) &arg, sizeof(zval *), NULL);
}
}
PHP_HTTP_API php_http_cookie_list_t *php_http_cookie_list_parse(php_http_cookie_list_t *list, const char *str, size_t len, long flags, char **allowed_extras TSRMLS_DC)
}
PHP_HTTP_API php_http_cookie_list_t *php_http_cookie_list_parse(php_http_cookie_list_t *list, const char *str, size_t len, long flags, char **allowed_extras TSRMLS_DC)
FOREACH_HASH_KEYVAL(pos, &list->cookies, key, val) {
zval *tmp = php_http_ztyp(IS_STRING, *val);
FOREACH_HASH_KEYVAL(pos, &list->cookies, key, val) {
zval *tmp = php_http_ztyp(IS_STRING, *val);
- if (key.type == HASH_KEY_IS_STRING && key.len) {
- append_encoded(&buf, key.str, key.len-1, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
- } else if (key.type == HASH_KEY_IS_LONG) {
- int enc_len;
- char *enc_str = php_raw_url_encode(Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), &enc_len);
- php_http_buffer_appendf(&buf, "%ld=%.*s; ", key.num, enc_len, enc_str);
- efree(enc_str);
- }
+ php_http_array_hashkey_stringify(&key);
+ append_encoded(&buf, key.str, key.len-1, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
+ php_http_array_hashkey_stringfree(&key);
+
FOREACH_HASH_KEYVAL(pos, &list->extras, key, val) {
zval *tmp = php_http_ztyp(IS_STRING, *val);
FOREACH_HASH_KEYVAL(pos, &list->extras, key, val) {
zval *tmp = php_http_ztyp(IS_STRING, *val);
- if (key.type == HASH_KEY_IS_STRING && key.len) {
- append_encoded(&buf, key.str, key.len-1, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
- } else if (key.type == HASH_KEY_IS_LONG) {
- int enc_len;
- char *enc_str = php_raw_url_encode(Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), &enc_len);
- php_http_buffer_appendf(&buf, "%ld=%.*s; ", key.num, enc_len, enc_str);
- efree(enc_str);
- }
+ php_http_array_hashkey_stringify(&key);
+ append_encoded(&buf, key.str, key.len-1, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
+ php_http_array_hashkey_stringfree(&key);
+
-zend_class_entry *php_http_cookie_class_entry;
-zend_function_entry php_http_cookie_method_entry[] = {
+static zend_class_entry *php_http_cookie_class_entry;
+
+zend_class_entry *php_http_cookie_get_class_entry(void)
+{
+ return php_http_cookie_class_entry;
+}
+
+static zend_function_entry php_http_cookie_method_entry[] = {
PHP_HTTP_COOKIE_ME(__construct, ZEND_ACC_PUBLIC)
PHP_HTTP_COOKIE_ME(getCookies, ZEND_ACC_PUBLIC)
PHP_HTTP_COOKIE_ME(setCookies, ZEND_ACC_PUBLIC)
PHP_HTTP_COOKIE_ME(__construct, ZEND_ACC_PUBLIC)
PHP_HTTP_COOKIE_ME(getCookies, ZEND_ACC_PUBLIC)
PHP_HTTP_COOKIE_ME(setCookies, ZEND_ACC_PUBLIC)
zval *zcookie = NULL;
long flags = 0;
HashTable *allowed_extras = NULL;
if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z!lH", &zcookie, &flags, &allowed_extras)) {
if (zcookie) {
zval *zcookie = NULL;
long flags = 0;
HashTable *allowed_extras = NULL;
if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z!lH", &zcookie, &flags, &allowed_extras)) {
if (zcookie) {
- PHP_HTTP_REGISTER_CLASS(http, Cookie, http_cookie, php_http_object_class_entry, 0);
+ PHP_HTTP_REGISTER_CLASS(http, Cookie, http_cookie, php_http_object_get_class_entry(), 0);
php_http_cookie_class_entry->create_object = php_http_cookie_object_new;
memcpy(&php_http_cookie_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
php_http_cookie_object_handlers.clone_obj = php_http_cookie_object_clone;
php_http_cookie_class_entry->create_object = php_http_cookie_object_new;
memcpy(&php_http_cookie_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
php_http_cookie_object_handlers.clone_obj = php_http_cookie_object_clone;