PHPAPI zend_string *php_string_tolower(zend_string *s);
PHPAPI char *php_strtr(char *str, size_t len, char *str_from, char *str_to, size_t trlen);
PHPAPI zend_string *php_addslashes(zend_string *str, int should_free);
-PHPAPI zend_string *php_addcslashes(const char *str, size_t length, int freeit, char *what, size_t wlength);
-PHPAPI void php_stripslashes(char *str, size_t *len);
-PHPAPI void php_stripcslashes(char *str, size_t *len);
+PHPAPI zend_string *php_addcslashes(zend_string *str, int freeit, char *what, size_t what_len);
+PHPAPI void php_stripslashes(zend_string *str);
+PHPAPI void php_stripcslashes(zend_string *str);
PHPAPI zend_string *php_basename(const char *s, size_t len, char *suffix, size_t sufflen);
PHPAPI size_t php_dirname(char *str, size_t len);
PHPAPI char *php_stristr(char *s, char *t, size_t s_len, size_t t_len);
/* {{{ php_stripslashes
*
* be careful, this edits the string in-place */
-PHPAPI void php_stripslashes(char *str, size_t *len)
+PHPAPI void php_stripslashes(zend_string *str)
{
char *s, *t;
size_t l;
- if (len != NULL) {
- l = *len;
- } else {
- l = strlen(str);
- }
- s = str;
- t = str;
+ s = (char *)str->val;
+ t = (char *)str->val;
+ l = str->len;
while (l > 0) {
if (*t == '\\') {
t++; /* skip the slash */
- if (len != NULL) {
- (*len)--;
- }
+ str->len--;
l--;
if (l > 0) {
if (*t == '0') {
RETURN_STRINGL(str->val, str->len);
}
- RETURN_STR(php_addcslashes(str->val, str->len, 0, what->val, what->len));
+ RETURN_STR(php_addcslashes(str, 0, what->val, what->len));
}
/* }}} */
}
ZVAL_STRINGL(return_value, str->val, str->len);
- php_stripcslashes(Z_STRVAL_P(return_value), &Z_STRLEN_P(return_value));
+ php_stripcslashes(Z_STR_P(return_value));
}
/* }}} */
}
ZVAL_STRINGL(return_value, str->val, str->len);
- php_stripslashes(Z_STRVAL_P(return_value), &Z_STRLEN_P(return_value));
+ php_stripslashes(Z_STR_P(return_value));
}
/* }}} */
/* {{{ php_stripcslashes
*/
-PHPAPI void php_stripcslashes(char *str, size_t *len)
+PHPAPI void php_stripcslashes(zend_string *str)
{
char *source, *target, *end;
- size_t nlen = *len, i;
+ size_t nlen = str->len, i;
char numtmp[4];
- for (source=str, end=str+nlen, target=str; source < end; source++) {
- if (*source == '\\' && source+1 < end) {
+ for (source = (char*)str->val, end = source + str->len, target = str->val; source < end; source++) {
+ if (*source == '\\' && source + 1 < end) {
source++;
switch (*source) {
case 'n': *target++='\n'; nlen--; break;
*target='\0';
}
- *len = nlen;
+ str->len = nlen;
}
/* }}} */
/* {{{ php_addcslashes
*/
-PHPAPI zend_string *php_addcslashes(const char *str, size_t length, int should_free, char *what, size_t wlength)
+PHPAPI zend_string *php_addcslashes(zend_string *str, int should_free, char *what, size_t wlength)
{
char flags[256];
char *source, *target;
char *end;
char c;
size_t newlen;
- zend_string *new_str = zend_string_alloc(4 * (length? length : (length = strlen(str))), 0);
-
- if (!wlength) {
- wlength = strlen(what);
- }
+ zend_string *new_str = zend_string_alloc(4 * str->len, 0);
php_charmask((unsigned char *)what, wlength, flags);
- for (source = (char*)str, end = source + length, target = new_str->val; source < end; source++) {
+ for (source = (char*)str->val, end = source + str->len, target = new_str->val; source < end; source++) {
c = *source;
if (flags[(unsigned char)c]) {
if ((unsigned char) c < 32 || (unsigned char) c > 126) {
}
*target = 0;
newlen = target - new_str->val;
- if (newlen < length * 4) {
+ if (newlen < str->len * 4) {
new_str = zend_string_realloc(new_str, newlen, 0);
}
if (should_free) {
- efree((char*)str);
+ zend_string_release(str);
}
return new_str;
}
} else { /* string key */
zend_string *tmp_str;
- zend_string *ckey = php_addcslashes(key->val, key->len, 0, "'\\", 2);
+ zend_string *ckey = php_addcslashes(key, 0, "'\\", 2);
tmp_str = php_str_to_str(ckey->val, ckey->len, "\0", 1, "' . \"\\0\" . '", 12);
buffer_append_spaces(buf, level + 1);
zend_string *pname_esc;
zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_name_len);
- pname_esc = php_addcslashes(prop_name, prop_name_len, 0, "'\\", 2);
+ pname_esc = php_addcslashes(zend_string_init(prop_name, prop_name_len, 0), 1, "'\\", 2);
smart_str_appendc(buf, '\'');
smart_str_append(buf, pname_esc);
efree(tmp_str);
break;
case IS_STRING:
- ztmp = php_addcslashes(Z_STRVAL_P(struc), Z_STRLEN_P(struc), 0, "'\\", 2);
+ ztmp = php_addcslashes(Z_STR_P(struc), 0, "'\\", 2);
ztmp2 = php_str_to_str(ztmp->val, ztmp->len, "\0", 1, "' . \"\\0\" . '", 12);
smart_str_appendc(buf, '\'');