From: Zeev Suraski Date: Sat, 11 May 2002 12:17:53 +0000 (+0000) Subject: Removing HTMLization of ' ' wasn't ok, it didn't deal with series of spaces X-Git-Tag: php-4.3.0dev-ZendEngine2-Preview1~125 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=77f41212f65ad786d9c277a0f5f1bc00b26a00e0;p=php Removing HTMLization of ' ' wasn't ok, it didn't deal with series of spaces properly. Turn series of spaces into  's. --- diff --git a/main/main.c b/main/main.c index 982220ce64..26c21068b8 100644 --- a/main/main.c +++ b/main/main.c @@ -382,11 +382,12 @@ PHPAPI int php_printf(const char *format, ...) PHPAPI void php_html_puts(const char *str, uint size TSRMLS_DC) { - const char *estr; + const char *end = str+size; + const char *p = str; smart_str s = {0}; - for (estr = str + size; str < estr; str++) { - switch (*str) { + while (p < end) { + switch (*p) { case '\n': smart_str_appendl(&s, "
", sizeof("
")-1); break; @@ -399,19 +400,25 @@ PHPAPI void php_html_puts(const char *str, uint size TSRMLS_DC) case '&': smart_str_appendl(&s, "&", sizeof("&")-1); break; + case ' ': { + const char *nextchar = p+1, *prevchar = p-1; -/* Commented out since this is not necessary */ -/* - case ' ': - smart_str_appendl(&s, " ", sizeof(" ")-1); + /* series of spaces should be converted to  's */ + if (((nextchar < end) && *nextchar==' ') + || ((prevchar >= str) && *prevchar==' ')) { + smart_str_appendl(&s, " ", sizeof(" ")-1); + } else { + smart_str_appendc(&s, ' '); + } + } break; -*/ case '\t': smart_str_appendl(&s, "    ", sizeof("    ")-1); break; default: - smart_str_appendc(&s, *str); + smart_str_appendc(&s, *p); } + p++; } if (s.c) {