--- parser3/src/main/pa_globals.C 2001/04/07 10:34:45 1.47 +++ parser3/src/main/pa_globals.C 2001/04/27 16:48:28 1.56.2.2 @@ -5,27 +5,22 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_globals.C,v 1.47 2001/04/07 10:34:45 paf Exp $ + $Id: pa_globals.C,v 1.56.2.2 2001/04/27 16:48:28 paf Exp $ */ -#include "pcre.h" - #include "pa_globals.h" #include "pa_string.h" #include "pa_hash.h" -#include "pa_table.h" #include "_string.h" #include "_double.h" #include "_int.h" -#include "_table.h" #include "_form.h" #include "_response.h" -#include "_file.h" -#include "_random.h" #include "pa_sql_driver_manager.h" -#include "_mail.h" +#include "_image.h" +#include "_unknown.h" -String *html_typo_name; +String *user_html_name; String *content_type_name; String *body_name; String *value_name; @@ -47,17 +42,7 @@ String *empty_string; String *auto_method_name; String *main_method_name; -String *op_class_name; String *main_class_name; -String *env_class_name; -String *table_class_name; -String *file_class_name; -String *form_class_name; -String *request_class_name; -String *response_class_name; -String *cookie_class_name; -String *random_class_name; -String *mail_class_name; String *result_var_name; String *string_pre_match_name; @@ -68,10 +53,16 @@ String *limits_name; String *post_max_size_name; String *defaults_name; -String *locale_name; -String *locale_ctype_name; +String *ctype_name; +String *ctype_white_space_name; +String *ctype_digit_name; +String *ctype_hex_digit_name; +String *ctype_letter_name; +String *ctype_word_name; +String *ctype_lowercase_name; String *mime_types_name; String *vfile_mime_type_name; +String *mail_name; String *main_sql_name; String *main_sql_drivers_name; @@ -80,8 +71,6 @@ Hash *untaint_lang_name2enum; Table *default_typo_table; -const unsigned char *pcre_tables; - short hex_value[0x100]; static void setup_hex_value() { @@ -113,7 +102,6 @@ static void setup_hex_value() { hex_value['f'] = 15; } -/// @test problems with $t[^table:set{}] ^t.menu{^if(){}} if not a field! void pa_globals_init(Pool& pool) { #undef NEW #define NEW new(pool) @@ -122,7 +110,7 @@ void pa_globals_init(Pool& pool) { setup_hex_value(); // names - html_typo_name=NEW String(pool, HTML_TYPO_NAME); + user_html_name=NEW String(pool, USER_HTML_NAME); content_type_name=NEW String(pool, CONTENT_TYPE_NAME); body_name=NEW String(pool, BODY_NAME); value_name=NEW String(pool, VALUE_NAME); @@ -144,17 +132,7 @@ void pa_globals_init(Pool& pool) { auto_method_name=NEW String(pool, AUTO_METHOD_NAME); main_method_name=NEW String(pool, MAIN_METHOD_NAME); - op_class_name=NEW String(pool, OP_CLASS_NAME); main_class_name=NEW String(pool, MAIN_CLASS_NAME); - table_class_name=NEW String(pool, TABLE_CLASS_NAME); - file_class_name=NEW String(pool, FILE_CLASS_NAME); - env_class_name=NEW String(pool, ENV_CLASS_NAME); - form_class_name=NEW String(pool, FORM_CLASS_NAME); - request_class_name=NEW String(pool, REQUEST_CLASS_NAME); - response_class_name=NEW String(pool, RESPONSE_CLASS_NAME); - cookie_class_name=NEW String(pool, COOKIE_CLASS_NAME); - random_class_name=NEW String(pool, RANDOM_CLASS_NAME); - mail_class_name=NEW String(pool, MAIL_CLASS_NAME); result_var_name=NEW String(pool, RESULT_VAR_NAME); string_pre_match_name=NEW String(pool, STRING_PRE_MATCH_NAME); @@ -166,10 +144,17 @@ void pa_globals_init(Pool& pool) { post_max_size_name=NEW String(pool, POST_MAX_SIZE_NAME); defaults_name=NEW String(pool, DEFAULTS_NAME); - locale_name=NEW String(pool, LOCALE_NAME); - locale_ctype_name=NEW String(pool, LOCALE_CTYPE_NAME); + ctype_name=NEW String(pool, CTYPE_NAME); + ctype_white_space_name=NEW String(pool, CTYPE_WHITE_SPACE_NAME); + ctype_digit_name=NEW String(pool, CTYPE_DIGIT_NAME); + ctype_hex_digit_name=NEW String(pool, CTYPE_HEX_DIGIT_NAME); + ctype_letter_name=NEW String(pool, CTYPE_LETTER_NAME); + ctype_word_name=NEW String(pool, CTYPE_WORD_NAME); + ctype_lowercase_name=NEW String(pool, CTYPE_LOWERCASE_NAME); mime_types_name=NEW String(pool, MIME_TYPES_NAME); vfile_mime_type_name=NEW String(pool, VFILE_MIME_TYPE_NAME); + mail_name=NEW String(pool, MAIL_NAME); + main_sql_name=NEW String(pool, MAIN_SQL_NAME); main_sql_drivers_name=NEW String(pool, MAIN_SQL_DRIVERS_NAME); @@ -199,67 +184,18 @@ void pa_globals_init(Pool& pool) { // tables default_typo_table=NEW Table(pool, 0, 0); - { - // < -> < - { - Array *row=NEW Array(pool); - *row+=NEW String(pool, "<"); - *row+=NEW String(pool, "<"); - *default_typo_table+=row; - } - // > -> > - { - Array *row=NEW Array(pool); - *row+=NEW String(pool, ">"); - *row+=NEW String(pool, ">"); - *default_typo_table+=row; - } - // " -> " - { - Array *row=NEW Array(pool); - *row+=NEW String(pool, "\""); - *row+=NEW String(pool, """); - *default_typo_table+=row; - } - // & -> & - { - Array *row=NEW Array(pool); - *row+=NEW String(pool, "&"); - *row+=NEW String(pool, "&"); - *default_typo_table+=row; - } - // \n\n ->

