--- parser3/src/main/untaint.C 2001/03/24 19:30:07 1.14 +++ parser3/src/main/untaint.C 2001/03/25 09:10:30 1.17 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: untaint.C,v 1.14 2001/03/24 19:30:07 paf Exp $ + $Id: untaint.C,v 1.17 2001/03/25 09:10:30 paf Exp $ */ #include "pa_config_includes.h" @@ -122,6 +122,7 @@ char *String::store_to(char *dest) const ); break; case UL_TABLE: + // tainted, untaint language: table escape( to_char('\t', ' '); to_char('\n', ' '); @@ -139,7 +140,6 @@ char *String::store_to(char *dest) const to_string('"', "\\\"", 2); to_string('\'', "\\'", 2); to_string('\n', "\\n", 2); - to_string('\r', "\\r", 2); to_string('\\', "\\\\", 2); to_string('\xFF', "\\\xFF", 2); _default; @@ -147,7 +147,7 @@ char *String::store_to(char *dest) const break; case UL_HTML: escape( - to_string('&', "&", 5); // BEFORE consequent relpaces yelding '&' + to_string('&', "&", 5); to_string('>', ">", 4); to_string('<', "<",4); to_string('"', """,6); @@ -163,11 +163,19 @@ char *String::store_to(char *dest) const { // local dest char *dest=html; escape( - to_string('&', "&", 5); // BEFORE consequent relpaces yelding '&' + to_string('&', "&", 5); to_string('>', ">", 4); to_string('<', "<",4); to_string('"', """,6); to_char('\t', ' '); + // convinient name for typo match "\n" + case '\r': + *dest++='\\'; *dest++='n'; // \r -> \n + if(src[1]=='\n') // \r\n -> remove \n + src++; + break; + to_string('\n', "\\n", 2); + //TODO: XSLT to_string('\'', "'", 6) _default; ); *dest=0; @@ -186,7 +194,7 @@ char *String::store_to(char *dest) const if(a.size()==0) { pool().set_tag(0); // avoid recursion THROW(0, 0, - &a, + typo_table->origin_string(), "typo table first column elements must not be empty"); } // overflow check: