--- parser3/src/include/pa_string.h 2001/03/12 09:08:48 1.32 +++ parser3/src/include/pa_string.h 2001/03/18 20:31:26 1.40 @@ -3,7 +3,7 @@ Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_string.h,v 1.32 2001/03/12 09:08:48 paf Exp $ + $Id: pa_string.h,v 1.40 2001/03/18 20:31:26 paf Exp $ */ /* @@ -23,7 +23,7 @@ #define PA_STRING_H #ifdef HAVE_CONFIG_H -#include "pa_config.h" +# include "pa_config.h" #endif #include @@ -34,11 +34,17 @@ #define UNTAINT_TIMES_BIGGER 10 #ifndef NO_STRING_ORIGIN -# define STRING_APPEND_PARAMS const char *src, size_t size, bool tainted, const char *file, uint line +# define STRING_APPEND_PARAMS \ + const char *src, size_t size, \ + bool tainted, \ + const char *file, uint line # define APPEND(src, size, file, line) real_append(src, size, false, file, line) # define APPEND_TAINTED(src, size, file, line) real_append(src, size, true, file, line) #else -# define STRING_APPEND_PARAMS const char *src, size_t size, bool tainted +# define STRING_APPEND_PARAMS \ + const char *src, \ + size_t size, \ + bool tainted # define APPEND(src, size, file, line) real_append(src, size, false) # define APPEND_TAINTED(src, size, file, line) real_append(src, size, true) #endif @@ -60,16 +66,18 @@ public: // leave language built into string being appended // just a flag, that value not stored AS_IS, + HEADER, + URI, + TABLE, SQL, JS, - TABLE, HTML, HTML_TYPO }; public: - String(Pool& apool); + String(Pool& apool, const char *src=0, bool tainted=false); String(const String& src); size_t size() const { return fsize; } int used_rows() const { return fused_rows; } @@ -87,13 +95,15 @@ public: } bool operator != (const String& src) const { return cmp(src)!=0; } - bool operator == (char* src) const; - String& append(const String& src, Untaint_lang lang); + bool operator == (const char* b_ptr) const; + String& append(const String& src, Untaint_lang lang, bool forced=false); uint hash_code() const; const Origin& origin() const { return head.rows[0].item.origin; } +// void change_lang(Untaint_lang lang); + private: struct Chunk { @@ -139,7 +149,7 @@ private: return append_here == link_row; } void expand(); - void set_lang(Chunk::Row *row, Untaint_lang lang, size_t size); + void set_lang(Chunk::Row *row, Untaint_lang lang, bool forced, size_t size); private: //disabled