diff options
author | Zeev Suraski <zeev@php.net> | 2002-05-11 12:17:53 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 2002-05-11 12:17:53 +0000 |
commit | 77f41212f65ad786d9c277a0f5f1bc00b26a00e0 (patch) | |
tree | aaa6353a28d2fbfcab05bb44f790e213df806b46 | |
parent | 19b7861d70a79417797a6f8ebc0d74133d75bfeb (diff) | |
download | php-git-77f41212f65ad786d9c277a0f5f1bc00b26a00e0.tar.gz |
Removing HTMLization of ' ' wasn't ok, it didn't deal with series of spaces
properly. Turn series of spaces into 's.
-rw-r--r-- | main/main.c | 25 |
1 files changed, 16 insertions, 9 deletions
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, "<br />", sizeof("<br />")-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) { |