--- parser3/ChangeLog 2023/11/27 02:05:16 1.185 +++ parser3/ChangeLog 2024/11/25 02:05:13 1.207 @@ -1,3 +1,969 @@ +2024-11-25 moko + + * src/main/pa_exec.C: separated cmd_quote and exe_quote (related to + bug #1239) + +2024-11-24 moko + + * src/main/pa_exec.C: added cmd.exe specific + + * tests/: 441.html, cat-windows.sh, cat.sh, results/441.processed: + tests for ^file::exec env and args tainting tests (related to bug + #1239) + + * src/main/pa_exec.C: shell_quote added (partial fix for bug #1239) + + * src/include/pa_config_includes.h: added recommendations for + libxslt.a and and libexslt.a compilation under cygwin + + * tests/results/102.processed: $form:fields.value is now writable, + as $form:value (related to feature #1254) + + * src/include/pa_config_includes.h: cigwin compilation fixes + +2024-11-23 moko + + * tests/httpd/site/run_server.sh: to simplify testing + + * tests/httpd/: 030.txt, 031.curl, 040.txt, ok.log, run_tests.sh, + site/form.html: $form:files and $form:elements tests added, tests + with curl supported (related to feature #1254) + + * src/: include/pa_symbols.h, main/pa_symbols.C, types/pa_vform.C, + types/pa_vform.h: $form:elements implemented, VForm::get_element + uses faster SYMBOLS_EQ, hashes no longer copied when using + $form:fields/tables/files/imap and can be edited (implements + feature #1254) + + * src/main/pa_http.C: pa_send added to handle partial writes (fixes + bug #1261) + +2024-11-17 moko + + * tests/: 440.html, results/440.processed: tests for + ^table.array[], offset restoration, iterators robust tests + (related to bug #1258, features #1259 and #1260) + + * tests/: 439.html, results/439.processed: array and hash iterators + robust tests (related to feature #1260) + + * src/: classes/array.C, classes/table.C, include/pa_array.h, + include/pa_table.h: Array_robust_iterator added and used in cases + where array can be modified during iteration (implements feature + #1260) + + * src/classes/table.C: ^table.array[], ^table.array[column name], + ^table.array{code} added (implements feature #1259) + +2024-11-16 moko + + * src/: classes/table.C, include/pa_table.h, main/pa_table.C: fixed + table current row restoration after exception and table changes + (fixes bug #1258) + +2024-11-13 moko + + * src/classes/table.C: minor optimization + + * src/main/pa_string.C: \r added to default ^string.trim chars list + (https://www.parser.ru/forum/?id=86648) + +2024-11-11 moko + + * src/classes/classes.C: set_base commented + + * src/classes/: classes.C, xdoc.C: cleanup after classes.awk + deleted + + * src/classes/classes.vcproj: no more classes.awk and classes.inc + + * src/classes/: Makefile.am, classes.awk: no more classes.awk and + classes.inc + + * src/: classes/classes.C, classes/classes.awk, classes/classes.h, + main/pa_globals.C: classes.awk is useless, preparing to delete it + + * src/classes/classes.h: temp fix + +2024-11-10 moko + + * src/: classes/date.C, classes/file.C, classes/image.C, + classes/op.C, main/pa_string.C: minor optimization + + * src/: classes/date.C, classes/file.C, classes/image.C, + classes/op.C, main/pa_string.C: typo fixed + + * src/: classes/classes.awk, classes/classes.h, classes/date.C, + classes/file.C, classes/image.C, classes/op.C, + main/pa_charsets.C, main/pa_string.C: singletones used to reduce + memory allocation befor main(). Only 3 allocations in chatsets + left (implements feature #1257) + + * src/targets/: apache/mod_parser3_core.C, isapi/parser3isapi.C: + minor naming convention fix + + * tests/: 437.html, 438.html, httpd/ok.log, httpd/site/029.html, + results/436.processed, results/437.processed, + results/438.processed: tests for @unhandled_exception processing + (related to feature #1256) + + * src/: main/pa_request.C, targets/apache/mod_parser3_core.C, + targets/cgi/pa_sapi_info.h, targets/cgi/parser3.C, + targets/isapi/parser3isapi.C: Exceptions in @unhandled_exception + are now processed in request::core for correct logging and + reporting (feature #1256) + + * src/: include/pa_sapi.h, main/pa_request.C, + targets/apache/mod_parser3_core.C, targets/cgi/parser3.C, + targets/isapi/parser3isapi.C: unhandled exception now called if + exception occures during $response:download processing (related + to bug #1255) + + * etc/auto.p.in: better 404 error reporting + +2024-11-09 moko + + * src/main/pa_memory.C: more detailed usage comment + + * src/main/pa_memory.C: usage commented + + * src/main/pa_memory.C: minor cleanup + + * src/types/: pa_varray.h, pa_vregex.h: warnings war + + * tests/: 436.html, httpd/029.txt, httpd/ok.log, + httpd/site/029.html, results/436.processed: test for exception in + $response:download[] added + + * src/targets/cgi/parser3.C: sync CGI mode behavior with httpd mode + and avoid exit status 1 on die + + * tests/results/: 007.processed, 019.processed, 098.processed, + 103.processed, 233.processed: windows headers matter for binary + files + + * tests/httpd/ok.log: tests results updated as extra headers now + cleared on error (related to bug #1255) + + * src/: include/pa_sapi.h, targets/apache/mod_parser3_core.C, + targets/cgi/pa_sapi_info.h, targets/cgi/parser3.C, + targets/isapi/parser3isapi.C: headers buffering to avoid extra + headers in errors, custom send_error in cgi/httpd mode to avoid + memory allocations (fixes bug #1255) + +2024-11-07 moko + + * tests/: 264.html, results/264.processed: tests updated to test + removal of only trailing empty arguments for backward + compatibility (related to feature #1252) + + * src/classes/file.C: remove trailing empty arguments for backward + compatibility (related to feature #1252) + +2024-11-05 moko + + * src/targets/cgi/: pa_sapi_info.h, parser3.C: avoid GPF in very + low memory case, when static initialization failed even before + main() start + +2024-11-04 moko + + * configure, src/include/pa_config_auto.h.in, + src/include/pa_config_fixed.h: _locking no longer used + + * configure.ac: _locking no longer used (related to bug #1231) + + * src/main/pa_os.C: lock error fine-tuning (related to bug #1231) + + * src/main/pa_os.C: lock errors tuning (related to bug #1231) + + * src/lib/sdbm/: pa_file_io.C, pa-include/pa_file_io.h: remove + unused + + * src/: lib/sdbm/pa_file_io.C, main/pa_common.C: errno should not + be used on locking errors (related to bug #1231) + + * src/main/pa_os.C: GetLastError used as errno is not set (related + to bug #1231) + + * src/main/pa_os.C: under windows _locking replaced with LockFileEx + allowing shared lock to work (fixes bug #1231) + + * INSTALL: actualized, minor fixes + + * etc/auto.p.in: default LIMITS added + + * AUTHORS: links actualized + + * src/: classes/array.C, classes/bool.C, classes/classes.C, + classes/classes.awk, classes/classes.h, classes/curl.C, + classes/date.C, classes/double.C, classes/file.C, classes/form.C, + classes/hash.C, classes/hashfile.C, classes/image.C, + classes/inet.C, classes/int.C, classes/json.C, classes/mail.C, + classes/math.C, classes/memcached.C, classes/memory.C, + classes/op.C, classes/reflection.C, classes/regex.C, + classes/response.C, classes/string.C, classes/table.C, + classes/void.C, classes/xdoc.C, classes/xnode.C, classes/xnode.h, + include/pa_array.h, include/pa_base64.h, + include/pa_cache_managers.h, include/pa_charset.h, + include/pa_charsets.h, include/pa_common.h, + include/pa_config_fixed.h, include/pa_config_includes.h, + include/pa_dictionary.h, include/pa_dir.h, + include/pa_exception.h, include/pa_exec.h, include/pa_globals.h, + include/pa_hash.h, include/pa_http.h, include/pa_memory.h, + include/pa_opcode.h, include/pa_operation.h, include/pa_os.h, + include/pa_pool.h, include/pa_random.h, include/pa_request.h, + include/pa_request_charsets.h, include/pa_request_info.h, + include/pa_sapi.h, include/pa_socks.h, + include/pa_sql_connection.h, include/pa_sql_driver_manager.h, + include/pa_stack.h, include/pa_string.h, + include/pa_stylesheet_connection.h, + include/pa_stylesheet_manager.h, include/pa_symbols.h, + include/pa_table.h, include/pa_threads.h, include/pa_types.h, + include/pa_uue.h, include/pa_xml_exception.h, + include/pa_xml_io.h, lib/gd/gif.C, lib/gd/gif.h, lib/gd/gifio.C, + lib/md5/pa_md5.h, lib/md5/pa_md5c.c, + lib/memcached/pa_memcached.C, lib/memcached/pa_memcached.h, + lib/punycode/pa_idna.c, lib/punycode/pa_idna.h, + lib/sdbm/pa_file_io.C, lib/sdbm/pa_strings.C, lib/smtp/comms.C, + lib/smtp/smtp.C, lib/smtp/smtp.h, main/compile.C, + main/compile.tab.C, main/compile.y, main/compile_tools.C, + main/compile_tools.h, main/execute.C, main/pa_base64.C, + main/pa_cache_managers.C, main/pa_charset.C, main/pa_charsets.C, + main/pa_common.C, main/pa_dictionary.C, main/pa_dir.C, + main/pa_exception.C, main/pa_exec.C, main/pa_globals.C, + main/pa_http.C, main/pa_memory.C, main/pa_os.C, main/pa_pool.C, + main/pa_random.C, main/pa_request.C, main/pa_socks.C, + main/pa_sql_driver_manager.C, main/pa_string.C, + main/pa_stylesheet_connection.C, main/pa_stylesheet_manager.C, + main/pa_symbols.C, main/pa_table.C, main/pa_threads.C, + main/pa_uue.C, main/pa_xml_exception.C, main/pa_xml_io.C, + main/untaint.C, sql/pa_sql_driver.h, + targets/apache/mod_parser3.c, targets/apache/mod_parser3_core.C, + targets/apache/pa_httpd.h, targets/cgi/parser3.C, + targets/isapi/parser3isapi.C, types/pa_junction.h, + types/pa_method.h, types/pa_property.h, types/pa_value.C, + types/pa_value.h, types/pa_varray.C, types/pa_varray.h, + types/pa_vbool.h, types/pa_vcaller_wrapper.h, types/pa_vclass.C, + types/pa_vclass.h, types/pa_vcode_frame.h, types/pa_vconsole.h, + types/pa_vcookie.C, types/pa_vcookie.h, types/pa_vdate.C, + types/pa_vdate.h, types/pa_vdouble.h, types/pa_venv.C, + types/pa_venv.h, types/pa_vfile.C, types/pa_vfile.h, + types/pa_vform.C, types/pa_vform.h, types/pa_vhash.C, + types/pa_vhash.h, types/pa_vhashfile.C, types/pa_vhashfile.h, + types/pa_vimage.C, types/pa_vimage.h, types/pa_vint.h, + types/pa_vjunction.C, types/pa_vjunction.h, types/pa_vmail.C, + types/pa_vmail.h, types/pa_vmath.C, types/pa_vmath.h, + types/pa_vmemcached.C, types/pa_vmemcached.h, types/pa_vmemory.h, + types/pa_vmethod_frame.C, types/pa_vmethod_frame.h, + types/pa_vobject.C, types/pa_vobject.h, types/pa_vregex.C, + types/pa_vregex.h, types/pa_vrequest.C, types/pa_vrequest.h, + types/pa_vresponse.C, types/pa_vresponse.h, + types/pa_vstateless_class.C, types/pa_vstateless_class.h, + types/pa_vstateless_object.h, types/pa_vstatus.C, + types/pa_vstatus.h, types/pa_vstring.C, types/pa_vstring.h, + types/pa_vtable.C, types/pa_vtable.h, types/pa_vvoid.C, + types/pa_vvoid.h, types/pa_vxdoc.C, types/pa_vxdoc.h, + types/pa_vxnode.C, types/pa_vxnode.h, types/pa_wcontext.C, + types/pa_wcontext.h, types/pa_wwrapper.h: Copyright year updated + +2024-10-28 moko + + * src/classes/array.C: avoid invalidate() + + * src/: classes/array.C, types/pa_varray.h: minor optimization for + fused to survive in ^array::copy[$a] (related to feature #930) + + * src/types/pa_varray.h: minor optimization as last element is + allways defined if present + + * tests/: 435.html, results/435.processed: tests for + ^hash.set[first|last;value], ^hash.set([-+]index)[value] and same + for array added (related to feature #1253) + + * src/classes/array.C: typo fixed + + * src/classes/: array.C, hash.C: ^hash.set[first|last;value] + + ^hash.set([-+]index)[value], and same for array added (implements + feature #1253) + + * tests/results/: 246.processed, 298.processed, 342.processed, + 389.processed, 397.processed, 430.processed, 432.processed: tests + results update after minor exceptions texts fixes + +2024-10-27 moko + + * src/: classes/array.C, classes/hash.C, classes/math.C, + classes/reflection.C, classes/string.C, classes/table.C, + main/pa_string.C, types/pa_varray.h, types/pa_vfile.C, + types/pa_vmethod_frame.h: handy as_index() added, several + exceptions texts fixed (related to feature #930) + + * src/: classes/array.C, types/pa_varray.h: non-working + $array.fields removed, ^array.delete[index] supported (related to + feature #930) + + * tests/: 431.html, results/431.processed: tests updated after + ^a.delete[3] supported + + * tests/: 431.html, 434.html, results/434.processed: tests for last + element used, push/pop, exceptions during arguments processing + and used caching (related to feature #930) + + * src/: classes/array.C, types/pa_varray.h: change_used added for + better used caching and now no issues if exception occures during + append arguments processing (related to feature #930) + + * src/: classes/array.C, types/pa_varray.h: ^array.push[] / + ^array.pop[] added, last element is allways used (related to + feature #930) + +2024-10-26 moko + + * src/: classes/array.C, include/pa_array.h, types/pa_varray.C, + types/pa_varray.h: confirm_all_used added where possible (related + to feature #930) + + * src/: classes/array.C, include/pa_array.h, types/pa_varray.h: + small array optimizations (related to feature #930) + + * src/types/pa_varray.h: DEBUG_ARRAY_USED added to simplify testing + + * tests/: 431.html, results/431.processed: test for + ^array.compact[undef] added + + * src/classes/array.C: ^array.compact[] now have optional 'undef' + argument to also compact undefined elements (related to feature + #930) + +2024-10-24 moko + + * src/: classes/array.C, types/pa_varray.C, types/pa_varray.h: + VArray::hash is used rarery, no longer caching the result + + * tests/results/432.processed: testing removed from tests + +2024-10-23 moko + + * tests/: 431.html, results/431.processed: ^array.compact[] test + added + + * src/: classes/array.C, types/pa_varray.h: ^array.compact[] added + + * tests/: 432.html, results/432.processed: testing ^array.at[] for + both "solid" and "sparse" arrays + + * src/classes/array.C: ^array.at[] speedup for "solid" arrays + +2024-10-22 moko + + * tests/results/264.processed: spelling + + * src/classes/file.C: spelling + + * tests/: 264.html, cat-windows.sh, cat.sh, results/264.processed: + tests updated after ^file::exec[cmd;;$array] implemented and + empty arguments not skipped (related to feature #1252) + + * src/classes/file.C: ^file::exec[cmd;;$array] supported + (implements feature #1252) bugfix: empty arguments no longer + skipped + +2024-10-21 moko + + * tests/httpd/: 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, + 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, + 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, + 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, + 028.txt, 030.txt, ok.log, run_tests.sh, site/httpd.p, + site/index.html, site/test.txt: httpd tests added + +2024-10-20 moko + + * src/classes/string.C: warnings war + + * src/: main/pa_string.C, classes/array.C: warnings war + + * src/classes/json.C: warnings war + + * src/classes/image.C: warnings war + + * src/: classes/table.C, types/pa_varray.C: warnings war + + * src/classes/array.C: warning war + + * src/: classes/classes.vcproj, types/types.vcproj: vcproj: +=array + + * src/main/main.vcproj: warnings war + +2024-10-19 moko + + * tests/427.html: test updated after constructors renamed + +2024-10-18 moko + + * tests/: 421.html, 430.html, 431.html, 432.html, 433.html, + results/421.processed, results/430.processed, + results/431.processed: test updated after constructors renamed + + * src/classes/array.C: create -> copy, new -> create according to + https://www.parser.ru/forum/?id=86603 discussion (related to + feature #930) + +2024-10-16 moko + + * src/classes/json.C: $json:array[array or hash] added to provide + more backward compatibility (implements feature #1251) + +2024-10-15 moko + + * tests/: 421.html, results/421.processed: test results updated + after missing constuctor error check added and array is_index + check added + + * src/main/execute.C: absent constructor message fixed + +2024-10-13 moko + + * src/types/pa_varray.h: ^array.$i[arg] is rare, thus checking i + with is_index() before calling index() for better error reporting + in method name typo (was invalid number, not method not found + exception). + +2024-10-08 moko + + * src/types/pa_varray.C: Visual Studio compatibilty issues fixed + + * src/include/pa_array.h: warnings war + +2024-10-05 moko + + * src/classes/table.C: ^table.cells[] / ^table.cells(limit) added, + returns current row cells array (implements feature #1250) + + * tests/: 405.html, results/169.processed, results/405.processed: + tests updated after ^string.split[;a] implemented (related to + feature #1249) + + * src/classes/string.C: ^string.split[] - 'a' option added for + splitting into an array (implements feature #1249) + +2024-10-04 moko + + * tests/: 431.html, results/431.processed: final code coverage + array tests + + * src/: classes/array.C, include/pa_array.h, types/pa_varray.h: + array: confirm_all_used() added and used where possible, expand() + now expends faster + +2024-10-03 moko + + * tests/: 357.html, results/auto.p: max_recoursion -> max_recursion + + * tests/: 256.html, results/256.processed: test for + $.date[unix-timestamp] handling large dates + + * src/: classes/file.C, classes/op.C, classes/reflection.C, + classes/string.C, classes/table.C, include/pa_common.h, + main/pa_common.C, main/pa_http.C, main/pa_request.C, + types/pa_vdate.C, types/pa_vmethod_frame.h, types/pa_vtable.C: + format replaced with pa_uitoa where applicable, + $.date[unix-timestamp] fixed for handling large dates + + * tests/: 433.html, results/433.processed: more tests, including + test for possible endless recursion in ^o.GET[] + + * src/types/pa_vobject.C: bugfix: detecting possible endless + recursion in get_scalar_value inside ^o.GET[] + + * src/: classes/json.C, include/pa_request.h, main/execute.C, + main/pa_request.C, types/pa_value.h, types/pa_vmethod_frame.C: + Temp_recursion class added; spelling: $LIMITS.max_recoursion -> + $LIMITS.max_recursion + +2024-10-02 moko + + * tests/: 253.html, 287.html, 430.html, 431.html, 433.html, + results/253.processed, results/287.processed, + results/430.processed, results/433.processed: more tests for full + array and json code coverage + + * tests/: 433.html, results/433.processed: tests for hash functions + with array param + + * src/classes/: array.C, hash.C: ^hash::create[$array] optimized + + * tests/: 432.html, results/432.processed: modified ^hash.at tests + in 246.html used to test ^array.at, same result produced + + * tests/: 430.html, 431.html, results/430.processed, + results/431.processed: more array tests for 100% code coverage + (related to feature #930) + + * tests/: 427.html, 430.html, results/427.processed, + results/430.processed: first portion of array tests added + (related to feature #930) + + * src/classes/array.C: allow only whitespace string as argument for + add and join + + * src/classes/array.C: add behavour for array synced with hash + +2024-09-30 moko + + * tests/: 429-sql.html, results/429-sql.processed: code coverage + tests added + + * src/classes/array.C: $.distinct should not be used unless + $.sparse(true) + + * tests/: 429-sql.html, results/388-sql.processed, + results/429-sql.processed: tests for ^array::sql{}, including + multi_statements mode (related to feature #930) + +2024-09-29 moko + + * src/classes/array.C: synced ^array::sql multi_statements logic + with ^hash::sql new behavour + +2024-09-28 moko + + * tests/: 428-sql.html, results/388-sql.processed, + results/428-sql.processed: tests updated after column names were + fixed in multi_statements mode (related to feature #1197) + + * src/classes/hash.C: column names are fixed for most cases in + multi_statements mode (related to feature #1197) + + * tests/: 428-sql.html, results/195.processed, + results/224.processed, results/239.processed, + results/254.processed, results/261.processed, + results/306.processed, results/333.processed, + results/341.processed, results/343.processed, + results/344.processed, results/348.processed, + results/364.processed, results/389.processed, + results/390.processed, results/415.processed, + results/420.processed, results/421.processed: tests results + updated after error messages spelling minor fixes + + * src/types/: pa_value.h, pa_vstateless_class.h: a bit more + spelling + + * src/: classes/curl.C, classes/file.C, classes/hash.C, + classes/image.C, classes/math.C, classes/string.C, + classes/table.C, lib/memcached/pa_memcached.C, main/compile.y, + main/execute.C, main/pa_charset.C, main/pa_common.C, + main/pa_http.C, main/pa_request.C, main/pa_socks.C, + main/pa_sql_driver_manager.C, types/pa_value.C, types/pa_value.h, + types/pa_vmail.C, types/pa_vobject.C, + types/pa_vstateless_class.C, types/pa_vstateless_class.h, + types/pa_vxdoc.C: minor error messages spelling fixes + + * src/: classes/array.C, types/pa_varray.h: initial ^array::sql{} + implementation (related to feature #930) + + * tests/: 388-sql.html, results/388-sql.processed: test results + updated after rows number ^file::sql{} check added + + * src/classes/file.C: rows number now checked in ^file::sql{} + + * tests/: 428-sql.html, results/428-sql.processed: more tests + + * tests/: 428-sql.html, results/428-sql.processed: more + multi_statements testing before bugfix + + * tests/: 388-sql.html, 428-sql.html, results/388-sql.processed, + results/428-sql.processed: support for multiple sql test files + added + + * tests/: 388-sql.html, results/388-sql.processed: more sql testing + + * src/classes/hash.C: more accurate one_bool_column processing + + * tests/: 427.html, results/427.processed: Constructors as methods + behavour documented in test + + * src/classes/hash.C: HashStringValue::Iterator used for options + + * tests/: 388-sql.html, results/388-sql.processed: even more tests + + * tests/: 388-sql.html, results/388-sql.processed: a bit more + testing + + * tests/results/367-curl.processed: test result updated after + server charset changed + + * tests/results/347-curl.processed: error messages updated + + * tests/results/: 346-curl.processed, 379-curl.processed, + 394-curl.processed: tests results updated after Type -> Exception + type replacement + + * tests/results/388-sql.processed: tests result updated after Type + -> Exception type + +2024-09-27 moko + + * src/classes/hash.C: minor simplification + +2024-09-24 moko + + * src/main/pa_string.C: atoui error messages improved + + * tests/: 165.html, 312.html, results/165.processed, + results/312.processed, results/379.processed: tests updated after + default endless loop limit increased, atoi error messages + improved + + * src/classes/hash.C: VBool::get used, unification + +2024-09-22 moko + + * src/classes/array.C: minor simplification + + * src/classes/array.C: ^array.left(N), + ^array.right(N),^array.mid(P;N) added (related to feature #930) + + * src/: classes/array.C, include/pa_request.h, main/pa_request.C, + types/pa_varray.C, types/pa_varray.h: $MAIN:LIMITS.max_array_size + added, default 1000000 (related to feature #930) + + * tests/: 426.html, results/426.processed: test for negative limit + and offset processing for table options added + + * src/: classes/table.C, include/pa_array.h, main/pa_table.C: + bugfix: negative limit and offset processing for table options + fixed + +2024-09-21 moko + + * src/: classes/array.C, types/pa_varray.h: join supports hash; + ^for added that also iterates holes; ^remove added (related to + feature #930) + + * src/classes/array.C: ^array.join[$another_array; $.limit(N) + $.offset(M) ] added (related to feature #930) + +2024-09-20 moko + + * src/: classes/array.C, types/pa_varray.h: array: + +foreach[value]{code}, + add[hash with numeric keys] (related to + feature #930) + +2024-09-19 moko + + * src/: include/pa_opcode.h, main/compile.y, main/compile_tools.h, + main/execute.C, types/pa_varray.h: OP_CONSTRUCT_ARRAY added to + support $a[v1;v2;...] syntax (related to feature #930) + +2024-09-17 moko + + * src/: classes/reflection.C, include/pa_request.h, + main/compile_tools.h, main/pa_request.C: + ^reflection:class_alias[existing class name;alias class name] + added. The array class can now be redefined regardless of the + $.replace(bool) option value (related to feature #930) + + * src/main/: compile.y, compile_tools.h: class_add return value + inverted to add it to request class + + * src/: classes/array.C, include/pa_array.h, include/pa_request.h, + include/pa_stack.h, types/pa_varray.C, types/pa_varray.h, + types/pa_vmethod_frame.h: array: fused -> fsize, fit(index) to + resize if required. spared array - added fused, append. + +2024-09-16 moko + + * src/types/pa_varray.h: get moved to where it belongs + +2024-09-15 moko + + * src/: include/pa_array.h, types/pa_varray.h: more agressive + expansion to minimize reallocs: fallocated/32 -> fallocated/4 + + * tests/: 421.html, results/323.processed, results/421.processed: + tests updated after 'spared-array' class renamed to 'array' + following a discussion on the forum (related to feature #930) + + * src/: include/pa_array.h, types/pa_value.h, types/pa_varray.h, + types/pa_vmail.C: initial SparseArray separation from Array, + parser class now 'array' + +2024-09-14 moko + + * tests/: 030.html, results/030.processed: out of range expires + check added + + * src/types/pa_vcookie.C: VDate range is narrower than gmtime, thus + checking expires time using VDate + +2024-09-13 moko + + * src/: classes/array.C, classes/curl.C, classes/date.C, + classes/file.C, classes/hash.C, classes/image.C, classes/json.C, + classes/memcached.C, classes/op.C, classes/regex.C, + classes/string.C, classes/xdoc.C, classes/xnode.C, + main/execute.C, main/pa_http.C, main/pa_request.C, + types/pa_value.C, types/pa_value.h, types/pa_vclass.C, + types/pa_vclass.h, types/pa_vcookie.C, types/pa_vhashfile.C, + types/pa_vmail.C, types/pa_vobject.C, types/pa_vobject.h, + types/pa_vxdoc.C, types/pa_vxdoc.h: optimization: Value::as() + removed as dynamic_cast is faster, Value::is() is still required + for is operator. + +2024-09-12 moko + + * src/: classes/file.C, classes/image.C, classes/reflection.C, + classes/table.C, classes/xnode.C, include/pa_array.h, + include/pa_string.h, main/pa_common.C, main/pa_request.C, + main/pa_string.C, targets/cgi/pa_sapi_info.h, types/pa_vform.C, + types/pa_vhash.h, types/pa_vtable.C, types/pa_vxnode.C: faster + templated pa_itoa/pa_uitoa added to work with any integer type, + String::Body::Format removed + +2024-09-10 moko + + * src/classes/array.C: append and insert methods added to + sparse-array (related to feature #930) + + * tests/: 253.html, 255.html, 421.html, results/421.processed: + tests updated after sparse-array was added to avoid ^json:parse[] + using it in old tests (related to feature #930) + + * src/: classes/array.C, classes/json.C, types/pa_varray.C, + types/pa_varray.h: sparse-array class added (initial feature #930 + implementation) + + * src/: classes/Makefile.am, types/Makefile.am: Makefiles update + for sparse-array class files (related to feature #930) + + * src/: classes/json.C, include/pa_array.h, types/pa_value.h, + types/pa_vhash.h: VArray support functions without actual VArray + files (related to feature #930) + +2024-09-07 moko + + * src/: classes/curl.C, classes/string.C, classes/table.C, + include/pa_array.h, main/execute.C, main/pa_dictionary.C, + main/pa_http.C, main/pa_sql_driver_manager.C, + main/pa_stylesheet_manager.C, main/pa_table.C, types/pa_vclass.C, + types/pa_vmethod_frame.C, types/pa_vstateless_class.C, + types/pa_vtable.C, types/pa_wcontext.C: Array::Iterator unified + with Hash::Iterator, has_next() replaced with operator bool + (related to feature #930) + + * src/: classes/string.C, include/pa_array.h, main/pa_http.C, + main/pa_table.C, types/pa_vclass.C, types/pa_vmethod_frame.C, + types/pa_vstateless_class.C: Array class extended, + Array::Iterator added and used (related to feature #930) + +2024-08-26 moko + + * src/targets/cgi/parser3.C: under Windows back_slashes_to_slashes + should be used on argv[0] as well to match document root. + +2024-08-25 moko + + * src/main/pa_request.C: be more specific + + * src/targets/cgi/parser3.C: parser3 t.html now behaves identically + to /usr/bin/parser3 t.html in terms of /etc/parser3/auto.p load + (fixes bug #1244) + + * src/targets/cgi/parser3.C: avoid "parser allready configured" + exception when ./parser3.cgi is used; rsplit(..., '/') || + rsplit(..., '\\') is not correct when / and \ are mixed in path + + * src/targets/cgi/parser3.C: full_disk_path now uses pa_strcat() + +2024-07-24 moko + + * src/: include/pa_config_includes.h, lib/gd/gifio.C, + main/execute.C, main/pa_string.C: Warning war: clang changed + -Wdeprecated-register warning to -Wregister, it's easier to + remove all register vars then continue this fight. :) + + * src/main/: compile.y, compile.tab.C: warning war: register + removed + +2024-07-14 moko + + * src/targets/cgi/pa_sapi_info.h: When accessing $env:name, + checking the HTTP request environment; if the variable is not + present, checking the web server process environment (implements + feature #1242) + +2024-05-26 moko + + * tests/: 195.html, 229.html, results/096.processed, + results/097.processed, results/158.processed, + results/186.processed, results/273.processed, + results/293.processed, results/317.processed, + results/389.processed, results/402.processed: tests updated as + single quote now escaped with ' in HTML tainting mode + (related to feature #1241) + + * src/main/untaint.C: single quote now escaped with ' in HTML + tainting mode (implements feature #1241) + + * tests/results/: 020.processed, 021.processed, 026.processed, + 042.processed, 043.processed, 057.processed, 110.processed, + 115.processed, 116.processed, 117.processed, 118.processed, + 119.processed, 120.processed, 125.processed, 126.processed, + 128.processed, 130.processed, 131.processed, 132.processed, + 133.processed, 135.processed, 136.processed, 138.processed, + 139.processed, 140.processed, 145.processed, 150.processed, + 151.processed, 165.processed, 174.processed, 181.processed, + 182.processed, 192.processed, 193.processed, 201.processed, + 213.processed, 224.processed, 226.processed, 230.processed, + 239.processed, 240.processed, 244.processed, 253.processed, + 254.processed, 261.processed, 264.processed, 269.processed, + 274.processed, 275.processed, 288.processed, 294.processed, + 296.processed, 303.processed, 306.processed, 307.processed, + 308.processed, 311.processed, 312.processed, 314.processed, + 315.processed, 316.processed, 320.processed, 323.processed, + 324.processed, 325.processed, 328.processed, 330.processed, + 332.processed, 333.processed, 337.processed, 338.processed, + 341.processed, 342.processed, 343.processed, 344.processed, + 345.processed, 348.processed, 352.processed, 356.processed, + 357.processed, 363.processed, 364.processed, 368.processed, + 372.processed, 373.processed, 376.processed, 378.processed, + 379.processed, 385.processed, 386.processed, 387.processed, + 389.processed, 390.processed, 395.processed, 397.processed, + 398.processed, 399.processed, 404.processed, 406.processed, + 413.processed, 414.processed, 420.processed, 421.processed, + 424.processed, auto.p: Type -> Exception type for readability + + * tests/: 119.html, 165.html, 175.html, 192.html, 213.html, + 217.html, 230.html, 240.html, 298.html, 380.html, 415.html, + results/119.processed, results/165.processed, + results/175.processed, results/192.processed, + results/213.processed, results/217.processed, + results/230.processed, results/240.processed, + results/298.processed, results/380.processed, + results/415.processed: try-catch, try-catch-comment used + +2024-05-21 moko + + * tests/: 169.html, 180.html, 195.html, 224.html, 246.html, + results/180.processed, results/195.processed, + results/224.processed, results/auto.p: @try-catch-comment added + and used + + * tests/: 175.html, 256.html, 269.html, 283.html, 341.html, + 415.html, results/269.processed, results/283.processed, + results/auto.p: more tests are updated to prepare for apostrophe + escaping in HTML tainting + + * tests/results/: 181.processed, 294.processed, 296.processed, + 315.processed, 379.processed, 389.processed, auto.p: + $exception.comment printed as-is for whitespace reporting and to + prepare for apostrophe escaping in HTML mode + +2024-05-11 moko + + * tests/: 099.html, 100.html, results/099.processed, + results/100.processed: a test for non-UTF-8 filename* added + (related to feature #1240) + + * tests/: 293.html, results/293.processed: tainting modes tests + added + + * tests/results/: 099.processed, 100.processed, 205.processed, + 309.processed, 310.processed, 419.processed: tests results + updated after filename* added (related to feature #1240) + + * src/: include/pa_common.h, main/pa_request.C: The filename* + parameter was added to the Content-Disposition header to conform + with RFC 6266, with code provided by Sumo (implements feature + #1240) + +2024-05-10 moko + + * src/main/pa_http.C: Testing shows that TCP_NODELAY has no + positive performance effect in our case + +2024-03-27 moko + + * src/lib/pcre/pcre_internal.vcproj: pa_config_includes.h used + (related to feature #1236) + +2024-03-15 moko + + * tests/: 413.html, results/413.processed: test for object still + can be used as file parameter (related to bug #1218) + + * src/types/: pa_vobject.C, pa_vobject.h: regression fix: object + still can be used in file context (fixes bug #1218) + +2024-03-14 moko + + * src/include/pa_string.h: ArrayString get() null result assert + also added (related to bug #1238) + + * src/types/: pa_vstring.h, pa_vtable.C: VString() optimized; + VString::empty() used instead of new VString() + +2024-03-12 moko + + * tests/: 379-curl.html, 379.html, results/379-curl.processed, + results/379.processed: test added for cookie without value + (related to bug #1238) + + * src/include/pa_string.h: In assertions enabled mode, ArrayString + values are now required to be non-null (related to bug #1238) + + * src/main/pa_http.C: cookies without value are now parsed + correctly (fixed bug #1238) + +2024-03-11 moko + + * tests/run_parser.sh: for better error reporting + +2023-12-30 moko + + * tests/: 038.html, results/038.processed: test for atan2 added + +2023-12-29 moko + + * src/classes/math.C: atan2(y,x) math function added + +2023-12-14 moko + + * tests/212.html: pcre2 compatibility (related to feature #1236) + + * tests/: 425.html, results/425.processed: test for pcre/pcre2 + exceptions and behavour added (related to feature #1236) + +2023-12-13 moko + + * buildall: by default parser is now bundled with pcre2 10.42, + --without-pcre2 option added to build with pcre-8.45 (related to + feature #1236) + +2023-12-12 moko + + * configure.ac, src/include/pa_config_auto.h.in: pcre2 library + support added (implements feature #1236) + + * src/: include/pa_charset.h, include/pa_config_includes.h, + lib/pcre/pa_pcre_internal.h, lib/pcre/pa_pcre_valid_utf8.c, + main/pa_common.C, main/pa_globals.C, types/pa_vregex.C, + types/pa_vregex.h: Adopted patch from Yavor Doganov + to add pcre2 library support (implements feature + #1236) + +2023-11-28 moko + + * src/include/pa_config_includes.h: warnings war continues + + * src/include/pa_config_includes.h: warning war + + * tests/: 424.html, results/424.processed: tests for '+' and '-' + number strings, whitespace and sign in exception messages + (related to bug #1234) + 2023-11-26 moko * tests/: 274.html, results/224.processed, results/274.processed: