Jay Berkenbilt
128e41648f
Remove PointerHolder.hh from other than public header files
...
Increase to POINTERHOLDER_TRANSITION=4
2022-04-09 17:33:29 -04:00
Jay Berkenbilt
a68703b07e
Replace PointerHolder with std::shared_ptr in library sources only
...
(patrepl and cleanpatch are my own utilities)
patrepl s/PointerHolder/std::shared_ptr/g {include,libqpdf}/qpdf/*.hh
patrepl s/PointerHolder/std::shared_ptr/g libqpdf/*.cc
patrepl s/make_pointer_holder/std::make_shared/g libqpdf/*.cc
patrepl s/make_array_pointer_holder/QUtil::make_shared_array/g libqpdf/*.cc
patrepl s,qpdf/std::shared_ptr,qpdf/PointerHolder, **/*.cc **/*.hh
git restore include/qpdf/PointerHolder.hh
cleanpatch
./format-code
2022-04-09 17:33:29 -04:00
Jay Berkenbilt
08fb583449
Remove accidentally committed file
2022-04-09 14:37:00 -04:00
Jay Berkenbilt
59834db472
Add documentation for code formatting and contribution guidelines
2022-04-09 12:25:08 -04:00
Jay Berkenbilt
77e889495f
Update some code manually to get better formatting results
...
Add comments to force line breaks, parenthesize function arguments
that are contatenated strings, etc. -- these kinds of changes improve
clang-format's results and also cause emacs cc-mode to match
clang-format. After this type of change, most of the time, when
clang-format and emacs disagree, clang-format is better.
2022-04-05 14:56:19 -04:00
Jay Berkenbilt
12f1eb15ca
Programmatically apply new formatting to code
...
Run this:
for i in **/*.cc **/*.c **/*.h **/*.hh; do
clang-format < $i >| $i.new && mv $i.new $i
done
2022-04-04 08:10:40 -04:00
Jay Berkenbilt
97fc98901c
Protect gnutls headers from clang-format rearranging them
2022-04-04 08:05:39 -04:00
Jay Berkenbilt
33caed4f17
Exclude formatting on embedded native crypto
2022-04-03 17:58:36 -04:00
Jay Berkenbilt
f8e97e0ed5
Put spaces around version constraint in pkg-config ( fixes #677 )
...
Also add a pkg-config runtime test that would have caught the error.
2022-03-23 10:52:40 -04:00
Jay Berkenbilt
6dcb26d21e
Fix test for whether atomic library is needed
...
Some platforms need it for atomic<long long> but not for atomic<int>.
2022-03-19 18:19:44 -04:00
Jay Berkenbilt
820a3f04fd
Remove "lt-" workarounds
...
The executables that libtool built invoked the underlying binary with
an "lt-" prefix. The code contained numerous workarounds for testing,
which can now be removed.
2022-03-18 19:53:18 -04:00
Jay Berkenbilt
acdf5b2e7a
Update process for ABI testing
2022-03-18 19:53:18 -04:00
Jay Berkenbilt
70d0d0889b
Remove old build files
2022-03-18 19:53:18 -04:00
Jay Berkenbilt
b8aff90997
Add cmake configuration files
2022-03-18 19:53:18 -04:00
Jay Berkenbilt
3331e8921c
Switch variables to cmake in qpdf-config.h
2022-03-18 19:53:18 -04:00
Jay Berkenbilt
f030789104
Rename bits_include.cc to qpdf/bits_functions.hh
...
It's better to just make it a .hh file to reduce confusion.
2022-03-07 18:01:27 -05:00
Jay Berkenbilt
6dd8465948
TODO: solidify plans for code formatting
2022-02-26 12:08:58 -05:00
Jay Berkenbilt
6aa58d51be
Rename bits.icc to bits_include.cc
2022-02-26 12:08:58 -05:00
Jay Berkenbilt
99393e6ab7
Shorten coverage case name
...
This is so it will fit on one line after a qtest upgrade allows us to
split lines.
2022-02-26 10:18:23 -05:00
Jay Berkenbilt
03bc6535bd
generate_auto_job: protect generated files from formatting
2022-02-26 09:17:51 -05:00
Jay Berkenbilt
ae17402c52
Move default values to constexpr
...
This was mainly to get comments about defaults out of constructor
initializer lists where their fragile when a code formatter is being
used.
2022-02-26 08:16:12 -05:00
Jay Berkenbilt
36794a60cf
Allow \/ in a json string
2022-02-25 11:42:50 -05:00
Jay Berkenbilt
56b4d5a610
Use val.at instead of val[]
2022-02-22 08:40:49 -05:00
Jay Berkenbilt
f7ac591590
Recognize explicit UTF-8 strings ( fixes #654 )
2022-02-22 08:10:05 -05:00
Jay Berkenbilt
3b4b9efd21
Fix autogeneration of job.sums
2022-02-22 08:10:05 -05:00
Jay Berkenbilt
31b45b0fd4
Fix logic error with Tf when generating appearances ( fixes #655 )
2022-02-18 13:46:35 -05:00
Jay Berkenbilt
3e2109ab37
Remove special case for 0xad for 10.6.2.
2022-02-16 06:52:05 -05:00
Jay Berkenbilt
e810fe678a
Fix asymmetry between newUnicodeString and getUTF8Value
2022-02-15 19:22:35 -05:00
Jay Berkenbilt
a478cbb6dc
Silently/transparently recognize UTF-16LE as UTF-16 ( fixes #649 )
...
The PDF spec only allows UTF-16BE, but most readers seem to accept
UTF-16LE as well, so now qpdf does too.
2022-02-15 16:13:12 -05:00
Jay Berkenbilt
fbd3e56da7
Ignore -- at the top level arg parser ( fixes #652 )
...
This was unintended behavior that was added back for backward
compatibility. It is intentionally undocumented.
2022-02-15 16:13:12 -05:00
Jay Berkenbilt
1065bbb016
Handle odd PDFDoc codepoints in UTF-8 during transcoding ( fixes #650 )
...
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-15 08:32:38 -05:00
m-holger
4ff837f099
Fix tests for Form XObjects
...
Remove test for type == /XObject in QPDFObjectHandle::isFormXObject
as type value is optional (as per spec 8.10.2).
Replace code to test for /Form in QPDFJob::shouldRemoveUnreferencedResources
with a call to isFormXObject.
2022-02-10 19:47:37 -05:00
Jay Berkenbilt
235c89e037
Fix one more PDF doc encoding error for 10.6 release ( fixes #637 )
2022-02-09 05:47:58 -05:00
Jay Berkenbilt
d501e1c0d4
Only update output version from files used as input
...
If we're opening a PDF file to copy its encryption information or
attachments, its version doesn't need to influence the output version.
2022-02-08 13:49:22 -05:00
Jay Berkenbilt
f91b21c7d4
Preserve input PDF version on pages/split-pages ( fixes #610 )
2022-02-08 12:34:14 -05:00
Jay Berkenbilt
cfd5147d92
Add QPDF::getVersionAsPDFVersion
2022-02-08 12:34:14 -05:00
Jay Berkenbilt
8082af09be
Add PDFVersion class
2022-02-08 12:34:14 -05:00
Jay Berkenbilt
cb769c62e5
WHITESPACE ONLY -- expand tabs in source code
...
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-08 11:51:15 -05:00
Jay Berkenbilt
c62e8e2b28
Update for clean compile with POINTERHOLDER_TRANSITION=2
2022-02-07 17:38:22 -05:00
Jay Berkenbilt
3f22bea084
Use make_array_pointer_holder
...
This will be able to be replaced with QUtil::make_shared_array
2022-02-07 17:38:22 -05:00
Jay Berkenbilt
40f1946df8
Replace PointerHolder arrays with shared_ptr arrays where possible
...
Replace PointerHolder arrays wherever it can be done without breaking ABI.
2022-02-07 17:38:22 -05:00
Jay Berkenbilt
df2f5c6a36
Add QUtil::make_shared_array to help with PointerHolder transition
2022-02-07 14:08:46 -05:00
Jay Berkenbilt
cfaae47dc6
Add getBufferSharedPointer() to Pl_Buffer and QPDFWriter
2022-02-07 12:53:28 -05:00
m-holger
5901fcad4c
C-API expose QPDFObjectHandle::getKeyIfDict
2022-02-06 11:21:15 -05:00
m-holger
8371060340
Add method QPDFObjectHandle::getKeyIfDict
2022-02-06 11:21:15 -05:00
m-holger
2ed5f49a79
C-API expose QPDFObjectHandle::getValueAs... accessors
2022-02-05 19:40:30 -05:00
Jay Berkenbilt
af3f74de8c
Stop using std::iterator ( fixes #618 )
...
Create the typedefs directly in iterators rather than deriving from
the deprecated std::iterator class.
2022-02-05 11:29:25 -05:00
Jay Berkenbilt
7fb22740e1
Add operator ""_qpdf for creating QPDFObjectHandle literals
2022-02-05 11:29:25 -05:00
Jay Berkenbilt
b48a0ff0e8
Add qpdf_empty_pdf to C API
2022-02-05 11:29:25 -05:00
Jay Berkenbilt
8cf7f2bfb5
API contract: qpdf_get_qpdf_version() returns a static
2022-02-05 11:24:56 -05:00