--- parser3/src/include/pa_globals.h 2001/04/11 13:03:42 1.47 +++ parser3/src/include/pa_globals.h 2024/11/04 03:53:25 1.120 @@ -1,156 +1,43 @@ /** @file Parser: global decls. - Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) - - Author: Alexander Petrosyan (http://design.ru/paf) - - $Id: pa_globals.h,v 1.47 2001/04/11 13:03:42 paf Exp $ + Copyright (c) 2001-2024 Art. Lebedev Studio (http://www.artlebedev.com) + Authors: Konstantin Morshnev , Alexandr Petrosian */ #ifndef PA_GLOBALS_H #define PA_GLOBALS_H -#include "pa_pool.h" +#define IDENT_PA_GLOBALS_H "$Id: pa_globals.h,v 1.120 2024/11/04 03:53:25 moko Exp $" -class String; -class Hash; -class Table; - -//@{ -/// constant string. class name, predefined method & co -#define AUTO_FILE_NAME "auto.p" - -#define HTML_TYPO_NAME "html-typo" - -#define CONTENT_TYPE_NAME "content-type" -#define BODY_NAME "body" -#define VALUE_NAME "value" -#define EXPIRES_NAME "expires" -#define PATH_NAME "path" -#define NAME_NAME "name" -#define NONAME_DAT "noname.dat" -#define SIZE_NAME "size" -#define TEXT_NAME "text" - -#define EXCEPTION_METHOD_NAME "exception" -#define POST_PROCESS_METHOD_NAME "post-process" - -#define CONTENT_DISPOSITION_NAME "content-disposition" -#define CONTENT_DISPOSITION_FILENAME_NAME "filename" - -#define UNNAMED_NAME "unnamed" - -#define MAIN_METHOD_NAME "main" -#define AUTO_METHOD_NAME "auto" - -#define OP_CLASS_NAME "OP" -#define MAIN_CLASS_NAME "MAIN" -#define STRING_CLASS_NAME "string" -#define DOUBLE_CLASS_NAME "double" -#define INT_CLASS_NAME "int" -#define TABLE_CLASS_NAME "table" -#define FILE_CLASS_NAME "file" -#define ENV_CLASS_NAME "env" -#define FORM_CLASS_NAME "form" -#define REQUEST_CLASS_NAME "request" -#define RESPONSE_CLASS_NAME "response" -#define COOKIE_CLASS_NAME "cookie" -#define RANDOM_CLASS_NAME "random" -#define MAIL_CLASS_NAME "mail" -#define IMAGE_CLASS_NAME "image" - -#define LIMITS_NAME "LIMITS" -#define POST_MAX_SIZE_NAME "post_max_size" -#define DEFAULTS_NAME "DEFAULTS" -#define LOCALE_NAME "LOCALE" -#define LOCALE_CTYPE_NAME "ctype" -#define MIME_TYPES_NAME "MIME-TYPES" -#define VFILE_MIME_TYPE_NAME "mime-type" -#define MAIL_NAME "MAIL" - -#define MAIN_SQL_NAME "SQL" -#define MAIN_SQL_DRIVERS_NAME "drivers" - -#define RESULT_VAR_NAME "result" - -#define STRING_PRE_MATCH_NAME "pre-match" -#define STRING_MATCH_NAME "match" -#define STRING_POST_MATCH_NAME "post-match" -//@} +#ifdef XML +# include "libxml/tree.h" +#endif -/// core func -void pa_globals_init(Pool& pool); +class Request; -/// hex_value[c] = hex value of c -extern short hex_value[0x100]; +/// initialize global variables +void pa_globals_init(); -//@{ -/// global string -extern String *html_typo_name; -extern String *content_type_name; -extern String *body_name; -extern String *value_name; -extern String *expires_name; -extern String *path_name; -extern String *name_name; -extern String *size_name; -extern String *text_name; - -extern String *exception_method_name; -extern String *post_process_method_name; - -extern String *content_disposition_name; -extern String *content_disposition_filename_name; - -extern String *unnamed_name; -extern String *empty_string; - -extern String *auto_method_name; -extern String *main_method_name; - -extern String *op_class_name; -extern String *main_class_name; -extern String *string_class_name; -extern String *double_class_name; -extern String *int_class_name; -extern String *env_class_name; -extern String *table_class_name; -extern String *file_class_name; -extern String *form_class_name; -extern String *request_class_name; -extern String *response_class_name; -extern String *cookie_class_name; -extern String *random_class_name; -extern String *mail_class_name; -extern String *image_class_name; - -extern String *limits_name; -extern String *post_max_size_name; - -extern String *defaults_name; -extern String *locale_name; -extern String *locale_ctype_name; -extern String *mime_types_name; -extern String *vfile_mime_type_name; -extern String *mail_name; - -extern String *main_sql_name; -extern String *main_sql_drivers_name; - -extern String *result_var_name; -extern String *string_pre_match_name; -extern String *string_match_name; -extern String *string_post_match_name; -//@} +/// finalize global variables +void pa_globals_done(); -/// global hash -extern Hash *untaint_lang_name2enum; +/// for lt_dlinit to be called once +void pa_dlinit(); -/// global table -extern Table *default_typo_table; +/// hex_value[c] = hex value of c +extern short hex_value[0x100]; + +#ifdef XML +/// flag whether there were some xml generic errors on current thread +bool xmlHaveGenericErrors(); +/// get xml generic error accumulated for current thread. WARNING: it is up to caller to free up +const char* xmlGenericErrors(); +#endif -/// global pcre tables -extern const unsigned char *pcre_tables; +/// register request for local thread to retrive later with pa_get_request() +void pa_register_thread_request(Request&); +/// retrives request set by pa_set_request function, useful in contextless places [slow] +Request& pa_thread_request(); #endif