Commit d7b909f97d3effc9540c35b0251bdf1c9abf187c

Authored by Jay Berkenbilt
1 parent b45e3420

Normalize whitespace in ChangeLog

Showing 1 changed file with 400 additions and 400 deletions
ChangeLog
@@ -189,569 +189,569 @@ @@ -189,569 +189,569 @@
189 189
190 2023-10-15 Jay Berkenbilt <ejb@ql.org> 190 2023-10-15 Jay Berkenbilt <ejb@ql.org>
191 191
192 - * 11.6.3: release 192 + * 11.6.3: release
193 193
194 2023-10-14 Jay Berkenbilt <ejb@ql.org> 194 2023-10-14 Jay Berkenbilt <ejb@ql.org>
195 195
196 - * Tweak linearization code to better handle files between 2 GB and  
197 - 4 GB in size. Fixes #1023. 196 + * Tweak linearization code to better handle files between 2 GB and
  197 + 4 GB in size. Fixes #1023.
198 198
199 - * Fix data loss bug: qpdf could discard a the character after an  
200 - escaped octal string consisting of less than three digits. For  
201 - content, this would only happen with QDF or when normalizing  
202 - content. Outside of content, it could have happened in any binary  
203 - string, such as /ID, if the encoding software used octal escape  
204 - strings with less than three digits. This bug was introduced  
205 - between 10.6.3 and 11.0.0. Fixes #1050. 199 + * Fix data loss bug: qpdf could discard a the character after an
  200 + escaped octal string consisting of less than three digits. For
  201 + content, this would only happen with QDF or when normalizing
  202 + content. Outside of content, it could have happened in any binary
  203 + string, such as /ID, if the encoding software used octal escape
  204 + strings with less than three digits. This bug was introduced
  205 + between 10.6.3 and 11.0.0. Fixes #1050.
206 206
207 2023-10-07 Jay Berkenbilt <ejb@ql.org> 207 2023-10-07 Jay Berkenbilt <ejb@ql.org>
208 208
209 - * 11.6.2: release 209 + * 11.6.2: release
210 210
211 - * Bug fix: when piping stream data, don't call finish on failure  
212 - if the failure was caused by a previous call to finish. Fixes  
213 - #1042. 211 + * Bug fix: when piping stream data, don't call finish on failure
  212 + if the failure was caused by a previous call to finish. Fixes
  213 + #1042.
214 214
215 - * Push .idea directory with the beginning of a sharable JetBrains  
216 - CLion configuration. 215 + * Push .idea directory with the beginning of a sharable JetBrains
  216 + CLion configuration.
217 217
218 2023-09-05 Jay Berkenbilt <ejb@ql.org> 218 2023-09-05 Jay Berkenbilt <ejb@ql.org>
219 219
220 - * 11.6.1: release 220 + * 11.6.1: release
221 221
222 - * Fix a logic error introduced in 11.6.0 in the fix to  
223 - copyForeignObject. The bug could result in some pages not being  
224 - copied. 222 + * Fix a logic error introduced in 11.6.0 in the fix to
  223 + copyForeignObject. The bug could result in some pages not being
  224 + copied.
225 225
226 2023-09-03 Jay Berkenbilt <ejb@ql.org> 226 2023-09-03 Jay Berkenbilt <ejb@ql.org>
227 227
228 - * 11.6.0: release 228 + * 11.6.0: release
229 229
230 - * ascii85 parser: ignore spaces everywhere including between ~  
231 - and >. Fixes #973. 230 + * ascii85 parser: ignore spaces everywhere including between ~
  231 + and >. Fixes #973.
232 232
233 - * Bug fix: with --pages, if one of the external files had warnings  
234 - but the main file did not, the warning was previously not taken  
235 - into consideration when determining the exit status. 233 + * Bug fix: with --pages, if one of the external files had warnings
  234 + but the main file did not, the warning was previously not taken
  235 + into consideration when determining the exit status.
236 236
237 - * Put quotation marks around the command in completion output to  
238 - better handle spaces in paths. It is not a perfect fix (ideally,  
239 - full shell-compatible quoting should be used), but it handles more  
240 - cases than the old code and should handle all reasonable cases of  
241 - qpdf being in a directory with a space in its name, which is  
242 - common in Windows. Fixes #1021. 237 + * Put quotation marks around the command in completion output to
  238 + better handle spaces in paths. It is not a perfect fix (ideally,
  239 + full shell-compatible quoting should be used), but it handles more
  240 + cases than the old code and should handle all reasonable cases of
  241 + qpdf being in a directory with a space in its name, which is
  242 + common in Windows. Fixes #1021.
243 243
244 - * Move check for random number device to runtime instead of  
245 - compile time. Since, by default, the crypto provider provides  
246 - random numbers, runtime determination of a random number device is  
247 - usually not needed. Fixes #1022. 244 + * Move check for random number device to runtime instead of
  245 + compile time. Since, by default, the crypto provider provides
  246 + random numbers, runtime determination of a random number device is
  247 + usually not needed. Fixes #1022.
248 248
249 2023-09-02 Jay Berkenbilt <ejb@ql.org> 249 2023-09-02 Jay Berkenbilt <ejb@ql.org>
250 250
251 - * Maintain links to foreign pages when copying foreign objects.  
252 - This allows hyperlinks in imported files to work. Fixes #1003. 251 + * Maintain links to foreign pages when copying foreign objects.
  252 + This allows hyperlinks in imported files to work. Fixes #1003.
253 253
254 - * Bug fix: Return a null object if an attempt is made to to copy a  
255 - foreign /Pages object with copyForeignObject. This corrects a  
256 - possible crash. Fixes #1010. 254 + * Bug fix: Return a null object if an attempt is made to to copy a
  255 + foreign /Pages object with copyForeignObject. This corrects a
  256 + possible crash. Fixes #1010.
257 257
258 - * Bug fix: Return a null object if an attempt is made to to copy a  
259 - foreign /Pages object with copyForeignObject. Fixes #1003. 258 + * Bug fix: Return a null object if an attempt is made to to copy a
  259 + foreign /Pages object with copyForeignObject. Fixes #1003.
260 260
261 - * Add /MediaBox to a page if absent. Thanks M. Holger. 261 + * Add /MediaBox to a page if absent. Thanks M. Holger.
262 262
263 - * Use std::vector internally for Pl_Buffer to  
264 - avoid incompatibility with C++20. Thanks to Zoe Clifford. Fixes #1024. 263 + * Use std::vector internally for Pl_Buffer to
  264 + avoid incompatibility with C++20. Thanks to Zoe Clifford. Fixes #1024.
265 265
266 2023-07-09 Jay Berkenbilt <ejb@ql.org> 266 2023-07-09 Jay Berkenbilt <ejb@ql.org>
267 267
268 - * 11.5.0: release 268 + * 11.5.0: release
269 269
270 - * This release consists entirely of changes made by M. Holger.  
271 - Mostly this is changes to the private API, performance  
272 - enhancements, code cleanup, and reformatting to 100 columns  
273 - instead of 80. For qpdf development, we are starting to use  
274 - JetBrains CLion, so a lot of the changes are moving us toward a  
275 - cleaner development experience in that environment. 270 + * This release consists entirely of changes made by M. Holger.
  271 + Mostly this is changes to the private API, performance
  272 + enhancements, code cleanup, and reformatting to 100 columns
  273 + instead of 80. For qpdf development, we are starting to use
  274 + JetBrains CLion, so a lot of the changes are moving us toward a
  275 + cleaner development experience in that environment.
276 276
277 2023-06-15 Jay Berkenbilt <ejb@ql.org> 277 2023-06-15 Jay Berkenbilt <ejb@ql.org>
278 278
279 - * Bug fix: when a the same page is copied multiple times, copy  
280 - the annotations rather than having multiple pages share an  
281 - annotation object. Thanks to M. Holger for the fix. Fixes #600. 279 + * Bug fix: when a the same page is copied multiple times, copy
  280 + the annotations rather than having multiple pages share an
  281 + annotation object. Thanks to M. Holger for the fix. Fixes #600.
282 282
283 2023-06-14 Jay Berkenbilt <ejb@ql.org> 283 2023-06-14 Jay Berkenbilt <ejb@ql.org>
284 284
285 - * Add "FUTURE" build option for enabling experimental APIs. Do not  
286 - package qpdf built with the FUTURE option as there are no binary  
287 - compatibility or even source compatibility guarantees. The option  
288 - is intended for developers who want to ensure that future  
289 - potentially breaking changes are compatible with their code or  
290 - provide feedback on upcoming changes. At present, the only feature  
291 - enabled by FUTURE is a move constructor for QPDFObjectHandle.  
292 - While this shouldn't break any code, it would change details about  
293 - how many copies of a specific QPDFObjectHandle were in existence,  
294 - so it could potentially break code that was relying on internal  
295 - shared pointer reference counts. Thanks to M. Holger for the idea  
296 - and contribution. 285 + * Add "FUTURE" build option for enabling experimental APIs. Do not
  286 + package qpdf built with the FUTURE option as there are no binary
  287 + compatibility or even source compatibility guarantees. The option
  288 + is intended for developers who want to ensure that future
  289 + potentially breaking changes are compatible with their code or
  290 + provide feedback on upcoming changes. At present, the only feature
  291 + enabled by FUTURE is a move constructor for QPDFObjectHandle.
  292 + While this shouldn't break any code, it would change details about
  293 + how many copies of a specific QPDFObjectHandle were in existence,
  294 + so it could potentially break code that was relying on internal
  295 + shared pointer reference counts. Thanks to M. Holger for the idea
  296 + and contribution.
297 297
298 2023-05-25 Jay Berkenbilt <ejb@ql.org> 298 2023-05-25 Jay Berkenbilt <ejb@ql.org>
299 299
300 - * Add new method Buffer::copy and deprecate Buffer copy  
301 - constructor and assignment operator. Buffer copy operations are  
302 - expensive as they always involve copying the buffer content. Use  
303 - "buffer2 = buffer1.copy();" or "Buffer buffer2{buffer1.copy()};"  
304 - to make it explicit that copying is intended. This change was  
305 - contributed by M. Holger. 300 + * Add new method Buffer::copy and deprecate Buffer copy
  301 + constructor and assignment operator. Buffer copy operations are
  302 + expensive as they always involve copying the buffer content. Use
  303 + "buffer2 = buffer1.copy();" or "Buffer buffer2{buffer1.copy()};"
  304 + to make it explicit that copying is intended. This change was
  305 + contributed by M. Holger.
306 306
307 2023-05-21 Jay Berkenbilt <ejb@ql.org> 307 2023-05-21 Jay Berkenbilt <ejb@ql.org>
308 308
309 - * 11.4.0: release 309 + * 11.4.0: release
310 310
311 2023-05-20 Jay Berkenbilt <ejb@ql.org> 311 2023-05-20 Jay Berkenbilt <ejb@ql.org>
312 312
313 - * From M. Holger: add QPDF::newReserved as a better alternative to  
314 - QPDFObjectHandle::newReserved. The operation of creating a new  
315 - reserved object fits better in the QPDF API. The old call just  
316 - delegates to the new one. 313 + * From M. Holger: add QPDF::newReserved as a better alternative to
  314 + QPDFObjectHandle::newReserved. The operation of creating a new
  315 + reserved object fits better in the QPDF API. The old call just
  316 + delegates to the new one.
317 317
318 2023-05-13 Jay Berkenbilt <ejb@ql.org> 318 2023-05-13 Jay Berkenbilt <ejb@ql.org>
319 319
320 - * When an annotation dictionary's appearance dictionary (`/AP`)  
321 - has a key that is a stream, disregard `/AS` (which is supposed to  
322 - point to a subkey). This enables qpdf to not ignore annotations  
323 - that have incorrect values for `/AS` when the appearance stream is  
324 - directly in the `/AP` dictionary instead of in a subkey. Fixes  
325 - #949. 320 + * When an annotation dictionary's appearance dictionary (`/AP`)
  321 + has a key that is a stream, disregard `/AS` (which is supposed to
  322 + point to a subkey). This enables qpdf to not ignore annotations
  323 + that have incorrect values for `/AS` when the appearance stream is
  324 + directly in the `/AP` dictionary instead of in a subkey. Fixes
  325 + #949.
326 326
327 2023-04-02 Jay Berkenbilt <ejb@ql.org> 327 2023-04-02 Jay Berkenbilt <ejb@ql.org>
328 - * Allow QPDFJob's workflow to be split into a reading phase and a  
329 - writing phase to allow the caller to operate on the QPDF object  
330 - before it is written. This adds methods QPDFJob::createQPDF and  
331 - QPDFJob::writeQPDF and corresponding C API functions  
332 - qpdfjob_create_qpdf and qpdfjob_write_qpdf. Thanks to M. Holger  
333 - for the contribution. 328 + * Allow QPDFJob's workflow to be split into a reading phase and a
  329 + writing phase to allow the caller to operate on the QPDF object
  330 + before it is written. This adds methods QPDFJob::createQPDF and
  331 + QPDFJob::writeQPDF and corresponding C API functions
  332 + qpdfjob_create_qpdf and qpdfjob_write_qpdf. Thanks to M. Holger
  333 + for the contribution.
334 334
335 2023-04-01 Jay Berkenbilt <ejb@ql.org> 335 2023-04-01 Jay Berkenbilt <ejb@ql.org>
336 - * From M. Holger: throw a logic error if an uninitialized or  
337 - foreign QPDFObjectHandle is added to an array. 336 + * From M. Holger: throw a logic error if an uninitialized or
  337 + foreign QPDFObjectHandle is added to an array.
338 338
339 2023-03-18 Jay Berkenbilt <ejb@ql.org> 339 2023-03-18 Jay Berkenbilt <ejb@ql.org>
340 340
341 - * Enhance --optimize-images to support images nested inside of  
342 - form XObjects. Thanks to Connor Osborne (github user cdosborn) for  
343 - the contribution. Fixes #923. 341 + * Enhance --optimize-images to support images nested inside of
  342 + form XObjects. Thanks to Connor Osborne (github user cdosborn) for
  343 + the contribution. Fixes #923.
344 344
345 2023-02-25 Jay Berkenbilt <ejb@ql.org> 345 2023-02-25 Jay Berkenbilt <ejb@ql.org>
346 346
347 - * 11.3.0: release 347 + * 11.3.0: release
348 348
349 - * When performing overlay or underlay operations, convert the  
350 - original page to a form XObject instead of simply isolating its  
351 - contents with q/Q operators. This prevents unbalanced q/Q  
352 - operators in any of the original pages from messing up the  
353 - graphics state of anything that is overlaid on top of it. Fixes  
354 - #904. 349 + * When performing overlay or underlay operations, convert the
  350 + original page to a form XObject instead of simply isolating its
  351 + contents with q/Q operators. This prevents unbalanced q/Q
  352 + operators in any of the original pages from messing up the
  353 + graphics state of anything that is overlaid on top of it. Fixes
  354 + #904.
355 355
356 2023-02-18 Jay Berkenbilt <ejb@ql.org> 356 2023-02-18 Jay Berkenbilt <ejb@ql.org>
357 357
358 - * Treat all linearization errors and warnings as warnings, and  
359 - issue them through the normal warning system using the new error  
360 - code qpdf_e_linearization. That means that --no-warn will suppress  
361 - them, and the file name is included in the warning. Fixes #851. 358 + * Treat all linearization errors and warnings as warnings, and
  359 + issue them through the normal warning system using the new error
  360 + code qpdf_e_linearization. That means that --no-warn will suppress
  361 + them, and the file name is included in the warning. Fixes #851.
362 362
363 2023-01-28 Jay Berkenbilt <ejb@ql.org> 363 2023-01-28 Jay Berkenbilt <ejb@ql.org>
364 364
365 - * New option --remove-restrictions removes security restrictions  
366 - from digitally signed files. Fixes #833. 365 + * New option --remove-restrictions removes security restrictions
  366 + from digitally signed files. Fixes #833.
367 367
368 2023-01-09 Jay Berkenbilt <ejb@ql.org> 368 2023-01-09 Jay Berkenbilt <ejb@ql.org>
369 369
370 - * Bug fix: flatten annotations should handle a page with no  
371 - /Resources key. Fixes #827. 370 + * Bug fix: flatten annotations should handle a page with no
  371 + /Resources key. Fixes #827.
372 372
373 2022-11-20 Jay Berkenbilt <ejb@ql.org> 373 2022-11-20 Jay Berkenbilt <ejb@ql.org>
374 374
375 - * 11.2.0: release 375 + * 11.2.0: release
376 376
377 - * Add a few convenience methods to QPDFTokenizer::Token for  
378 - checking token types. thanks to M. Holger for the contribution. 377 + * Add a few convenience methods to QPDFTokenizer::Token for
  378 + checking token types. thanks to M. Holger for the contribution.
379 379
380 - * Add stream creation methods to the QPDF class as a better  
381 - alternative to the ones in the QPDFObjectHandle class. Thanks to  
382 - M. Holger for the contribution. 380 + * Add stream creation methods to the QPDF class as a better
  381 + alternative to the ones in the QPDFObjectHandle class. Thanks to
  382 + M. Holger for the contribution.
383 383
384 2022-11-19 Jay Berkenbilt <ejb@ql.org> 384 2022-11-19 Jay Berkenbilt <ejb@ql.org>
385 385
386 - * Bug fix: handle special case of an earlier xref stream object's  
387 - object number being reused by an update made by appending the  
388 - file. Fixes #809. 386 + * Bug fix: handle special case of an earlier xref stream object's
  387 + object number being reused by an update made by appending the
  388 + file. Fixes #809.
389 389
390 2022-10-08 Jay Berkenbilt <ejb@ql.org> 390 2022-10-08 Jay Berkenbilt <ejb@ql.org>
391 391
392 - * Fix major performance bug with the openssl crypto provider when  
393 - using OpenSSL 3. The legacy loader and rc4 algorithm was being  
394 - loaded with every call to the crypto provider instead of once in  
395 - the life of the program. Fixes #798. 392 + * Fix major performance bug with the openssl crypto provider when
  393 + using OpenSSL 3. The legacy loader and rc4 algorithm was being
  394 + loaded with every call to the crypto provider instead of once in
  395 + the life of the program. Fixes #798.
396 396
397 - * performance_check: add --test option to limit which tests are  
398 - run. 397 + * performance_check: add --test option to limit which tests are
  398 + run.
399 399
400 2022-10-06 Jay Berkenbilt <ejb@ql.org> 400 2022-10-06 Jay Berkenbilt <ejb@ql.org>
401 401
402 - * Change minimum required C++ version from C++-14 to C++-17. 402 + * Change minimum required C++ version from C++-14 to C++-17.
403 403
404 - * Fix another symbol export issue with the MinGW build. 404 + * Fix another symbol export issue with the MinGW build.
405 405
406 2022-10-01 Jay Berkenbilt <ejb@ql.org> 406 2022-10-01 Jay Berkenbilt <ejb@ql.org>
407 407
408 - * 11.1.1: release 408 + * 11.1.1: release
409 409
410 2022-09-27 Jay Berkenbilt <ejb@ql.org> 410 2022-09-27 Jay Berkenbilt <ejb@ql.org>
411 411
412 - * Bug fix: avoid having the AppImage discard the first argument  
413 - when renamed to one of the embedded executables. Fixes #789. 412 + * Bug fix: avoid having the AppImage discard the first argument
  413 + when renamed to one of the embedded executables. Fixes #789.
414 414
415 - * Add AppImage-specific tests to CI. These test different  
416 - invocation styles and loading of the proper shared library. 415 + * Add AppImage-specific tests to CI. These test different
  416 + invocation styles and loading of the proper shared library.
417 417
418 2022-09-26 Jay Berkenbilt <ejb@ql.org> 418 2022-09-26 Jay Berkenbilt <ejb@ql.org>
419 419
420 - * Bug fix: avoid using PDF Doc encoding for strings whose PDF Doc  
421 - encoding representation starts with UTF-16 or UTF-8 markers. Fixes  
422 - #778. 420 + * Bug fix: avoid using PDF Doc encoding for strings whose PDF Doc
  421 + encoding representation starts with UTF-16 or UTF-8 markers. Fixes
  422 + #778.
423 423
424 2022-09-27 Jay Berkenbilt <ejb@ql.org> 424 2022-09-27 Jay Berkenbilt <ejb@ql.org>
425 425
426 - * Add tests to CI for char being unsigned by default. 426 + * Add tests to CI for char being unsigned by default.
427 427
428 2022-09-14 Jay Berkenbilt <ejb@ql.org> 428 2022-09-14 Jay Berkenbilt <ejb@ql.org>
429 429
430 - * 11.1.0: release 430 + * 11.1.0: release
431 431
432 - * Add notes to documentation clarifying that installing the dev  
433 - component usually requires the lib component to also be installed. 432 + * Add notes to documentation clarifying that installing the dev
  433 + component usually requires the lib component to also be installed.
434 434
435 - * Set CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON in cmake to  
436 - (hopefully) solve the problem of older installed qpdf headers  
437 - interfering with building qpdf from source. Fixes #763. 435 + * Set CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON in cmake to
  436 + (hopefully) solve the problem of older installed qpdf headers
  437 + interfering with building qpdf from source. Fixes #763.
438 438
439 2022-09-12 Jay Berkenbilt <ejb@ql.org> 439 2022-09-12 Jay Berkenbilt <ejb@ql.org>
440 440
441 - * Add some missing DLL exports that only affect the Windows build. 441 + * Add some missing DLL exports that only affect the Windows build.
442 442
443 - * Remove compile-time test for LL_FMT. It's unlikely that any  
444 - compiler new enough to build qpdf still doesn't support %lld. 443 + * Remove compile-time test for LL_FMT. It's unlikely that any
  444 + compiler new enough to build qpdf still doesn't support %lld.
445 445
446 2022-09-10 Jay Berkenbilt <ejb@ql.org> 446 2022-09-10 Jay Berkenbilt <ejb@ql.org>
447 447
448 - * 11.0.0: release 448 + * 11.0.0: release
449 449
450 2022-09-09 Jay Berkenbilt <ejb@ql.org> 450 2022-09-09 Jay Berkenbilt <ejb@ql.org>
451 451
452 - * Add QPDFObjectHandle::isSameObjectAs to test whether two  
453 - QPDFObjectHandle objects point to the same underlying object. 452 + * Add QPDFObjectHandle::isSameObjectAs to test whether two
  453 + QPDFObjectHandle objects point to the same underlying object.
454 454
455 - * Expose ability to create custom loggers and to get and set the  
456 - logger for QPDF and QPDFJob through the C API. 455 + * Expose ability to create custom loggers and to get and set the
  456 + logger for QPDF and QPDFJob through the C API.
457 457
458 2022-09-08 Jay Berkenbilt <ejb@ql.org> 458 2022-09-08 Jay Berkenbilt <ejb@ql.org>
459 459
460 - * Added new functions to the C API to support qpdf JSON:  
461 - qpdf_create_from_json_file, qpdf_create_from_json_data,  
462 - qpdf_update_from_json_file, qpdf_update_from_json_data, and  
463 - qpdf_write_json. Examples can be found in qpdf-ctest.c (in the  
464 - source tree), tests 42 through 47. 460 + * Added new functions to the C API to support qpdf JSON:
  461 + qpdf_create_from_json_file, qpdf_create_from_json_data,
  462 + qpdf_update_from_json_file, qpdf_update_from_json_data, and
  463 + qpdf_write_json. Examples can be found in qpdf-ctest.c (in the
  464 + source tree), tests 42 through 47.
465 465
466 - * Add QPDFObjectHandle::isDestroyed() to test whether an indirect  
467 - object was from a QPDF that has been destroyed. 466 + * Add QPDFObjectHandle::isDestroyed() to test whether an indirect
  467 + object was from a QPDF that has been destroyed.
468 468
469 2022-09-07 Jay Berkenbilt <ejb@ql.org> 469 2022-09-07 Jay Berkenbilt <ejb@ql.org>
470 470
471 - * Add QPDFObjectHandle::getQPDF(), which returns a reference, as  
472 - an alternative to QPDFObjectHandle::getOwningQPDF(). 471 + * Add QPDFObjectHandle::getQPDF(), which returns a reference, as
  472 + an alternative to QPDFObjectHandle::getOwningQPDF().
473 473
474 2022-09-06 Jay Berkenbilt <ejb@ql.org> 474 2022-09-06 Jay Berkenbilt <ejb@ql.org>
475 475
476 - * For all bounding box methods in QPDFPageObjectHelper other than  
477 - MediaBox, add a parameter `copy_if_fallback`, and add comments  
478 - explaining in depth exactly what copy_if_shared and  
479 - copy_if_fallback mean. Fixes #664. 476 + * For all bounding box methods in QPDFPageObjectHelper other than
  477 + MediaBox, add a parameter `copy_if_fallback`, and add comments
  478 + explaining in depth exactly what copy_if_shared and
  479 + copy_if_fallback mean. Fixes #664.
480 480
481 - * Add new methods getArtBox and getBleedBox to  
482 - QPDFPageObjectHelper, completing the set of bounding box methods. 481 + * Add new methods getArtBox and getBleedBox to
  482 + QPDFPageObjectHelper, completing the set of bounding box methods.
483 483
484 - * The --show-encryption option now works even if a correct  
485 - password is not supplied. If you were using --show-encryption to  
486 - test whether you have the right password, use --requires-password  
487 - instead. Fixes #598. 484 + * The --show-encryption option now works even if a correct
  485 + password is not supplied. If you were using --show-encryption to
  486 + test whether you have the right password, use --requires-password
  487 + instead. Fixes #598.
488 488
489 2022-09-05 Jay Berkenbilt <ejb@ql.org> 489 2022-09-05 Jay Berkenbilt <ejb@ql.org>
490 490
491 - * Add a move constructor to Buffer, making it possible to move  
492 - rather than copy the internal buffer. Thanks to jbarlow83 for the  
493 - contribution. 491 + * Add a move constructor to Buffer, making it possible to move
  492 + rather than copy the internal buffer. Thanks to jbarlow83 for the
  493 + contribution.
494 494
495 2022-09-02 Jay Berkenbilt <ejb@ql.org> 495 2022-09-02 Jay Berkenbilt <ejb@ql.org>
496 496
497 - * Add new QPDF::create() factory method that returns  
498 - std::shared_ptr<QPDF>. 497 + * Add new QPDF::create() factory method that returns
  498 + std::shared_ptr<QPDF>.
499 499
500 - * Prevent copying/assigning to QPDF objects in the API. It has  
501 - never been safe to do this, but the API wasn't preventing it. 500 + * Prevent copying/assigning to QPDF objects in the API. It has
  501 + never been safe to do this, but the API wasn't preventing it.
502 502
503 2022-09-01 Jay Berkenbilt <ejb@ql.org> 503 2022-09-01 Jay Berkenbilt <ejb@ql.org>
504 504
505 - * Remove QPDFObject.hh from include/qpdf. The only reason to  
506 - include was to get QPDFObject::object_type_e. Instead, include  
507 - qpdf/Constants.h, and change `QPDFObject::ot_` to `::ot_`. 505 + * Remove QPDFObject.hh from include/qpdf. The only reason to
  506 + include was to get QPDFObject::object_type_e. Instead, include
  507 + qpdf/Constants.h, and change `QPDFObject::ot_` to `::ot_`.
508 508
509 - * More optimizations and cleanup from m-holger (#726, #730)  
510 - including major refactor of QPDF's internal representations of  
511 - objects. In addition to a large performance improvement, this also  
512 - made it possible for QPDFObjectHandle::getOwningQPDF() to return a  
513 - null pointer if the owning QPDF had been destroyed. (A more  
514 - complete solution to this problem will be introduced for qpdf 12.)  
515 - This work also paves the way for a future alternative to  
516 - QPDFObjectHandle that is more idiomatic C++ and has greater type  
517 - safety. 509 + * More optimizations and cleanup from m-holger (#726, #730)
  510 + including major refactor of QPDF's internal representations of
  511 + objects. In addition to a large performance improvement, this also
  512 + made it possible for QPDFObjectHandle::getOwningQPDF() to return a
  513 + null pointer if the owning QPDF had been destroyed. (A more
  514 + complete solution to this problem will be introduced for qpdf 12.)
  515 + This work also paves the way for a future alternative to
  516 + QPDFObjectHandle that is more idiomatic C++ and has greater type
  517 + safety.
518 518
519 2022-08-31 Jay Berkenbilt <ejb@ql.org> 519 2022-08-31 Jay Berkenbilt <ejb@ql.org>
520 520
521 - * From m-holger (#729): refactor QPDF's parser into a new  
522 - QPDFParser class, cleaning the code, significantly improving  
523 - performance. 521 + * From m-holger (#729): refactor QPDF's parser into a new
  522 + QPDFParser class, cleaning the code, significantly improving
  523 + performance.
524 524
525 2022-08-27 Jay Berkenbilt <ejb@ql.org> 525 2022-08-27 Jay Berkenbilt <ejb@ql.org>
526 526
527 - * From m-holger: major refactoring of QPDFTokenizer to improve  
528 - readability and to optimize performance. This also included some  
529 - optimizations to some InputSource classes. Thanks for this  
530 - excellent contribution. Fixes #749, #442. 527 + * From m-holger: major refactoring of QPDFTokenizer to improve
  528 + readability and to optimize performance. This also included some
  529 + optimizations to some InputSource classes. Thanks for this
  530 + excellent contribution. Fixes #749, #442.
531 531
532 2022-08-07 Jay Berkenbilt <ejb@ql.org> 532 2022-08-07 Jay Berkenbilt <ejb@ql.org>
533 533
534 - * Add new build configuration option ENABLE_QTC, which is off by  
535 - default when not running in MAINTAINER_MODE. When this is off,  
536 - QTC coverage calls sprinkled throughout the qpdf source code are  
537 - compiled out for increased performance. See "Build Options" in the  
538 - manual for a discussion. Fixes #714. 534 + * Add new build configuration option ENABLE_QTC, which is off by
  535 + default when not running in MAINTAINER_MODE. When this is off,
  536 + QTC coverage calls sprinkled throughout the qpdf source code are
  537 + compiled out for increased performance. See "Build Options" in the
  538 + manual for a discussion. Fixes #714.
539 539
540 2022-08-06 Jay Berkenbilt <ejb@ql.org> 540 2022-08-06 Jay Berkenbilt <ejb@ql.org>
541 541
542 - * Added by m-holger: QPDF::getObject() method as a simpler form of  
543 - getObjectByID or getObjectByObjGen. The older methods are being  
544 - retained for compatibility and are not deprecated. 542 + * Added by m-holger: QPDF::getObject() method as a simpler form of
  543 + getObjectByID or getObjectByObjGen. The older methods are being
  544 + retained for compatibility and are not deprecated.
545 545
546 2022-07-24 Jay Berkenbilt <ejb@ql.org> 546 2022-07-24 Jay Berkenbilt <ejb@ql.org>
547 547
548 - * include/qpdf/JSON.hh: Schema validation: allow a single item to  
549 - appear anywhere that the schema has an array of a single item.  
550 - This makes it possible to change an element of the schema from an  
551 - item to an array to allow the data to accept an array where a  
552 - single value was previously required. This change is needed to  
553 - allow QPDFJob JSON to start accepting multiple items where a  
554 - single item used to be expected without breaking backward  
555 - compatibility. Without this change, the earlier fix to  
556 - removeAttachment would be a breaking change. Also allow the schema  
557 - to contain a multi-element array, which means that the output has  
558 - to have an array of the same length in the corresponding location,  
559 - and each element is validated against the corresponding schema  
560 - element.  
561 -  
562 - * QPDFObjectHandle: for the methods insertItem, appendItem,  
563 - eraseItem, replaceKey, and removeKey, add a corresponding  
564 - "AndGetNew" and/or "AndGetOld" methods. The ones that end with  
565 - "AndGetNew" return the newly added item. The ones that end with  
566 - "AndGetOld" return the old value. The AndGetNew methods make it  
567 - possible to create a new object, add it to an array or dictionary,  
568 - and get a handle to it all in one line. The AndGetOld methods make  
569 - it easier to retrieve an old value when removing or replacing it.  
570 -  
571 - * Thanks to m-holger for doing significant cleanup of private APIs  
572 - and internals around QPDFObjGen and for significantly improving  
573 - the performance of QPDFObjGen -- See #731. This includes a few  
574 - user-visible changes:  
575 - - Addition of QPDFObjectHandle::StreamDataProvider::provideStreamData  
576 - overloads that take QPDFObjGen  
577 - - Addition of an optional argument to QPDFObjGen::unparse allowing  
578 - specification of a separator character, with the default  
579 - resulting in the old behavior  
580 - Examples have been updated to use improved APIs. The old  
581 - provideStreamData overloads will continue to be supported, so  
582 - updating older code to use the new interfaces is entirely at the  
583 - programmer's discretion. 548 + * include/qpdf/JSON.hh: Schema validation: allow a single item to
  549 + appear anywhere that the schema has an array of a single item.
  550 + This makes it possible to change an element of the schema from an
  551 + item to an array to allow the data to accept an array where a
  552 + single value was previously required. This change is needed to
  553 + allow QPDFJob JSON to start accepting multiple items where a
  554 + single item used to be expected without breaking backward
  555 + compatibility. Without this change, the earlier fix to
  556 + removeAttachment would be a breaking change. Also allow the schema
  557 + to contain a multi-element array, which means that the output has
  558 + to have an array of the same length in the corresponding location,
  559 + and each element is validated against the corresponding schema
  560 + element.
  561 +
  562 + * QPDFObjectHandle: for the methods insertItem, appendItem,
  563 + eraseItem, replaceKey, and removeKey, add a corresponding
  564 + "AndGetNew" and/or "AndGetOld" methods. The ones that end with
  565 + "AndGetNew" return the newly added item. The ones that end with
  566 + "AndGetOld" return the old value. The AndGetNew methods make it
  567 + possible to create a new object, add it to an array or dictionary,
  568 + and get a handle to it all in one line. The AndGetOld methods make
  569 + it easier to retrieve an old value when removing or replacing it.
  570 +
  571 + * Thanks to m-holger for doing significant cleanup of private APIs
  572 + and internals around QPDFObjGen and for significantly improving
  573 + the performance of QPDFObjGen -- See #731. This includes a few
  574 + user-visible changes:
  575 + - Addition of QPDFObjectHandle::StreamDataProvider::provideStreamData
  576 + overloads that take QPDFObjGen
  577 + - Addition of an optional argument to QPDFObjGen::unparse allowing
  578 + specification of a separator character, with the default
  579 + resulting in the old behavior
  580 + Examples have been updated to use improved APIs. The old
  581 + provideStreamData overloads will continue to be supported, so
  582 + updating older code to use the new interfaces is entirely at the
  583 + programmer's discretion.
584 584
585 2022-06-25 Jay Berkenbilt <ejb@ql.org> 585 2022-06-25 Jay Berkenbilt <ejb@ql.org>
586 586
587 - * Add tracking methods QPDF::everCalledGetAllPages() and  
588 - QPDF::everPushedInheritedAttributesToPages(). Since those methods  
589 - may have the side effect of creating new objects and replace  
590 - objects in various places in the pages tree, it's useful to be  
591 - able to find out whether they've ever been called. 587 + * Add tracking methods QPDF::everCalledGetAllPages() and
  588 + QPDF::everPushedInheritedAttributesToPages(). Since those methods
  589 + may have the side effect of creating new objects and replace
  590 + objects in various places in the pages tree, it's useful to be
  591 + able to find out whether they've ever been called.
592 592
593 2022-06-18 Jay Berkenbilt <ejb@ql.org> 593 2022-06-18 Jay Berkenbilt <ejb@ql.org>
594 594
595 - * Add QPDFJob::registerProgressReporter, making it possible to  
596 - override the progress reporter that is used when --progress (or  
597 - the equivalent) is configured with QPDFJob. This is  
598 - qpdfjob_register_progress_reporter in the C API. 595 + * Add QPDFJob::registerProgressReporter, making it possible to
  596 + override the progress reporter that is used when --progress (or
  597 + the equivalent) is configured with QPDFJob. This is
  598 + qpdfjob_register_progress_reporter in the C API.
599 599
600 - * Add examples that show how to capture QPDFJob's output by  
601 - configuring the default logger (qpdfjob-save-attachment.cc,  
602 - qpdfjob-c-save-attachment.c). Fixes #691. 600 + * Add examples that show how to capture QPDFJob's output by
  601 + configuring the default logger (qpdfjob-save-attachment.cc,
  602 + qpdfjob-c-save-attachment.c). Fixes #691.
603 603
604 - * Add C API for QPDFLogger -- see qpdflogger-c.h 604 + * Add C API for QPDFLogger -- see qpdflogger-c.h
605 605
606 - * Add additional qpdfjob C API functions take a handle. 606 + * Add additional qpdfjob C API functions take a handle.
607 607
608 - * Add qpdf_exit_code_e to Constants.h so that exit codes from  
609 - QPDFJob are accessible to the C API. 608 + * Add qpdf_exit_code_e to Constants.h so that exit codes from
  609 + QPDFJob are accessible to the C API.
610 610
611 - * When --progress or --verbose is combined with writing to  
612 - standard output, progress reporting and verbose messages go to  
613 - standard error. Previously it was disabled in this case. 611 + * When --progress or --verbose is combined with writing to
  612 + standard output, progress reporting and verbose messages go to
  613 + standard error. Previously it was disabled in this case.
614 614
615 2022-06-05 Jay Berkenbilt <ejb@ql.org> 615 2022-06-05 Jay Berkenbilt <ejb@ql.org>
616 616
617 - * QPDFJob: API breaking change: QPDFJob::doIfVerbose passes a  
618 - Pipeline& rather than a std::ostream& to the the callback  
619 - function. 617 + * QPDFJob: API breaking change: QPDFJob::doIfVerbose passes a
  618 + Pipeline& rather than a std::ostream& to the the callback
  619 + function.
620 620
621 - * Add integer types to pipeline's operator<<: short, int, long,  
622 - long long, unsigned short, unsigned int, unsigned long, unsigned  
623 - long long. 621 + * Add integer types to pipeline's operator<<: short, int, long,
  622 + long long, unsigned short, unsigned int, unsigned long, unsigned
  623 + long long.
624 624
625 2022-05-30 Jay Berkenbilt <ejb@ql.org> 625 2022-05-30 Jay Berkenbilt <ejb@ql.org>
626 626
627 - * qpdf JSON is now at version 2. New command-line arguments:  
628 - --json-output, --json-input, --update-from-json. New methods  
629 - QPDF::writeJSON, QPDF::createFromJSON, QPDF::updateFromJSON. For  
630 - details, see the "qpdf JSON" chapter of the manual. 627 + * qpdf JSON is now at version 2. New command-line arguments:
  628 + --json-output, --json-input, --update-from-json. New methods
  629 + QPDF::writeJSON, QPDF::createFromJSON, QPDF::updateFromJSON. For
  630 + details, see the "qpdf JSON" chapter of the manual.
631 631
632 - * When showing encryption data in json output, when the user  
633 - password was recovered with by the owner password and the  
634 - specified password does not match the user password, reveal the  
635 - user password. This is not possible with 256-bit keys. 632 + * When showing encryption data in json output, when the user
  633 + password was recovered with by the owner password and the
  634 + specified password does not match the user password, reveal the
  635 + user password. This is not possible with 256-bit keys.
636 636
637 - * Include additional information in --list-attachments --verbose  
638 - and in --json --json-key=attachments. 637 + * Include additional information in --list-attachments --verbose
  638 + and in --json --json-key=attachments.
639 639
640 - * Add QUtil::qpdf_time_to_iso8601 and QUtil::pdf_time_to_iso8601  
641 - for converting PDF/qpdf timestamps to ISO-8601 date format. 640 + * Add QUtil::qpdf_time_to_iso8601 and QUtil::pdf_time_to_iso8601
  641 + for converting PDF/qpdf timestamps to ISO-8601 date format.
642 642
643 2022-05-18 Jay Berkenbilt <ejb@ql.org> 643 2022-05-18 Jay Berkenbilt <ejb@ql.org>
644 644
645 - * Add QUtil::FileCloser to the public API. This is a simple inline  
646 - class to help with automatic file closing. 645 + * Add QUtil::FileCloser to the public API. This is a simple inline
  646 + class to help with automatic file closing.
647 647
648 2022-05-17 Jay Berkenbilt <ejb@ql.org> 648 2022-05-17 Jay Berkenbilt <ejb@ql.org>
649 649
650 - * Allow passing *uninitialized* (not null) objects to  
651 - replaceStreamData as filter and/or decode_parms to leave any  
652 - existing values for /Filter and /DecodeParms untouched. 650 + * Allow passing *uninitialized* (not null) objects to
  651 + replaceStreamData as filter and/or decode_parms to leave any
  652 + existing values for /Filter and /DecodeParms untouched.
653 653
654 2022-05-15 Jay Berkenbilt <ejb@ql.org> 654 2022-05-15 Jay Berkenbilt <ejb@ql.org>
655 655
656 - * Add QUtil::is_long_long to test whether a string can be  
657 - converted to a long long and back without loss of information. 656 + * Add QUtil::is_long_long to test whether a string can be
  657 + converted to a long long and back without loss of information.
658 658
659 2022-05-04 Jay Berkenbilt <ejb@ql.org> 659 2022-05-04 Jay Berkenbilt <ejb@ql.org>
660 660
661 - * JSON: add a new "blob" type that takes a function to write data  
662 - into. The blob is serialized as a base64-encoded representation of  
663 - whatever is written to the function. 661 + * JSON: add a new "blob" type that takes a function to write data
  662 + into. The blob is serialized as a base64-encoded representation of
  663 + whatever is written to the function.
664 664
665 - * FileInputSource has new constructors that eliminate the need to  
666 - call setFilename or setFile in most cases. 665 + * FileInputSource has new constructors that eliminate the need to
  666 + call setFilename or setFile in most cases.
667 667
668 - * Enhance JSON by adding a write method that takes a Pipeline* and  
669 - depth, and add several helper methods to make it easier to write  
670 - large amounts of JSON incrementally without having to have the  
671 - whole thing in memory. 668 + * Enhance JSON by adding a write method that takes a Pipeline* and
  669 + depth, and add several helper methods to make it easier to write
  670 + large amounts of JSON incrementally without having to have the
  671 + whole thing in memory.
672 672
673 - * json v1 output: make "pages" and "objects" consistent.  
674 - Previously, "objects" always reflected the objects exactly as they  
675 - appeared in the original file, while "pages" reflected objects  
676 - after repair of the pages tree. This could be misleading. Now, if  
677 - "pages" is specified, "objects" shows the effects of repairing the  
678 - page tree, and if not, it doesn't. This makes no difference for  
679 - correct PDF files that don't have problems in the pages tree. JSON  
680 - v2 will behave in a similar way. 673 + * json v1 output: make "pages" and "objects" consistent.
  674 + Previously, "objects" always reflected the objects exactly as they
  675 + appeared in the original file, while "pages" reflected objects
  676 + after repair of the pages tree. This could be misleading. Now, if
  677 + "pages" is specified, "objects" shows the effects of repairing the
  678 + page tree, and if not, it doesn't. This makes no difference for
  679 + correct PDF files that don't have problems in the pages tree. JSON
  680 + v2 will behave in a similar way.
681 681
682 2022-05-03 Jay Berkenbilt <ejb@ql.org> 682 2022-05-03 Jay Berkenbilt <ejb@ql.org>
683 683
684 - * Add new Pipeline class Pl_String which appends to a std::string&  
685 - passed to it at construction. 684 + * Add new Pipeline class Pl_String which appends to a std::string&
  685 + passed to it at construction.
686 686
687 - * Add new Pipeline class Pl_OStream, similar to Pl_StdioFile but  
688 - takes a std::ostream instead of a FILE*. 687 + * Add new Pipeline class Pl_OStream, similar to Pl_StdioFile but
  688 + takes a std::ostream instead of a FILE*.
689 689
690 - * Add new convenience methods to Pipeline: writeCStr and  
691 - writeString. Also add a limit << operator that takes C strings and  
692 - std::strings. Also add an overloaded version of write that takes  
693 - "char const*". 690 + * Add new convenience methods to Pipeline: writeCStr and
  691 + writeString. Also add a limit << operator that takes C strings and
  692 + std::strings. Also add an overloaded version of write that takes
  693 + "char const*".
694 694
695 - * API change: Pipeline::write now takes "unsigned char const *"  
696 - instead of "unsigned char*". Callers shouldn't have to change  
697 - anything, though can stop using writable strings or  
698 - QUtil::unsigned_char_pointer. If you have implemented your own  
699 - pipelines, you should change your write method to take a const  
700 - pointer. 695 + * API change: Pipeline::write now takes "unsigned char const *"
  696 + instead of "unsigned char*". Callers shouldn't have to change
  697 + anything, though can stop using writable strings or
  698 + QUtil::unsigned_char_pointer. If you have implemented your own
  699 + pipelines, you should change your write method to take a const
  700 + pointer.
701 701
702 2022-05-01 Jay Berkenbilt <ejb@ql.org> 702 2022-05-01 Jay Berkenbilt <ejb@ql.org>
703 703
704 - * JSON: add reactors to the JSON parser, making it possible to  
705 - react to JSON parsing events as they occur and to block the  
706 - results from being stored. This makes it possible to incrementally  
707 - parse arbitrarily large JSON inputs. 704 + * JSON: add reactors to the JSON parser, making it possible to
  705 + react to JSON parsing events as they occur and to block the
  706 + results from being stored. This makes it possible to incrementally
  707 + parse arbitrarily large JSON inputs.
708 708
709 2022-04-30 Jay Berkenbilt <ejb@ql.org> 709 2022-04-30 Jay Berkenbilt <ejb@ql.org>
710 710
711 - * QPDFWriter: change encryption API calls  
712 - - Remove deprecated versions of setR*EncryptionParameters  
713 - methods from before qpdf 8.4.0  
714 - - Replace setR2EncryptionParameters with  
715 - setR2EncryptionParametersInsecure  
716 - - Replace setR3EncryptionParameters with  
717 - setR3EncryptionParametersInsecure  
718 - - Replace setR4EncryptionParameters with  
719 - setR4EncryptionParametersInsecure  
720 -  
721 - * C API: change encryption API calls to match C++ interface  
722 - - Remove pre-8.4.0 functions:  
723 - - qpdf_set_r3_encryption_parameters  
724 - - qpdf_set_r4_encryption_parameters  
725 - - qpdf_set_r5_encryption_parameters  
726 - - qpdf_set_r6_encryption_parameters  
727 - - Add "_insecure" to insecure encryption triggers:  
728 - - Replace void qpdf_set_r2_encryption_parameters  
729 - with qpdf_set_r2_encryption_parameters_insecure  
730 - - Replace void qpdf_set_r3_encryption_parameters2  
731 - with qpdf_set_r3_encryption_parameters_insecure  
732 - - Replace void qpdf_set_r4_encryption_parameters2  
733 - with qpdf_set_r4_encryption_parameters_insecure  
734 -  
735 - * Make attempting to write encrypted files that use RC4 (40-bit or  
736 - 128-bit without AES) an error rather than a warning when  
737 - --allow-weak-crypto is not specified. Fixes #576. 711 + * QPDFWriter: change encryption API calls
  712 + - Remove deprecated versions of setR*EncryptionParameters
  713 + methods from before qpdf 8.4.0
  714 + - Replace setR2EncryptionParameters with
  715 + setR2EncryptionParametersInsecure
  716 + - Replace setR3EncryptionParameters with
  717 + setR3EncryptionParametersInsecure
  718 + - Replace setR4EncryptionParameters with
  719 + setR4EncryptionParametersInsecure
  720 +
  721 + * C API: change encryption API calls to match C++ interface
  722 + - Remove pre-8.4.0 functions:
  723 + - qpdf_set_r3_encryption_parameters
  724 + - qpdf_set_r4_encryption_parameters
  725 + - qpdf_set_r5_encryption_parameters
  726 + - qpdf_set_r6_encryption_parameters
  727 + - Add "_insecure" to insecure encryption triggers:
  728 + - Replace void qpdf_set_r2_encryption_parameters
  729 + with qpdf_set_r2_encryption_parameters_insecure
  730 + - Replace void qpdf_set_r3_encryption_parameters2
  731 + with qpdf_set_r3_encryption_parameters_insecure
  732 + - Replace void qpdf_set_r4_encryption_parameters2
  733 + with qpdf_set_r4_encryption_parameters_insecure
  734 +
  735 + * Make attempting to write encrypted files that use RC4 (40-bit or
  736 + 128-bit without AES) an error rather than a warning when
  737 + --allow-weak-crypto is not specified. Fixes #576.
738 738
739 2022-04-24 Jay Berkenbilt <ejb@ql.org> 739 2022-04-24 Jay Berkenbilt <ejb@ql.org>
740 740
741 - * Bug fix: "removeAttachment" in the job JSON now takes an array  
742 - of strings instead of a string. It should have taken an array of  
743 - strings since the corresponding command-line argument,  
744 - --remove-attachment, is repeatable. Fixes #693. 741 + * Bug fix: "removeAttachment" in the job JSON now takes an array
  742 + of strings instead of a string. It should have taken an array of
  743 + strings since the corresponding command-line argument,
  744 + --remove-attachment, is repeatable. Fixes #693.
745 745
746 - * Deprecate QPDFObjectHandle::replaceOrRemoveKey -- it does and  
747 - always has done the same thing as replaceKey. 746 + * Deprecate QPDFObjectHandle::replaceOrRemoveKey -- it does and
  747 + always has done the same thing as replaceKey.
748 748
749 2022-04-23 Jay Berkenbilt <ejb@ql.org> 749 2022-04-23 Jay Berkenbilt <ejb@ql.org>
750 750
751 - * Add a new QPDF::warn method that takes the parameters of  
752 - QPDFExc's constructor except for the filename, which is taken from  
753 - the QPDF object. This is a shorter way to issue warnings on behalf  
754 - of a QPDF object. 751 + * Add a new QPDF::warn method that takes the parameters of
  752 + QPDFExc's constructor except for the filename, which is taken from
  753 + the QPDF object. This is a shorter way to issue warnings on behalf
  754 + of a QPDF object.
755 755
756 * Add new method QUtil::is_explicit_utf8 that tests whether a 756 * Add new method QUtil::is_explicit_utf8 that tests whether a
757 string is explicitly marked as being UTF-8 encoded, as allowed by 757 string is explicitly marked as being UTF-8 encoded, as allowed by
@@ -2763,7 +2763,7 @@ @@ -2763,7 +2763,7 @@
2763 2763
2764 2019-01-03 Jay Berkenbilt <ejb@ql.org> 2764 2019-01-03 Jay Berkenbilt <ejb@ql.org>
2765 2765
2766 - * Add --generate-appearances flag to the qpdf command-line tool to 2766 + * Add --generate-appearances flag to the qpdf command-line tool to
2767 trigger generation of appearance streams. 2767 trigger generation of appearance streams.
2768 2768
2769 * Fix behavior of form field value setting to handle the following 2769 * Fix behavior of form field value setting to handle the following
@@ -3168,7 +3168,7 @@ @@ -3168,7 +3168,7 @@
3168 3168
3169 2018-02-04 Jay Berkenbilt <ejb@ql.org> 3169 2018-02-04 Jay Berkenbilt <ejb@ql.org>
3170 3170
3171 - * Changes listed on today's date are numerous and reflect 3171 + * Changes listed on today's date are numerous and reflect
3172 significant enhancements to qpdf's lexical layer. While many 3172 significant enhancements to qpdf's lexical layer. While many
3173 nuances are discussed and a handful of small bugs were fixed, it 3173 nuances are discussed and a handful of small bugs were fixed, it
3174 should be emphasized that none of these issues have any impact on 3174 should be emphasized that none of these issues have any impact on
@@ -3503,7 +3503,7 @@ @@ -3503,7 +3503,7 @@
3503 - New command-line flags --compress-streams and --decode-level 3503 - New command-line flags --compress-streams and --decode-level
3504 to replace/enhance --stream-data 3504 to replace/enhance --stream-data
3505 - New QPDFWriter::setCompressStreams and 3505 - New QPDFWriter::setCompressStreams and
3506 - QPDFWriter::setDecodeLevel methods 3506 + QPDFWriter::setDecodeLevel methods
3507 Please see documentation, header files, and help messages for 3507 Please see documentation, header files, and help messages for
3508 details on these new features. 3508 details on these new features.
3509 3509
@@ -3736,7 +3736,7 @@ @@ -3736,7 +3736,7 @@
3736 * Bug fix: if the last object in the first part of a linearized 3736 * Bug fix: if the last object in the first part of a linearized
3737 file had an offset that was below 65536 by less than the size of 3737 file had an offset that was below 65536 by less than the size of
3738 the hint stream, the xref stream was invalid and the resulting file 3738 the hint stream, the xref stream was invalid and the resulting file
3739 - is not usable. This is now fixed. 3739 + is not usable. This is now fixed.
3740 3740
3741 2014-01-14 Jay Berkenbilt <ejb@ql.org> 3741 2014-01-14 Jay Berkenbilt <ejb@ql.org>
3742 3742
@@ -3747,7 +3747,7 @@ @@ -3747,7 +3747,7 @@
3747 * Bug fix: when copying foreign objects (which occurs during page 3747 * Bug fix: when copying foreign objects (which occurs during page
3748 splitting among other cases), avoid traversing the same object 3748 splitting among other cases), avoid traversing the same object
3749 more than once if it appears more than once in the same direct 3749 more than once if it appears more than once in the same direct
3750 - object. This bug is performance-only and does not affect the 3750 + object. This bug is performance-only and does not affect the
3751 actual output. 3751 actual output.
3752 3752
3753 2013-12-17 Jay Berkenbilt <ejb@ql.org> 3753 2013-12-17 Jay Berkenbilt <ejb@ql.org>
@@ -3811,7 +3811,7 @@ @@ -3811,7 +3811,7 @@
3811 * 5.0.1: release 3811 * 5.0.1: release
3812 3812
3813 * Warn when -accessibility=n is specified with a modern encryption 3813 * Warn when -accessibility=n is specified with a modern encryption
3814 - format (R > 3). Also, accept this flag (and ignore with warning) 3814 + format (R > 3). Also, accept this flag (and ignore with warning)
3815 with 256-bit encryption. qpdf has always ignored the 3815 with 256-bit encryption. qpdf has always ignored the
3816 accessibility setting with R > 3, but it previously did so 3816 accessibility setting with R > 3, but it previously did so
3817 silently. 3817 silently.
@@ -3838,7 +3838,7 @@ @@ -3838,7 +3838,7 @@
3838 data in linearization hint streams. 3838 data in linearization hint streams.
3839 3839
3840 * Security fix: sanitize /W array in cross reference stream to 3840 * Security fix: sanitize /W array in cross reference stream to
3841 - avoid a potential integer overflow in a multiplication. It is 3841 + avoid a potential integer overflow in a multiplication. It is
3842 unlikely that any exploits were possible from this bug as 3842 unlikely that any exploits were possible from this bug as
3843 additional checks were also performed. 3843 additional checks were also performed.
3844 3844
@@ -3859,7 +3859,7 @@ @@ -3859,7 +3859,7 @@
3859 3859
3860 * Security fix: in QUtil::toUTF8, change bounds checking to avoid 3860 * Security fix: in QUtil::toUTF8, change bounds checking to avoid
3861 having a pointer point temporarily outside the bounds of an 3861 having a pointer point temporarily outside the bounds of an
3862 - array. Some compiler optimizations could have made the original 3862 + array. Some compiler optimizations could have made the original
3863 code unsafe. 3863 code unsafe.
3864 3864
3865 2013-07-10 Jay Berkenbilt <ejb@ql.org> 3865 2013-07-10 Jay Berkenbilt <ejb@ql.org>
@@ -3907,8 +3907,8 @@ @@ -3907,8 +3907,8 @@
3907 2013-06-14 Jay Berkenbilt <ejb@ql.org> 3907 2013-06-14 Jay Berkenbilt <ejb@ql.org>
3908 3908
3909 * Detect and correct /Outlines dictionary being a direct object 3909 * Detect and correct /Outlines dictionary being a direct object
3910 - when linearizing files. This is not allowed by the spec but has  
3911 - been seen in the wild. Prior to this change, such a file would 3910 + when linearizing files. This is not allowed by the spec but has
  3911 + been seen in the wild. Prior to this change, such a file would
3912 cause an internal error in the linearization code, which assumed 3912 cause an internal error in the linearization code, which assumed
3913 /Outlines was indirect. 3913 /Outlines was indirect.
3914 3914
@@ -3941,7 +3941,7 @@ @@ -3941,7 +3941,7 @@
3941 2013-03-11 Jay Berkenbilt <ejb@ql.org> 3941 2013-03-11 Jay Berkenbilt <ejb@ql.org>
3942 3942
3943 * When creating Windows binary distributions, make sure to only 3943 * When creating Windows binary distributions, make sure to only
3944 - copy DLLs of the correct type. The ensures that the 32-bit 3944 + copy DLLs of the correct type. The ensures that the 32-bit
3945 distributions contain 32-bit DLLs and the 64-bit distributions 3945 distributions contain 32-bit DLLs and the 64-bit distributions
3946 contain 64-bit DLLs. 3946 contain 64-bit DLLs.
3947 3947
@@ -3963,7 +3963,7 @@ @@ -3963,7 +3963,7 @@
3963 warnings. This is useful for people who may want to use qpdf in 3963 warnings. This is useful for people who may want to use qpdf in
3964 an application that is Windows 8 certified. 3964 an application that is Windows 8 certified.
3965 3965
3966 - * New method QUtil::safe_fopen to wrap calls to fopen. This is 3966 + * New method QUtil::safe_fopen to wrap calls to fopen. This is
3967 less cumbersome than calling QUtil::fopen_wrapper. 3967 less cumbersome than calling QUtil::fopen_wrapper.
3968 3968
3969 * Remove all calls to sprintf 3969 * Remove all calls to sprintf
@@ -3982,7 +3982,7 @@ @@ -3982,7 +3982,7 @@
3982 * Bug fix: properly handle overridden compressed objects. When 3982 * Bug fix: properly handle overridden compressed objects. When
3983 caching objects from an object stream, only cache objects that, 3983 caching objects from an object stream, only cache objects that,
3984 based on the xref table, would actually be resolved into this 3984 based on the xref table, would actually be resolved into this
3985 - stream. Prior to this fix, if an object stream A contained an 3985 + stream. Prior to this fix, if an object stream A contained an
3986 object B that was overridden by an appended section of the file, 3986 object B that was overridden by an appended section of the file,
3987 qpdf would cache the old value of B if any non-overridden member 3987 qpdf would cache the old value of B if any non-overridden member
3988 of A was accessed before B. This commit fixes that bug. 3988 of A was accessed before B. This commit fixes that bug.
@@ -3999,7 +3999,7 @@ @@ -3999,7 +3999,7 @@
3999 hexadecimal string 3999 hexadecimal string
4000 4000
4001 * qpdf --check was exiting with status 0 in some rare cases even 4001 * qpdf --check was exiting with status 0 in some rare cases even
4002 - when errors were found. It now always exits with one of the 4002 + when errors were found. It now always exits with one of the
4003 document error codes (0 for success, 2 for errors, 3 or warnings). 4003 document error codes (0 for success, 2 for errors, 3 or warnings).
4004 4004
4005 2013-01-24 Jay Berkenbilt <ejb@ql.org> 4005 2013-01-24 Jay Berkenbilt <ejb@ql.org>
@@ -4014,20 +4014,20 @@ @@ -4014,20 +4014,20 @@
4014 CXXFLAGS and were commingled with other compiler flags. 4014 CXXFLAGS and were commingled with other compiler flags.
4015 4015
4016 * qpdf --check now does syntactic checks all pages' content 4016 * qpdf --check now does syntactic checks all pages' content
4017 - streams as well as checking overall document structure. Semantic 4017 + streams as well as checking overall document structure. Semantic
4018 errors are still not checked, and there are no plans to add 4018 errors are still not checked, and there are no plans to add
4019 semantic checks. 4019 semantic checks.
4020 4020
4021 2013-01-22 Jay Berkenbilt <ejb@ql.org> 4021 2013-01-22 Jay Berkenbilt <ejb@ql.org>
4022 4022
4023 - * Add QPDFObjectHandle::getTypeCode(). This method returns a 4023 + * Add QPDFObjectHandle::getTypeCode(). This method returns a
4024 unique integer (enumerated type) value corresponding to the object 4024 unique integer (enumerated type) value corresponding to the object
4025 type of the QPDFObjectHandle. It can be used as an alternative to 4025 type of the QPDFObjectHandle. It can be used as an alternative to
4026 the QPDFObjectHandle::is* methods for type testing, particularly 4026 the QPDFObjectHandle::is* methods for type testing, particularly
4027 where there is a desire to use a switch statement or optimize for 4027 where there is a desire to use a switch statement or optimize for
4028 performance when testing object types. 4028 performance when testing object types.
4029 4029
4030 - * Add QPDFObjectHandle::getTypeName(). This method returns a 4030 + * Add QPDFObjectHandle::getTypeName(). This method returns a
4031 string literal describing the object type. It is useful for 4031 string literal describing the object type. It is useful for
4032 testing and debugging. 4032 testing and debugging.
4033 4033
@@ -4035,7 +4035,7 @@ @@ -4035,7 +4035,7 @@
4035 4035
4036 * Add QPDFObjectHandle::parseContentStream, which parses the 4036 * Add QPDFObjectHandle::parseContentStream, which parses the
4037 objects in a content stream and calls handlers in a callback 4037 objects in a content stream and calls handlers in a callback
4038 - class. The example pdf-parse-content illustrates it use. 4038 + class. The example pdf-parse-content illustrates it use.
4039 4039
4040 * Add QPDF_Operator and QPDF_InlineImage types along with 4040 * Add QPDF_Operator and QPDF_InlineImage types along with
4041 appropriate wrapper methods in QPDFObjectHandle. These new object 4041 appropriate wrapper methods in QPDFObjectHandle. These new object
@@ -4051,7 +4051,7 @@ @@ -4051,7 +4051,7 @@
4051 password. 4051 password.
4052 4052
4053 * Fix detection of binary attachments in the test suite. This 4053 * Fix detection of binary attachments in the test suite. This
4054 - resolves false test failures on some platforms. No changes to the 4054 + resolves false test failures on some platforms. No changes to the
4055 actual QPDF code were made. 4055 actual QPDF code were made.
4056 4056
4057 2012-12-31 Jay Berkenbilt <ejb@ql.org> 4057 2012-12-31 Jay Berkenbilt <ejb@ql.org>
@@ -4086,17 +4086,17 @@ @@ -4086,17 +4086,17 @@
4086 4086
4087 * Add read/write support for both the deprecated Acrobat IX 4087 * Add read/write support for both the deprecated Acrobat IX
4088 encryption format and the Acrobat X/PDF 2.0 encryption format 4088 encryption format and the Acrobat X/PDF 2.0 encryption format
4089 - using 256-bit AES keys. Using the Acrobat IX format (R=5) forces  
4090 - the version of the file to 1.7 with extension level 3. Using the 4089 + using 256-bit AES keys. Using the Acrobat IX format (R=5) forces
  4090 + the version of the file to 1.7 with extension level 3. Using the
4091 PDF 2.0 format (R=6) forces it to 1.7 extension level 8. 4091 PDF 2.0 format (R=6) forces it to 1.7 extension level 8.
4092 4092
4093 * Add new method QPDF::getEncryptionKey to return the actual 4093 * Add new method QPDF::getEncryptionKey to return the actual
4094 - encryption key used for encryption of data in the file. The key 4094 + encryption key used for encryption of data in the file. The key
4095 is returned as a std::string. 4095 is returned as a std::string.
4096 4096
4097 * Non-compatible API change: change signature of 4097 * Non-compatible API change: change signature of
4098 QPDF::compute_data_key to take the R and V values from the 4098 QPDF::compute_data_key to take the R and V values from the
4099 - encryption dictionary. There is no reason for any application 4099 + encryption dictionary. There is no reason for any application
4100 code to call this method since handling of encryption is done 4100 code to call this method since handling of encryption is done
4101 automatically by the qpdf library. It is used internally by 4101 automatically by the qpdf library. It is used internally by
4102 QPDFWriter. 4102 QPDFWriter.
@@ -4124,7 +4124,7 @@ @@ -4124,7 +4124,7 @@
4124 * Fix old bug that could cause an infinite loop if user password 4124 * Fix old bug that could cause an infinite loop if user password
4125 recovery methods were called and a password contained the "(" 4125 recovery methods were called and a password contained the "("
4126 character (which happens to be the first byte of padding used by 4126 character (which happens to be the first byte of padding used by
4127 - older PDF encryption formats). This bug was noticed while reading 4127 + older PDF encryption formats). This bug was noticed while reading
4128 code and would not happen under ordinary usage patterns even if 4128 code and would not happen under ordinary usage patterns even if
4129 the password contained that character. 4129 the password contained that character.
4130 4130
@@ -4134,15 +4134,15 @@ @@ -4134,15 +4134,15 @@
4134 reading and writing. This includes adding method 4134 reading and writing. This includes adding method
4135 QPDF::getExtensionLevel and new versions of 4135 QPDF::getExtensionLevel and new versions of
4136 QPDFWriter::setMinimumPDFVersion and QPDFWriter::forcePDFVersion 4136 QPDFWriter::setMinimumPDFVersion and QPDFWriter::forcePDFVersion
4137 - that support extension levels. The qpdf command-line tool 4137 + that support extension levels. The qpdf command-line tool
4138 interprets version numbers of the form x.y.z as version x.y at 4138 interprets version numbers of the form x.y.z as version x.y at
4139 extension level z. 4139 extension level z.
4140 4140
4141 * Update AES classes to support use of 256-bit keys. 4141 * Update AES classes to support use of 256-bit keys.
4142 4142
4143 * Non-compatible API change: Removed public method 4143 * Non-compatible API change: Removed public method
4144 - QPDF::flattenScalarReferences. Instead, just flatten the scalar  
4145 - references we actually need to flatten. Flattening scalar 4144 + QPDF::flattenScalarReferences. Instead, just flatten the scalar
  4145 + references we actually need to flatten. Flattening scalar
4146 references was a wrong decision years ago and has occasionally 4146 references was a wrong decision years ago and has occasionally
4147 caused other problems, among which were that it caused qpdf to 4147 caused other problems, among which were that it caused qpdf to
4148 visit otherwise unreferenced and possibly erroneous objects in the 4148 visit otherwise unreferenced and possibly erroneous objects in the
@@ -4187,14 +4187,14 @@ @@ -4187,14 +4187,14 @@
4187 out the omission. 4187 out the omission.
4188 4188
4189 * Ignore (with warning) non-freed objects in the xref table whose 4189 * Ignore (with warning) non-freed objects in the xref table whose
4190 - offset is 0. Some PDF producers (incorrectly) do this. See 4190 + offset is 0. Some PDF producers (incorrectly) do this. See
4191 https://bugs.linuxfoundation.org/show_bug.cgi?id=1081. 4191 https://bugs.linuxfoundation.org/show_bug.cgi?id=1081.
4192 4192
4193 2012-09-23 Jay Berkenbilt <ejb@ql.org> 4193 2012-09-23 Jay Berkenbilt <ejb@ql.org>
4194 4194
4195 * Add public methods QPDF::processInputSource and 4195 * Add public methods QPDF::processInputSource and
4196 QPDFWriter::setOutputPipeline to allow users to read from custom 4196 QPDFWriter::setOutputPipeline to allow users to read from custom
4197 - input sources and to write to custom pipelines. This allows the 4197 + input sources and to write to custom pipelines. This allows the
4198 maximum flexibility in sources for reading and writing PDF files. 4198 maximum flexibility in sources for reading and writing PDF files.
4199 4199
4200 2012-09-06 Jay Berkenbilt <ejb@ql.org> 4200 2012-09-06 Jay Berkenbilt <ejb@ql.org>
@@ -4341,7 +4341,7 @@ @@ -4341,7 +4341,7 @@
4341 2012-06-27 Jay Berkenbilt <ejb@ql.org> 4341 2012-06-27 Jay Berkenbilt <ejb@ql.org>
4342 4342
4343 * Add Pl_Concatenate pipeline for stream concatenation also 4343 * Add Pl_Concatenate pipeline for stream concatenation also
4344 - implemented by Tobias Hoffmann. Also added test code 4344 + implemented by Tobias Hoffmann. Also added test code
4345 (libtests/concatenate.cc). 4345 (libtests/concatenate.cc).
4346 4346
4347 * Add new methods implemented by Tobias Hoffmann: 4347 * Add new methods implemented by Tobias Hoffmann:
@@ -4365,7 +4365,7 @@ @@ -4365,7 +4365,7 @@
4365 places as well as increasing the amount of padding used when 4365 places as well as increasing the amount of padding used when
4366 creating linearized files. Automated tests for large files are 4366 creating linearized files. Automated tests for large files are
4367 disabled by default. Run ./configure --help for information on 4367 disabled by default. Run ./configure --help for information on
4368 - enabling them. Running the tests requires 11 GB of free disk 4368 + enabling them. Running the tests requires 11 GB of free disk
4369 space and takes several minutes. 4369 space and takes several minutes.
4370 4370
4371 2012-06-22 Jay Berkenbilt <ejb@ql.org> 4371 2012-06-22 Jay Berkenbilt <ejb@ql.org>
@@ -4388,11 +4388,11 @@ @@ -4388,11 +4388,11 @@
4388 * make/libtool.mk: Place user-specified CPPFLAGS and LDFLAGS later 4388 * make/libtool.mk: Place user-specified CPPFLAGS and LDFLAGS later
4389 in the compilation so that if a user installs things in a 4389 in the compilation so that if a user installs things in a
4390 non-standard place that they have to tell the build about, earlier 4390 non-standard place that they have to tell the build about, earlier
4391 - versions of qpdf installed there won't break the build. Thanks to 4391 + versions of qpdf installed there won't break the build. Thanks to
4392 Macports for reporting this. (Fixes bug 3468860.) 4392 Macports for reporting this. (Fixes bug 3468860.)
4393 4393
4394 * Instead of using off_t in the public APIs, use qpdf_offset_t 4394 * Instead of using off_t in the public APIs, use qpdf_offset_t
4395 - instead. This is defined as long long in qpdf/Types.h. If your 4395 + instead. This is defined as long long in qpdf/Types.h. If your
4396 system doesn't support long long, you can redefine it. 4396 system doesn't support long long, you can redefine it.
4397 4397
4398 * Add pkg-config files 4398 * Add pkg-config files
@@ -4427,7 +4427,7 @@ @@ -4427,7 +4427,7 @@
4427 4427
4428 2011-04-06 Jay Berkenbilt <ejb@ql.org> 4428 2011-04-06 Jay Berkenbilt <ejb@ql.org>
4429 4429
4430 - * Fix PCRE to stop using deprecated (and now dropped) interfaces. 4430 + * Fix PCRE to stop using deprecated (and now dropped) interfaces.
4431 4431
4432 2011-12-28 Jay Berkenbilt <ejb@ql.org> 4432 2011-12-28 Jay Berkenbilt <ejb@ql.org>
4433 4433
@@ -4459,13 +4459,13 @@ @@ -4459,13 +4459,13 @@
4459 2011-08-10 Jay Berkenbilt <ejb@ql.org> 4459 2011-08-10 Jay Berkenbilt <ejb@ql.org>
4460 4460
4461 * libqpdf/QPDFWriter.cc (copyEncryptionParameters): preserve 4461 * libqpdf/QPDFWriter.cc (copyEncryptionParameters): preserve
4462 - whether metadata is encryption. This fixes part of bug 3173659: 4462 + whether metadata is encryption. This fixes part of bug 3173659:
4463 the password becomes invalid if qpdf copies an encrypted file with 4463 the password becomes invalid if qpdf copies an encrypted file with
4464 cleartext-metadata. 4464 cleartext-metadata.
4465 4465
4466 * include/qpdf/QPDFWriter.hh: add a new constructor that takes 4466 * include/qpdf/QPDFWriter.hh: add a new constructor that takes
4467 only a QPDF reference and leaves specification of output for 4467 only a QPDF reference and leaves specification of output for
4468 - later. Add methods setOutputFilename() to set the output to a 4468 + later. Add methods setOutputFilename() to set the output to a
4469 filename or stdout, and setOutputMemory() to indicate that output 4469 filename or stdout, and setOutputMemory() to indicate that output
4470 should go to a memory buffer. Add method getBuffer() to retrieve 4470 should go to a memory buffer. Add method getBuffer() to retrieve
4471 the buffer used if output was saved to a memory buffer. 4471 the buffer used if output was saved to a memory buffer.
@@ -4485,7 +4485,7 @@ @@ -4485,7 +4485,7 @@
4485 2011-06-23 Jay Berkenbilt <ejb@ql.org> 4485 2011-06-23 Jay Berkenbilt <ejb@ql.org>
4486 4486
4487 * make/libtool.mk (install): Do not strip executables and shared 4487 * make/libtool.mk (install): Do not strip executables and shared
4488 - libraries during installation. Leave that up to the packager. 4488 + libraries during installation. Leave that up to the packager.
4489 4489
4490 * configure.ac: disable -Werror by default. 4490 * configure.ac: disable -Werror by default.
4491 4491
@@ -4568,7 +4568,7 @@ @@ -4568,7 +4568,7 @@
4568 * 2.2.0: release 4568 * 2.2.0: release
4569 4569
4570 * Rename README.windows to README-windows.txt and convert its line 4570 * Rename README.windows to README-windows.txt and convert its line
4571 - endings to Windows-style line endings. Also mention Jian Ma's VC6 4571 + endings to Windows-style line endings. Also mention Jian Ma's VC6
4572 port in the manual and README-windows.txt. 4572 port in the manual and README-windows.txt.
4573 4573
4574 2010-08-09 Jay Berkenbilt <ejb@ql.org> 4574 2010-08-09 Jay Berkenbilt <ejb@ql.org>
@@ -4687,7 +4687,7 @@ @@ -4687,7 +4687,7 @@
4687 2009-10-19 Jay Berkenbilt <ejb@ql.org> 4687 2009-10-19 Jay Berkenbilt <ejb@ql.org>
4688 4688
4689 * include/qpdf/QPDF.hh (QPDF): getWarnings now returns a list of 4689 * include/qpdf/QPDF.hh (QPDF): getWarnings now returns a list of
4690 - QPDFExc rather than a list of strings. This way, warnings may be 4690 + QPDFExc rather than a list of strings. This way, warnings may be
4691 inspected in more detail. 4691 inspected in more detail.
4692 4692
4693 * Include information about the last object read in most error 4693 * Include information about the last object read in most error
@@ -4732,13 +4732,13 @@ @@ -4732,13 +4732,13 @@
4732 2009-09-27 Jay Berkenbilt <ejb@ql.org> 4732 2009-09-27 Jay Berkenbilt <ejb@ql.org>
4733 4733
4734 * Add several methods to query permissions controlled by the 4734 * Add several methods to query permissions controlled by the
4735 - encryption dictionary. Note that qpdf does not enforce these 4735 + encryption dictionary. Note that qpdf does not enforce these
4736 permissions even though it allows the user to query them. 4736 permissions even though it allows the user to query them.
4737 4737
4738 * The function QPDF::getUserPassword returned the user password 4738 * The function QPDF::getUserPassword returned the user password
4739 with the required padding as specified by the PDF specification. 4739 with the required padding as specified by the PDF specification.
4740 - This is seldom useful to users. This function has been replaced  
4741 - by QPDF::getPaddedUserPassword. Call the new 4740 + This is seldom useful to users. This function has been replaced
  4741 + by QPDF::getPaddedUserPassword. Call the new
4742 QPDF::getTrimmedUserPassword to retrieve the user password in a 4742 QPDF::getTrimmedUserPassword to retrieve the user password in a
4743 human-readable format. 4743 human-readable format.
4744 4744
@@ -4765,7 +4765,7 @@ @@ -4765,7 +4765,7 @@
4765 4765
4766 * libqpdf/Pl_LZWDecoder.cc: adjust LZWDecoder full table 4766 * libqpdf/Pl_LZWDecoder.cc: adjust LZWDecoder full table
4767 detection, now having been able to adequately test boundary 4767 detection, now having been able to adequately test boundary
4768 - conditions both and with and without early code change. Also 4768 + conditions both and with and without early code change. Also
4769 compared implementation with other LZW decoders. 4769 compared implementation with other LZW decoders.
4770 4770
4771 2009-03-08 Jay Berkenbilt <ejb@ql.org> 4771 2009-03-08 Jay Berkenbilt <ejb@ql.org>
@@ -4868,7 +4868,7 @@ @@ -4868,7 +4868,7 @@
4868 4868
4869 * libqpdf/QPDF_encryption.cc: do not assume size_t is unsigned int 4869 * libqpdf/QPDF_encryption.cc: do not assume size_t is unsigned int
4870 4870
4871 - * qpdf/qtest/qpdf.test: removed locale-specific tests. These were 4871 + * qpdf/qtest/qpdf.test: removed locale-specific tests. These were
4872 really to check bugs in perl 5.8.0 and are obsolete now. They 4872 really to check bugs in perl 5.8.0 and are obsolete now. They
4873 also make the test suite fail in some environments that don't have 4873 also make the test suite fail in some environments that don't have
4874 all the locales fully configured. 4874 all the locales fully configured.