From 4c7af667a750eed929b507acb1dcc30ca441e401 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Tue, 29 Feb 2000 04:38:14 +0000 Subject: [PATCH] Made php_escape_html_entities() as a separate function for export. --- ext/standard/html.c | 37 ++++++++++++++++++++++--------------- ext/standard/html.h | 2 ++ 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/ext/standard/html.c b/ext/standard/html.c index 83a0690432b..41fef9c3641 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -43,27 +43,18 @@ static char EntTable[][7] = "uuml","yacute","thorn","yuml" }; -static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) +PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all) { - pval **arg; - int i, len, maxlen; - unsigned char *old; + int i, maxlen, len; char *new; - if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - WRONG_PARAM_COUNT; - } - - convert_to_string_ex(arg); - - maxlen = 2 * (*arg)->value.str.len; + maxlen = 2 * oldlen; if (maxlen < 128) maxlen = 128; new = emalloc (maxlen); len = 0; - old = (unsigned char *)(*arg)->value.str.val; - i = (*arg)->value.str.len; + i = oldlen; while (i--) { if (len + 9 > maxlen) new = erealloc (new, maxlen += 128); @@ -90,9 +81,25 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) old++; } new [len] = '\0'; + *newlen = len; + + return new; +} + +static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) +{ + zval **arg; + int len; + char *new; + + if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { + WRONG_PARAM_COUNT; + } + + convert_to_string_ex(arg); - RETVAL_STRINGL(new,len,1); - efree(new); + new = php_escape_html_entities((*arg)->value.str.val, (*arg)->value.str.len, &len, all); + RETVAL_STRINGL(new,len,0); } #define HTML_SPECIALCHARS 0 diff --git a/ext/standard/html.h b/ext/standard/html.h index 265f0656b78..082a0e9f080 100644 --- a/ext/standard/html.h +++ b/ext/standard/html.h @@ -38,4 +38,6 @@ PHP_FUNCTION(htmlspecialchars); PHP_FUNCTION(htmlentities); PHP_FUNCTION(get_html_translation_table); +PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all); + #endif /* _HTML_H */