Commit 8320d16cd20240cc35ec84de6bb89f2d9431ea2d

Authored by Jay Berkenbilt
1 parent c5dc6d80

Update TODO

Showing 1 changed file with 19 additions and 62 deletions
@@ -4,60 +4,21 @@ Before next release @@ -4,60 +4,21 @@ Before next release
4 ABI compatibility has most likely been broken. Retest and bump major 4 ABI compatibility has most likely been broken. Retest and bump major
5 version if needed. 5 version if needed.
6 6
7 -Small, command-line tool only enhancements to do soon  
8 -=====================================================  
9 -  
10 - * Handle input file = output file as a special case. See issue 29.  
11 - Behavior: detect if output file is the same as one of the input  
12 - files. If so, refuse to operate unless --allow-overwrite is  
13 - specified. In that case, write to a temporary file and, if there  
14 - are no errors or warnings, rename the temporary output file over  
15 - the input file. If rename fails, delete the temporary file.  
16 -  
17 - * Consider providing alternative methods for specifying passwords.  
18 - The methods should be general enough to use for both encryption and  
19 - decryption passwords. Example methods could be reading the password  
20 - from a file, a file descriptor, or prompting. Prompting should  
21 - never be done with being specifically requested though; we don't  
22 - want to create a situation where running qpdf might block waiting  
23 - for input where it previously did not. Test case: encrypt an  
24 - encrypted file with the output file having different user/owner  
25 - passwords. Make sure we have a predictable way to read all three  
26 - passwords (input, output user, output owner). Maybe we have  
27 - something like --password-source=<method>:<which>,... where method could  
28 - be file=/path, fd=n, or prompt and which could be one of input,  
29 - user, owner. If a password source is provided for input, it takes  
30 - precedence over --password if specified later on the command line.  
31 - If a password source is specified for output passwords, the  
32 - corresponding passwords must be '-'. If more than one password is  
33 - read from the same source, passwords are newline separated.  
34 - Trailing newlines are ignored. Example:  
35 -  
36 - qpdf --password-source=fd=3:input,owner a.pdf b.pdf  
37 -  
38 - would read two lines from file descriptor 3. The first would the  
39 - password for reading a.pdf, and the second would be the owner  
40 - password for b.pdf. The encryption arguments would specify the  
41 - actual user password for b.pdf and - as the owner password.  
42 -  
43 - qpdf --password-source=file=/tmp/a:input --password=source=prompt:user,owner  
44 -  
45 - would read the input file from /tmp/a and would prompt twice: one  
46 - for the user password and once for the owner password.  
47 -  
48 - * Consider adding "uninstall" target to makefile. It should only  
49 - uninstall what it installed, which means that you must run  
50 - uninstall from the version you ran install with. It would only be  
51 - supported for the toolchains that support the install target  
52 - (libtool).  
53 -  
54 -  
55 Soon 7 Soon
56 ==== 8 ====
57 9
58 * Eliminate dependency on PCRE. There aren't that many regular 10 * Eliminate dependency on PCRE. There aren't that many regular
59 expressions, and they are used only for internal purposes. 11 expressions, and they are used only for internal purposes.
60 12
  13 + * Consider whether there should be a mode in which QPDFObjectHandle
  14 + returns nulls for operations on the wrong type instead of asserting
  15 + the type. The way things are wired up now, this would have to be a
  16 + global flag. Probably it makes sense to make that be the default
  17 + behavior and to add a static method in QPDFObjectHandle and
  18 + command-line flag that enables the stricter behavior globally for
  19 + easier debugging. For cases where we have enough information to do
  20 + so, we could still warn when not in strict mode.
  21 +
61 * Add method to push inheritable resources to a single page by 22 * Add method to push inheritable resources to a single page by
62 walking up and copying without overwrite. Above logic will also be 23 walking up and copying without overwrite. Above logic will also be
63 sufficient to fix the limitation in 24 sufficient to fix the limitation in
@@ -79,9 +40,6 @@ Soon @@ -79,9 +40,6 @@ Soon
79 40
80 * If possible, support the following types of broken files: 41 * If possible, support the following types of broken files:
81 42
82 - - Files that lack %%EOF at the end but otherwise have a valid  
83 - startxref near the end  
84 -  
85 - Files that have no whitespace token after "endobj" such that 43 - Files that have no whitespace token after "endobj" such that
86 endobj collides with the start of the next object 44 endobj collides with the start of the next object
87 45
@@ -91,6 +49,12 @@ Soon @@ -91,6 +49,12 @@ Soon
91 General 49 General
92 ======= 50 =======
93 51
  52 + * Consider adding "uninstall" target to makefile. It should only
  53 + uninstall what it installed, which means that you must run
  54 + uninstall from the version you ran install with. It would only be
  55 + supported for the toolchains that support the install target
  56 + (libtool).
  57 +
94 * Implement automated testing for binary compatibility and add to 58 * Implement automated testing for binary compatibility and add to
95 release checklist. 59 release checklist.
96 60
@@ -287,14 +251,7 @@ Index: QPDFWriter.cc @@ -287,14 +251,7 @@ Index: QPDFWriter.cc
287 re-encode inline images with an ASCII encoding. 251 re-encode inline images with an ASCII encoding.
288 252
289 * From github issue 2, provide more in-depth output for examining 253 * From github issue 2, provide more in-depth output for examining
290 - hint stream contents.  
291 -  
292 - * An attempt was made to replace pcre with std::regex, but it failed  
293 - because std::regex lacks some features of PCRE that we use and  
294 - because the result was many times slower. The work was saved in  
295 - refs/attic/std-regex on github.  
296 -  
297 - * Consider adding on option to provide a human-readable dump of  
298 - linearization hint tables. This should include improving the  
299 - 'overflow reading bit stream' message as reported in issue #2.  
300 - 254 + hint stream contents. Consider adding on option to provide a
  255 + human-readable dump of linearization hint tables. This should
  256 + include improving the 'overflow reading bit stream' message as
  257 + reported in issue #2.