--- parser3/src/classes/op.C 2002/11/28 07:17:37 1.126 +++ parser3/src/classes/op.C 2003/01/27 16:00:41 1.127.2.3 @@ -1,11 +1,11 @@ /** @file Parser: parser @b operators. - Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_OP_C="$Date: 2002/11/28 07:17:37 $"; +static const char* IDENT_OP_C="$Date: 2003/01/27 16:00:41 $"; #include "classes.h" #include "pa_common.h" @@ -30,6 +30,10 @@ public: VClassMAIN(Pool& apool); }; +// helpers + +Hash Hash untaint_lang_name2enum; + // methods static void _if(Request& r, const String&, MethodParams *params) { @@ -352,7 +356,7 @@ static void _case(Request& r, const Stri // consts -const int DATA_STRING_SERIALIZED_VERSION=0x0002; +const int DATA_STRING_SERIALIZED_VERSION=0x0003; // helper types @@ -377,6 +381,10 @@ struct Locked_process_and_cache_put_acti Value *body_code; const String *evaluated_body; }; #endif +/* @todo maybe network order worth spending some effort? + don't bothering myself with network byte order, + am not planning to be able to move resulting file across platforms +*/ static void locked_process_and_cache_put_action(int f, void *context) { Locked_process_and_cache_put_action_info& info= *static_cast(context); @@ -711,5 +719,22 @@ VClassMAIN::VClassMAIN(Pool& apool): VCl // constructor & configurator VClass& VClassMAIN_create(Pool& pool) { + #define ULN(name, LANG) \ + untaint_lang_name2enum.put(StringPtr(new String(name)), (int)String::UL_##LANG); + ULN("as-is", AS_IS); + ULN("optimized-as-is", AS_IS|String::UL_OPTIMIZE_BIT); + ULN("file-spec", FILE_SPEC); + ULN("http-header", HTTP_HEADER); + ULN("mail-header", MAIL_HEADER); + ULN("uri", URI); + ULN("table", TABLE); + ULN("sql", SQL); + ULN("js", JS); + ULN("xml", XML); + ULN("optimized-xml", XML|String::UL_OPTIMIZE_BIT); + ULN("html", HTML); + ULN("optimized-html", HTML|String::UL_OPTIMIZE_BIT); + #undef ULN + return *new(pool) VClassMAIN(pool); }