aboutsummaryrefslogtreecommitdiffstats
path: root/libtests/qutil.cc
AgeCommit message (Collapse)Author
2023-05-21Rerun clang-formatJay Berkenbilt
2023-05-20Rerun format_code (after merging clang-tidy PR)Jay Berkenbilt
2023-05-20Use nullptr instead of 0 or NULLm-holger
2023-05-20Replace deprecated C++ includesm-holger
2023-05-20Remove unused include directivesm-holger
2023-03-08Add new procedure QUtil::read_file_into_stringm-holger
2022-09-26Fix edge case in character encoding (fixes #778)Jay Berkenbilt
Avoid representing as PDF Doc encoding any string whose PDF Doc encoding representation starts with a UTF-16 or UTF-8 marker.
2022-08-31Add QUtil::get_max_memory_usage for testingJay Berkenbilt
2022-05-31Add conversions to ISO-8601 date formatJay Berkenbilt
2022-05-16Add QUtil::is_long_longJay Berkenbilt
2022-05-04Make assert handling less error-proneJay Berkenbilt
Prevent my future self or other contributors from using assert in tests and then having that assert not do anything because of the NDEBUG macro.
2022-04-30Code clean up: use range-style for loops wherever possibleJay Berkenbilt
Where not possible, use "auto" to get the iterator type. Editorial note: I have avoid this change for a long time because of not wanting to make gratuitous changes to version history, which can obscure when certain changes were made, but with having recently touched every single file to apply automatic code formatting and with making several broad changes to the API, I decided it was time to take the plunge and get rid of the older (pre-C++11) verbose iterator syntax. The new code is just easier to read and understand, and in many cases, it will be more effecient as fewer temporary copies are being made. m-holger, if you're reading, you can see that I've finally come around. :-)
2022-04-24Expose QUtil::get_next_utf8_codepointJay Berkenbilt
2022-04-09Remove PointerHolder.hh from other than public header filesJay Berkenbilt
Increase to POINTERHOLDER_TRANSITION=4
2022-04-09Replace PointerHolder with std::shared_ptr in the rest of the codeJay Berkenbilt
Increase to POINTERHOLDER_TRANSITION=3 patrepl s/PointerHolder/std::shared_ptr/g **/*.cc **/*.hh patrepl s/make_pointer_holder/std::make_shared/g **/*.cc patrepl s/make_array_pointer_holder/QUtil::make_shared_array/g **/*.cc patrepl s,qpdf/std::shared_ptr,qpdf/PointerHolder, **/*.cc **/*.hh git restore include/qpdf/PointerHolder.hh git restore libtests/pointer_holder.cc cleanpatch ./format-code
2022-04-04Programmatically apply new formatting to codeJay Berkenbilt
Run this: for i in **/*.cc **/*.c **/*.h **/*.hh; do clang-format < $i >| $i.new && mv $i.new $i done
2022-03-07Force assert to be defined in test codeJay Berkenbilt
2022-02-16Spell checkJay Berkenbilt
2022-02-15Silently/transparently recognize UTF-16LE as UTF-16 (fixes #649)Jay Berkenbilt
The PDF spec only allows UTF-16BE, but most readers seem to accept UTF-16LE as well, so now qpdf does too.
2022-02-15Handle odd PDFDoc codepoints in UTF-8 during transcoding (fixes #650)Jay Berkenbilt
There are codepoints in PDFDoc that are not valid UTF-8 but map to valid UTF-8. We were handling those correctly with bidirectional mapping. However, if those same code points appeared in UTF-8, where they have no meaning, they were left as fixed points when converting to PDFDoc, where they do have meaning. This change recognizes them as errors.
2022-02-09Fix one more PDF doc encoding error for 10.6 release (fixes #637)release-qpdf-10.6.0Jay Berkenbilt
2022-02-08WHITESPACE ONLY -- expand tabs in source codeJay Berkenbilt
This comment expands all tabs using an 8-character tab-width. You should ignore this commit when using git blame or use git blame -w. In the early days, I used to use tabs where possible for indentation, since emacs did this automatically. In recent years, I have switched to only using spaces, which means qpdf source code has been a mixture of spaces and tabs. I have avoided cleaning this up because of not wanting gratuitous whitespaces change to cloud the output of git blame, but I changed my mind after discussing with users who view qpdf source code in editors/IDEs that have other tab widths by default and in light of the fact that I am planning to start applying automatic code formatting soon.
2022-02-07Update for clean compile with POINTERHOLDER_TRANSITION=2Jay Berkenbilt
2022-02-05Improve use of std::unique_ptrJay Berkenbilt
* Use unique_ptr in place of shared_ptr in some cases * unique_ptr for arrays does not require a custom deleter * use std::make_unique (c++14) where possible
2022-02-04PointerHolder: deprecate getPointer() and getRefcount()Jay Berkenbilt
Use get() and use_count() instead. Add #define NO_POINTERHOLDER_DEPRECATION to remove deprecation markers for these only. This commit also removes all deprecated PointerHolder API calls from qpdf's code except in PointerHolder's test suite, which must continue to test the deprecated APIs.
2022-01-30Add QUtil::make_shared_cstrJay Berkenbilt
Replace most of the calls to QUtil::copy_string with this instead.
2022-01-11Add missing characters from PDF doc encoding (fixes #606)Jay Berkenbilt
2021-12-29Add QUtil::file_can_be_openedJay Berkenbilt
2021-02-23Spell checkJay Berkenbilt
2021-02-18Add QUtil::path_basenameJay Berkenbilt
2021-02-13QUtil::double_to_string: trim trailing zeroes with option to disableJay Berkenbilt
2021-02-11Allow zone information to be omitted from timestamp stringsJay Berkenbilt
2021-02-09Add QUtil methods for dealing with PDF timestamp stringsJay Berkenbilt
2021-02-08Make newly created name/number trees indirect objectsJay Berkenbilt
2021-02-08Add QUtil::pipe_file and QUtil::file_providerJay Berkenbilt
2020-10-21Protect numeric conversion against user's locale (fixes #459)Jay Berkenbilt
2020-04-04Allow qpdf to be built on systems without wchar_t (fixes #406)Jay Berkenbilt
2020-01-14Pull wmain -> main code from qpdf.cc into QUtil.ccJay Berkenbilt
2020-01-13QUtil::read_lines_from_file: optional EOL preservationJay Berkenbilt
2020-01-13Refactor QUtil::read_lines_from_fileJay Berkenbilt
This commit adds the preserve_eol flags but doesn't implement EOL preservation yet.
2019-08-31Add remove_file and rename_file to QUtilJay Berkenbilt
2019-06-22Add QUtil::read_file_into_memoryJay Berkenbilt
This code was essentially duplicated between test_driver and standalone_fuzz_target_runner.
2019-06-21Fix bounds error in utf16_to_utf8 conversionJay Berkenbilt
2019-06-21Fix sign and conversion warnings (major)Jay Berkenbilt
This makes all integer type conversions that have potential data loss explicit with calls that do range checks and raise an exception. After this commit, qpdf builds with no warnings when -Wsign-conversion -Wconversion is used with gcc or clang or when -W3 -Wd4800 is used with MSVC. This significantly reduces the likelihood of potential crashes from bogus integer values. There are some parts of the code that take int when they should take size_t or an offset. Such places would make qpdf not support files with more than 2^31 of something that usually wouldn't be so large. In the event that such a file shows up and is valid, at least qpdf would raise an error in the right spot so the issue could be legitimately addressed rather than failing in some weird way because of a silent overflow condition.
2019-06-21QUtil: add unsigned int/string functionsJay Berkenbilt
2019-01-17Add QUtil::possible_repaired_encodingsJay Berkenbilt
2019-01-17Add status-reporting transcoders to QUtilJay Berkenbilt
2019-01-17QUtil::analyze_encodingJay Berkenbilt
2019-01-17Bidirectional transcoding for win, mac, pdf, utf8, utf16Jay Berkenbilt
2019-01-06Add WinAnsi and MacRoman encodingJay Berkenbilt