-
Enhance clarity and maintainability by introducing comprehensive (AI generated) docstrings for methods in the `Main` class, detailing functionality, parameters, and return types.
-
* Remove dependency on `perl`, now only required for maintenance activities and running the test suite. * Exercise building qpdf and running executables from JetBrains CLion without any special additional tooling beyond pre-built external libraries. This replaces the `copy_dlls` with a powershell script, written mostly by ChatGPT, starting from the bash script below. The copy_dlls script had a lot of logic that was no longer needed. ```bash #!/bin/bash set -eo pipefail exe="$1" dest="$2" mingw_bin_dir="$3" if [[ $mingw_bin_dir == "" ]]; then echo >&2 "Usage: $(basename $0) exe dest mingw-bin-dir" exit 2 fi get_dlls() { objdump -p "$1" | grep 'DLL Name:' | awk '{print $NF}' } declare -a dlls dlls=($(get_dlls "$exe")) declare -A seen while [[ ${#dlls[@]} -gt 0 ]]; do i="${dlls[0]}" dlls=("${dlls[@]:1}") if [[ ${seen[$i]} == 1 ]]; then continue fi seen[$i]=1 full="$mingw_bin_dir/$i" if [[ -f "$full" ]]; then cp "$full" $dest/ dlls+=($(get_dlls "$full")) fi done ```
-
Thanks to github user @cdosborn for the basic enhancement.
-
... to remove the /Root /StructTreeRoot and /MarkInfo entries.
-
Figuring out which classes are part of the public API by using library symbols is fragile (dependent on specific compiler optimizations) and unreliable (misses some inline things). Instead, use castxml, a tool that parses C++ to an abstract syntax tree and generates XML, to get a reliable accounting of public classes and their sizes.
-
This requires a special build option.
-
Why did this ever work? Hard to say...perhaps a library we linked against was setting `int _dowildcard = -1;` somewhere and no longer is. Apparently linking with CRT_glob.o has been the way to do this for a very long time, and we've just been lucky that it worked all this time.
-
As a rule, we should avoid conditional compilation is it always causes code paths that are sometimes not even seen lexically by the compiler. Also, we want the actual code being fuzzed to be as close as possible to the real code. Conditional compilation is suitable to handle underlying system differences. Instead, favor configuration using callbacks or other methods that can be triggered in the places where they need to be exercised.
-
This is just QPDFJob wiring.
-
Accept --file and --range as named parameters in additional to allowing positional arguments. This is in preparation for adding additional flags.
-
This commit contains the changes from generate_auto_job based on manual changes from the previous commit.