- { - Array *row=NEW Array(pool); - *row+=NEW String(pool, "\\n\\n"); - *row+=NEW String(pool, "

"); - *default_typo_table+=row; - } - // \n ->
- { - Array *row=NEW Array(pool); - *row+=NEW String(pool, "\\n"); - *row+=NEW String(pool, "
"); - *default_typo_table+=row; - } - } - - - // pcre tables - pcre_tables=pcre_maketables(); - - // stateless classes - initialize_string_class(pool, *(string_class=NEW VStateless_class(pool))); - initialize_double_class(pool, *(double_class=NEW VStateless_class(pool))); - initialize_int_class(pool, *(int_class=NEW VStateless_class(pool))); - initialize_table_class(pool, *(table_class=NEW VStateless_class(pool))); - initialize_file_class(pool, *(file_class=NEW VStateless_class(pool))); - initialize_response_class(pool, *(response_class=NEW VStateless_class(pool))); - initialize_random_class(pool, *(random_class=NEW VStateless_class(pool))); - initialize_mail_class(pool, *(mail_class=NEW VStateless_class(pool))); - - // stateless base classes - initialize_form_base_class(pool, *(form_base_class=NEW VStateless_class(pool))); form_base_class->set_name(*form_class_name); + #define DT_ROW(from, to) { \ + Array *row=NEW Array(pool); \ + *row+=NEW String(pool, from); \ + *row+=NEW String(pool, to); \ + *default_typo_table+=row; \ + } + DT_ROW("<", "<"); + DT_ROW(">", ">"); + DT_ROW("\"", """); + DT_ROW("&", "&"); + DT_ROW("\\n\\n", "

"); + DT_ROW("\\n", "
"); // SQL_Driver_manager SQL_driver_manager=NEW SQL_Driver_manager(pool);