| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2013, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2014, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
#include "php_http_api.h"
-PHP_HTTP_API php_http_cookie_list_t *php_http_cookie_list_init(php_http_cookie_list_t *list TSRMLS_DC)
+php_http_cookie_list_t *php_http_cookie_list_init(php_http_cookie_list_t *list TSRMLS_DC)
{
if (!list) {
list = emalloc(sizeof(*list));
return list;
}
-PHP_HTTP_API php_http_cookie_list_t *php_http_cookie_list_copy(php_http_cookie_list_t *from, php_http_cookie_list_t *to)
+php_http_cookie_list_t *php_http_cookie_list_copy(php_http_cookie_list_t *from, php_http_cookie_list_t *to)
{
TSRMLS_FETCH_FROM_CTX(from->ts);
array_copy(&from->cookies, &to->cookies);
array_copy(&from->extras, &to->extras);
- STR_SET(to->path, from->path ? estrdup(from->path) : NULL);
- STR_SET(to->domain, from->domain ? estrdup(from->domain) : NULL);
+ PTR_SET(to->path, from->path ? estrdup(from->path) : NULL);
+ PTR_SET(to->domain, from->domain ? estrdup(from->domain) : NULL);
to->expires = from->expires;
to->max_age = from->max_age;
to->flags = from->flags;
return to;
}
-PHP_HTTP_API void php_http_cookie_list_dtor(php_http_cookie_list_t *list)
+void php_http_cookie_list_dtor(php_http_cookie_list_t *list)
{
if (list) {
zend_hash_destroy(&list->cookies);
zend_hash_destroy(&list->extras);
- STR_SET(list->path, NULL);
- STR_SET(list->domain, NULL);
+ PTR_SET(list->path, NULL);
+ PTR_SET(list->domain, NULL);
}
}
-PHP_HTTP_API void php_http_cookie_list_free(php_http_cookie_list_t **list)
+void php_http_cookie_list_free(php_http_cookie_list_t **list)
{
if (*list) {
php_http_cookie_list_dtor(*list);
}
}
-PHP_HTTP_API const char *php_http_cookie_list_get_cookie(php_http_cookie_list_t *list, const char *name, size_t name_len, zval **zcookie)
+const char *php_http_cookie_list_get_cookie(php_http_cookie_list_t *list, const char *name, size_t name_len, zval **zcookie)
{
zval **cookie;
if ((SUCCESS != zend_symtable_find(&list->cookies, name, name_len + 1, (void *) &cookie)) || (Z_TYPE_PP(cookie) != IS_STRING)) {
return Z_STRVAL_PP(cookie);
}
-PHP_HTTP_API const char *php_http_cookie_list_get_extra(php_http_cookie_list_t *list, const char *name, size_t name_len, zval **zextra)
+const char *php_http_cookie_list_get_extra(php_http_cookie_list_t *list, const char *name, size_t name_len, zval **zextra)
{
zval **extra;
return Z_STRVAL_PP(extra);
}
-PHP_HTTP_API void php_http_cookie_list_add_cookie(php_http_cookie_list_t *list, const char *name, size_t name_len, const char *value, size_t value_len)
+void php_http_cookie_list_add_cookie(php_http_cookie_list_t *list, const char *name, size_t name_len, const char *value, size_t value_len)
{
zval *cookie_value;
zend_symtable_update(&list->cookies, name, name_len + 1, (void *) &cookie_value, sizeof(zval *), NULL);
}
-PHP_HTTP_API void php_http_cookie_list_add_extra(php_http_cookie_list_t *list, const char *name, size_t name_len, const char *value, size_t value_len)
+void php_http_cookie_list_add_extra(php_http_cookie_list_t *list, const char *name, size_t name_len, const char *value, size_t value_len)
{
zval *cookie_value;
}
if _KEY_IS("path") {
- STR_SET(list->path, estrndup(Z_STRVAL_P(arg), Z_STRLEN_P(arg)));
+ PTR_SET(list->path, estrndup(Z_STRVAL_P(arg), Z_STRLEN_P(arg)));
} else if _KEY_IS("domain") {
- STR_SET(list->domain, estrndup(Z_STRVAL_P(arg), Z_STRLEN_P(arg)));
+ PTR_SET(list->domain, estrndup(Z_STRVAL_P(arg), Z_STRLEN_P(arg)));
} else if _KEY_IS("expires") {
char *date = estrndup(Z_STRVAL_P(arg), Z_STRLEN_P(arg));
list->expires = php_parse_date(date, NULL);
zval_ptr_dtor(&arg);
}
-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_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_params_opts_t opts;
HashTable params;
return list;
}
-PHP_HTTP_API void php_http_cookie_list_to_struct(php_http_cookie_list_t *list, zval *strct)
+void php_http_cookie_list_to_struct(php_http_cookie_list_t *list, zval *strct)
{
zval array, *cookies, *extras;
TSRMLS_FETCH_FROM_CTX(list->ts);
add_assoc_string(&array, "domain", STR_PTR(list->domain), 1);
}
-PHP_HTTP_API php_http_cookie_list_t *php_http_cookie_list_from_struct(php_http_cookie_list_t *list, zval *strct TSRMLS_DC)
+php_http_cookie_list_t *php_http_cookie_list_from_struct(php_http_cookie_list_t *list, zval *strct TSRMLS_DC)
{
zval **tmp, *cpy;
HashTable *ht = HASH_OF(strct);
efree(enc_str[1]);
}
-PHP_HTTP_API void php_http_cookie_list_to_string(php_http_cookie_list_t *list, char **str, size_t *len)
+void php_http_cookie_list_to_string(php_http_cookie_list_t *list, char **str, size_t *len)
{
php_http_buffer_t buf;
zval **val;
ZEND_END_ARG_INFO();
static PHP_METHOD(HttpCookie, __construct)
{
- with_error_handling(EH_THROW, php_http_exception_class_entry) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- zval *zcookie = NULL;
- long flags = 0;
- HashTable *allowed_extras = NULL;
+ php_http_cookie_object_t *obj;
+ zval *zcookie = NULL;
+ long flags = 0;
+ char **ae = NULL;
+ HashTable *allowed_extras = NULL;
+ zend_error_handling zeh;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z!lH", &zcookie, &flags, &allowed_extras)) {
- if (zcookie) {
- with_error_handling(EH_THROW, php_http_exception_class_entry) {
- char **ae = NULL;
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z!lH", &zcookie, &flags, &allowed_extras), invalid_arg, return);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- if (allowed_extras && zend_hash_num_elements(allowed_extras)) {
- char **ae_ptr = safe_emalloc(zend_hash_num_elements(allowed_extras) + 1, sizeof(char *), 0);
- HashPosition pos;
- zval **val;
+ zend_replace_error_handling(EH_THROW, php_http_exception_runtime_class_entry, &zeh TSRMLS_CC);
+ if (zcookie) {
- ae = ae_ptr;
- FOREACH_HASH_VAL(pos, allowed_extras, val) {
- zval *cpy = php_http_ztyp(IS_STRING, *val);
+ if (allowed_extras && zend_hash_num_elements(allowed_extras)) {
+ char **ae_ptr = safe_emalloc(zend_hash_num_elements(allowed_extras) + 1, sizeof(char *), 0);
+ HashPosition pos;
+ zval **val;
- *ae_ptr++ = estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy));
- zval_ptr_dtor(&cpy);
- }
- *ae_ptr = NULL;
- }
+ ae = ae_ptr;
+ FOREACH_HASH_VAL(pos, allowed_extras, val) {
+ zval *cpy = php_http_ztyp(IS_STRING, *val);
- switch (Z_TYPE_P(zcookie)) {
- case IS_OBJECT:
- if (instanceof_function(Z_OBJCE_P(zcookie), php_http_cookie_class_entry TSRMLS_CC)) {
- php_http_cookie_object_t *zco = zend_object_store_get_object(zcookie TSRMLS_CC);
-
- if (zco->list) {
- obj->list = php_http_cookie_list_copy(zco->list, NULL);
- }
- break;
- }
- /* no break */
- case IS_ARRAY:
- obj->list = php_http_cookie_list_from_struct(obj->list, zcookie TSRMLS_CC);
- break;
- default: {
- zval *cpy = php_http_ztyp(IS_STRING, zcookie);
-
- obj->list = php_http_cookie_list_parse(obj->list, Z_STRVAL_P(cpy), Z_STRLEN_P(cpy), flags, ae TSRMLS_CC);
- zval_ptr_dtor(&cpy);
- break;
- }
- }
+ *ae_ptr++ = estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy));
+ zval_ptr_dtor(&cpy);
+ }
+ *ae_ptr = NULL;
+ }
- if (ae) {
- char **ae_ptr;
+ switch (Z_TYPE_P(zcookie)) {
+ case IS_OBJECT:
+ if (instanceof_function(Z_OBJCE_P(zcookie), php_http_cookie_class_entry TSRMLS_CC)) {
+ php_http_cookie_object_t *zco = zend_object_store_get_object(zcookie TSRMLS_CC);
- for (ae_ptr = ae; *ae_ptr; ++ae_ptr) {
- efree(*ae_ptr);
- }
- efree(ae);
+ if (zco->list) {
+ obj->list = php_http_cookie_list_copy(zco->list, NULL);
}
- } end_error_handling();
+ break;
+ }
+ /* no break */
+ case IS_ARRAY:
+ obj->list = php_http_cookie_list_from_struct(obj->list, zcookie TSRMLS_CC);
+ break;
+ default: {
+ zval *cpy = php_http_ztyp(IS_STRING, zcookie);
+
+ obj->list = php_http_cookie_list_parse(obj->list, Z_STRVAL_P(cpy), Z_STRLEN_P(cpy), flags, ae TSRMLS_CC);
+ zval_ptr_dtor(&cpy);
+ break;
}
}
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
- } end_error_handling();
+
+ if (ae) {
+ char **ae_ptr;
+
+ for (ae_ptr = ae; *ae_ptr; ++ae_ptr) {
+ efree(*ae_ptr);
+ }
+ efree(ae);
+ }
+ }
+ zend_restore_error_handling(&zeh TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_getCookies, 0, 0, 0)
ZEND_END_ARG_INFO();;
static PHP_METHOD(HttpCookie, getCookies)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ php_http_cookie_object_t *obj;
- array_init(return_value);
- array_copy(&obj->list->cookies, Z_ARRVAL_P(return_value));
+ if (SUCCESS != zend_parse_parameters_none()) {
return;
}
- RETURN_FALSE;
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ array_init(return_value);
+ array_copy(&obj->list->cookies, Z_ARRVAL_P(return_value));
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setCookies, 0, 0, 0)
static PHP_METHOD(HttpCookie, setCookies)
{
HashTable *cookies = NULL;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|H", &cookies)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|H", &cookies), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- zend_hash_clean(&obj->list->cookies);
- if (cookies) {
- array_copy(cookies, &obj->list->cookies);
- }
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ zend_hash_clean(&obj->list->cookies);
+ if (cookies) {
+ array_copy_strings(cookies, &obj->list->cookies);
}
+
RETVAL_ZVAL(getThis(), 1, 0);
}
static PHP_METHOD(HttpCookie, addCookies)
{
HashTable *cookies = NULL;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "H", &cookies)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "H", &cookies), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ array_join(cookies, &obj->list->cookies, 1, ARRAY_JOIN_STRONLY|ARRAY_JOIN_STRINGIFY);
- array_join(cookies, &obj->list->cookies, 1, ARRAY_JOIN_STRONLY);
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_getExtras, 0, 0, 0)
-ZEND_END_ARG_INFO();;
+ZEND_END_ARG_INFO();
static PHP_METHOD(HttpCookie, getExtras)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ php_http_cookie_object_t *obj;
- array_init(return_value);
- array_copy(&obj->list->extras, Z_ARRVAL_P(return_value));
+ if (SUCCESS != zend_parse_parameters_none()) {
return;
}
- RETURN_FALSE;
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ array_init(return_value);
+ array_copy(&obj->list->extras, Z_ARRVAL_P(return_value));
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setExtras, 0, 0, 0)
static PHP_METHOD(HttpCookie, setExtras)
{
HashTable *extras = NULL;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|H", &extras)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|H", &extras), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- zend_hash_clean(&obj->list->extras);
- if (extras) {
- array_copy(extras, &obj->list->extras);
- }
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ zend_hash_clean(&obj->list->extras);
+ if (extras) {
+ array_copy_strings(extras, &obj->list->extras);
}
+
RETVAL_ZVAL(getThis(), 1, 0);
}
static PHP_METHOD(HttpCookie, addExtras)
{
HashTable *extras = NULL;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "H", &extras)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "H", &extras), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ array_join(extras, &obj->list->extras, 1, ARRAY_JOIN_STRONLY|ARRAY_JOIN_STRINGIFY);
- array_join(extras, &obj->list->extras, 1, ARRAY_JOIN_STRONLY);
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
{
char *name_str;
int name_len;
+ zval *zvalue;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name_str, &name_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- zval *zvalue;
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name_str, &name_len)) {
+ return;
+ }
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- if (php_http_cookie_list_get_cookie(obj->list, name_str, name_len, &zvalue)) {
- RETURN_ZVAL(zvalue, 1, 0);
- }
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ if (php_http_cookie_list_get_cookie(obj->list, name_str, name_len, &zvalue)) {
+ RETURN_ZVAL(zvalue, 1, 0);
}
- RETURN_FALSE;
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setCookie, 0, 0, 1)
{
char *name_str, *value_str = NULL;
int name_len, value_len = 0;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &name_str, &name_len, &value_str, &value_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &name_str, &name_len, &value_str, &value_len), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- if (!value_str) {
- php_http_cookie_list_del_cookie(obj->list, name_str, name_len);
- } else {
- php_http_cookie_list_add_cookie(obj->list, name_str, name_len, value_str, value_len);
- }
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ if (!value_str) {
+ php_http_cookie_list_del_cookie(obj->list, name_str, name_len);
+ } else {
+ php_http_cookie_list_add_cookie(obj->list, name_str, name_len, value_str, value_len);
}
+
RETVAL_ZVAL(getThis(), 1, 0);
}
-ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_addCookie, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_addCookie, 0, 0, 2)
ZEND_ARG_INFO(0, cookie_name)
ZEND_ARG_INFO(0, cookie_value)
ZEND_END_ARG_INFO();
{
char *name_str, *value_str;
int name_len, value_len;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &name_str, &name_len, &value_str, &value_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name_str, &name_len, &value_str, &value_len), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ php_http_cookie_list_add_cookie(obj->list, name_str, name_len, value_str, value_len);
- php_http_cookie_list_add_cookie(obj->list, name_str, name_len, value_str, value_len);
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
{
char *name_str;
int name_len;
+ zval *zvalue;
+ php_http_cookie_object_t *obj;
+
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name_str, &name_len)) {
+ return;
+ }
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name_str, &name_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- zval *zvalue;
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
- if (php_http_cookie_list_get_extra(obj->list, name_str, name_len, &zvalue)) {
- RETURN_ZVAL(zvalue, 1, 0);
- }
+ if (php_http_cookie_list_get_extra(obj->list, name_str, name_len, &zvalue)) {
+ RETURN_ZVAL(zvalue, 1, 0);
}
- RETURN_FALSE;
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setExtra, 0, 0, 1)
{
char *name_str, *value_str = NULL;
int name_len, value_len = 0;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &name_str, &name_len, &value_str, &value_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &name_str, &name_len, &value_str, &value_len), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- if (!value_str) {
- php_http_cookie_list_del_extra(obj->list, name_str, name_len);
- } else {
- php_http_cookie_list_add_extra(obj->list, name_str, name_len, value_str, value_len);
- }
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ if (!value_str) {
+ php_http_cookie_list_del_extra(obj->list, name_str, name_len);
+ } else {
+ php_http_cookie_list_add_extra(obj->list, name_str, name_len, value_str, value_len);
}
+
RETVAL_ZVAL(getThis(), 1, 0);
}
-ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_addExtra, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_addExtra, 0, 0, 2)
ZEND_ARG_INFO(0, extra_name)
ZEND_ARG_INFO(0, extra_value)
ZEND_END_ARG_INFO();
{
char *name_str, *value_str;
int name_len, value_len;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &name_str, &name_len, &value_str, &value_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name_str, &name_len, &value_str, &value_len), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ php_http_cookie_list_add_extra(obj->list, name_str, name_len, value_str, value_len);
- php_http_cookie_list_add_extra(obj->list, name_str, name_len, value_str, value_len);
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
ZEND_END_ARG_INFO();;
static PHP_METHOD(HttpCookie, getDomain)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_cookie_object_t *obj;
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ if (SUCCESS != zend_parse_parameters_none()) {
+ return;
+ }
- if (obj->list->domain) {
- RETURN_STRING(obj->list->domain, 1);
- }
- RETURN_NULL();
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ if (obj->list->domain) {
+ RETURN_STRING(obj->list->domain, 1);
}
- RETURN_FALSE;
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setDomain, 0, 0, 0)
{
char *domain_str = NULL;
int domain_len = 0;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!", &domain_str, &domain_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!", &domain_str, &domain_len), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ PTR_SET(obj->list->domain, domain_str ? estrndup(domain_str, domain_len) : NULL);
- STR_SET(obj->list->domain, domain_str ? estrndup(domain_str, domain_len) : NULL);
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
ZEND_END_ARG_INFO();;
static PHP_METHOD(HttpCookie, getPath)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_cookie_object_t *obj;
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ if (SUCCESS != zend_parse_parameters_none()) {
+ return;
+ }
- if (obj->list->path) {
- RETURN_STRING(obj->list->path, 1);
- }
- RETURN_NULL();
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ if (obj->list->path) {
+ RETURN_STRING(obj->list->path, 1);
}
- RETURN_FALSE;
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setPath, 0, 0, 0)
{
char *path_str = NULL;
int path_len = 0;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!", &path_str, &path_len)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!", &path_str, &path_len), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ PTR_SET(obj->list->path, path_str ? estrndup(path_str, path_len) : NULL);
- STR_SET(obj->list->path, path_str ? estrndup(path_str, path_len) : NULL);
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
ZEND_END_ARG_INFO();;
static PHP_METHOD(HttpCookie, getExpires)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ php_http_cookie_object_t *obj;
- RETURN_LONG(obj->list->expires);
+ if (SUCCESS != zend_parse_parameters_none()) {
+ return;
}
- RETURN_FALSE;
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ RETURN_LONG(obj->list->expires);
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setExpires, 0, 0, 0)
static PHP_METHOD(HttpCookie, setExpires)
{
long ts = -1;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &ts)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &ts), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ obj->list->expires = ts;
- obj->list->expires = ts;
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
ZEND_END_ARG_INFO();;
static PHP_METHOD(HttpCookie, getMaxAge)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_cookie_object_t *obj;
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
-
- RETURN_LONG(obj->list->max_age);
+ if (SUCCESS != zend_parse_parameters_none()) {
+ return;
}
- RETURN_FALSE;
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ RETURN_LONG(obj->list->max_age);
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setMaxAge, 0, 0, 0)
static PHP_METHOD(HttpCookie, setMaxAge)
{
long ts = -1;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &ts)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &ts), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ obj->list->max_age = ts;
- obj->list->max_age = ts;
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_getFlags, 0, 0, 0)
-ZEND_END_ARG_INFO();;
+ZEND_END_ARG_INFO();
static PHP_METHOD(HttpCookie, getFlags)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ php_http_cookie_object_t *obj;
- RETURN_LONG(obj->list->flags);
+ if (SUCCESS != zend_parse_parameters_none()) {
+ return;
}
- RETURN_FALSE;
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ RETURN_LONG(obj->list->flags);
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_setFlags, 0, 0, 0)
static PHP_METHOD(HttpCookie, setFlags)
{
long flags = 0;
+ php_http_cookie_object_t *obj;
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &flags)) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_expect(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &flags), invalid_arg, return);
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ obj->list->flags = flags;
- obj->list->flags = flags;
- }
RETVAL_ZVAL(getThis(), 1, 0);
}
ZEND_END_ARG_INFO();;
static PHP_METHOD(HttpCookie, toString)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
- char *str;
- size_t len;
+ php_http_cookie_object_t *obj;
+ char *str;
+ size_t len;
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
-
- php_http_cookie_list_to_string(obj->list, &str, &len);
- RETURN_STRINGL(str, len, 0);
+ if (SUCCESS != zend_parse_parameters_none()) {
+ RETURN_EMPTY_STRING();
}
- RETURN_EMPTY_STRING();
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ php_http_cookie_list_to_string(obj->list, &str, &len);
+
+ RETURN_STRINGL(str, len, 0);
}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpCookie_toArray, 0, 0, 0)
ZEND_END_ARG_INFO();;
static PHP_METHOD(HttpCookie, toArray)
{
- if (SUCCESS == zend_parse_parameters_none()) {
- php_http_cookie_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ php_http_cookie_object_t *obj;
- PHP_HTTP_COOKIE_OBJECT_INIT(obj);
-
- array_init(return_value);
- php_http_cookie_list_to_struct(obj->list, return_value);
+ if (SUCCESS != zend_parse_parameters_none()) {
+ return;
}
+
+ obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ PHP_HTTP_COOKIE_OBJECT_INIT(obj);
+
+ array_init(return_value);
+ php_http_cookie_list_to_struct(obj->list, return_value);
}
static zend_function_entry php_http_cookie_methods[] = {
zend_class_entry ce = {0};
INIT_NS_CLASS_ENTRY(ce, "http", "Cookie", php_http_cookie_methods);
- php_http_cookie_class_entry = zend_register_internal_class_ex(&ce, php_http_object_class_entry, NULL TSRMLS_CC);
+ php_http_cookie_class_entry = zend_register_internal_class(&ce TSRMLS_CC);
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;