--- parser3/src/classes/file.C 2008/07/03 09:18:52 1.172 +++ parser3/src/classes/file.C 2008/08/21 15:58:27 1.176 @@ -5,12 +5,10 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_FILE_C="$Date: 2008/07/03 09:18:52 $"; +static const char * const IDENT_FILE_C="$Date: 2008/08/21 15:58:27 $"; #include "pa_config_includes.h" -#include "pcre.h" - #include "classes.h" #include "pa_vmethod_frame.h" @@ -619,7 +617,11 @@ static void _list(Request& r, MethodPara const char* pattern=regexp->cstr(); const char* errptr; int erroffset; - regexp_code=pcre_compile(pattern, PCRE_EXTRA | PCRE_DOTALL, + int options=PCRE_EXTRA | PCRE_DOTALL; + if(r.charsets.source().isUTF8()) + options=options|PCRE_UTF8; + + regexp_code=pcre_compile(pattern, options, &errptr, &erroffset, r.charsets.source().pcre_tables); @@ -653,8 +655,8 @@ static void _list(Request& r, MethodPara else if(exec_result<0) { (*pcre_free)(regexp_code); throw Exception(0, - regexp, - "regular expression execute (%d)", + regexp, + print_pcre_exec_error_text(exec_result), exec_result); } } @@ -872,6 +874,7 @@ static void _sql(Request& r, MethodParam statement_string.cstr(String::L_UNSPECIFIED, r.connection()); File_sql_event_handlers handlers(statement_string, statement_cstr); + ulong limit=SQL_NO_LIMIT; ulong offset=0; if(params.count()>1) @@ -885,6 +888,10 @@ static void _sql(Request& r, MethodParam valid_options++; handlers.user_content_type=&vcontent_type->as_string(); } + if(Value* vlimit=options->get(sql_limit_name)) { + valid_options++; + limit=(ulong)r.process_to_value(*vlimit).as_double(); + } if(Value* voffset=options->get(sql_offset_name)) { valid_options++; offset=(ulong)r.process_to_value(*voffset).as_double(); @@ -899,7 +906,7 @@ static void _sql(Request& r, MethodParam r.connection()->query( statement_cstr, 0, 0, - offset, 1/*limit*/, + offset, limit, handlers, statement_string);