Commit 03ea948cebeb634b769df17199b43ad161f14d7c

Authored by m-holger
1 parent 98c0b420

Replace std::endl with '\n' for consistent line endings.

This change updates all occurrences of `std::endl` to `\n` across various files for improved efficiency and consistency. It reduces unnecessary flushing of output buffers associated with `std::endl` while maintaining the same output format.
Showing 83 changed files with 752 additions and 769 deletions
compare-for-test/qpdf-test-compare.cc
... ... @@ -13,18 +13,14 @@ static char const* whoami = nullptr;
13 13 void
14 14 usage()
15 15 {
16   - std::cerr << "Usage: " << whoami << " actual expected" << std::endl
17   - << R"(Where "actual" is the actual output and "expected" is the expected)"
18   - << std::endl
19   - << "output of a test, compare the two PDF files. The files are considered"
20   - << std::endl
21   - << "to match if all their objects are identical except that, if a stream is"
22   - << std::endl
23   - << "compressed with FlateDecode, the uncompressed data must match." << std::endl
24   - << std::endl
25   - << "If the files match, the output is the expected file. Otherwise, it is"
26   - << std::endl
27   - << "the actual file. Read comments in the code for rationale." << std::endl;
  16 + std::cerr << "Usage: " << whoami << " actual expected" << '\n'
  17 + << R"(Where "actual" is the actual output and "expected" is the expected)" << '\n'
  18 + << "output of a test, compare the two PDF files. The files are considered" << '\n'
  19 + << "to match if all their objects are identical except that, if a stream is" << '\n'
  20 + << "compressed with FlateDecode, the uncompressed data must match." << '\n'
  21 + << '\n'
  22 + << "If the files match, the output is the expected file. Otherwise, it is" << '\n'
  23 + << "the actual file. Read comments in the code for rationale." << '\n';
28 24 exit(2);
29 25 }
30 26  
... ... @@ -187,7 +183,7 @@ main(int argc, char* argv[])
187 183 }
188 184  
189 185 if ((argc == 2) && (strcmp(argv[1], "--version") == 0)) {
190   - std::cout << whoami << " from qpdf version " << QPDF::QPDFVersion() << std::endl;
  186 + std::cout << whoami << " from qpdf version " << QPDF::QPDFVersion() << '\n';
191 187 exit(0);
192 188 }
193 189  
... ... @@ -211,7 +207,7 @@ main(int argc, char* argv[])
211 207 to_output = expected;
212 208 } else {
213 209 if (show_why) {
214   - std::cerr << difference << std::endl;
  210 + std::cerr << difference << '\n';
215 211 exit(2);
216 212 }
217 213 // The files differ; write the actual file. If it is determined that the actual file
... ... @@ -237,7 +233,7 @@ main(int argc, char* argv[])
237 233 exit(2);
238 234 }
239 235 } catch (std::exception& e) {
240   - std::cerr << whoami << ": " << e.what() << std::endl;
  236 + std::cerr << whoami << ": " << e.what() << '\n';
241 237 exit(2);
242 238 }
243 239 return 0;
... ...
examples/pdf-attach-file.cc
... ... @@ -19,15 +19,15 @@ static char const* whoami = nullptr;
19 19 static void
20 20 usage(std::string const& msg)
21 21 {
22   - std::cerr << msg << std::endl
23   - << std::endl
24   - << "Usage: " << whoami << " options" << std::endl
25   - << "Options:" << std::endl
26   - << " --infile infile.pdf" << std::endl
27   - << " --outfile outfile.pdf" << std::endl
28   - << " --attachment attachment" << std::endl
29   - << " [--password infile-password]" << std::endl
30   - << " [--mimetype attachment mime type]" << std::endl;
  22 + std::cerr << msg << '\n'
  23 + << '\n'
  24 + << "Usage: " << whoami << " options\n"
  25 + << "Options:\n"
  26 + << " --infile infile.pdf\n"
  27 + << " --outfile outfile.pdf\n"
  28 + << " --attachment attachment\n"
  29 + << " [--password infile-password]\n"
  30 + << " [--mimetype attachment mime type]\n";
31 31 exit(2);
32 32 }
33 33  
... ... @@ -69,7 +69,7 @@ process(
69 69  
70 70 // Create a file spec.
71 71 std::string key = QUtil::path_basename(attachment);
72   - std::cout << whoami << ": attaching " << attachment << " as " << key << std::endl;
  72 + std::cout << whoami << ": attaching " << attachment << " as " << key << '\n';
73 73 auto fs = QPDFFileSpecObjectHelper::createFileSpec(q, key, attachment);
74 74  
75 75 if (mimetype) {
... ... @@ -208,7 +208,7 @@ main(int argc, char* argv[])
208 208 try {
209 209 process(infilename, password, attachment, mimetype, outfilename);
210 210 } catch (std::exception& e) {
211   - std::cerr << whoami << " exception: " << e.what() << std::endl;
  211 + std::cerr << whoami << " exception: " << e.what() << '\n';
212 212 exit(2);
213 213 }
214 214  
... ...
examples/pdf-bookmarks.cc
... ... @@ -23,12 +23,12 @@ static std::map&lt;QPDFObjGen, int&gt; page_map;
23 23 void
24 24 usage()
25 25 {
26   - std::cerr << "Usage: " << whoami << " [options] file.pdf [password]" << std::endl
27   - << "Options:" << std::endl
28   - << " --numbers give bookmarks outline-style numbers" << std::endl
29   - << " --lines draw lines to show bookmark hierarchy" << std::endl
30   - << " --show-open indicate whether a bookmark is initially open" << std::endl
31   - << " --show-targets show target if possible" << std::endl;
  26 + std::cerr << "Usage: " << whoami << " [options] file.pdf [password]\n"
  27 + << "Options:\n"
  28 + << " --numbers give bookmarks outline-style numbers\n"
  29 + << " --lines draw lines to show bookmark hierarchy\n"
  30 + << " --show-open indicate whether a bookmark is initially open\n"
  31 + << " --show-targets show target if possible\n";
32 32 exit(2);
33 33 }
34 34  
... ... @@ -74,7 +74,7 @@ show_bookmark_details(QPDFOutlineObjectHelper outline, std::vector&lt;int&gt; numbers)
74 74 case st_lines:
75 75 QTC::TC("examples", "pdf-bookmarks lines");
76 76 print_lines(numbers);
77   - std::cout << "|" << std::endl;
  77 + std::cout << "|\n";
78 78 print_lines(numbers);
79 79 std::cout << "+-+ ";
80 80 break;
... ... @@ -136,7 +136,7 @@ main(int argc, char* argv[])
136 136 whoami = QUtil::getWhoami(argv[0]);
137 137  
138 138 if ((argc == 2) && (strcmp(argv[1], "--version") == 0)) {
139   - std::cout << whoami << " version 1.5" << std::endl;
  139 + std::cout << whoami << " version 1.5\n";
140 140 exit(0);
141 141 }
142 142  
... ... @@ -185,10 +185,10 @@ main(int argc, char* argv[])
185 185 }
186 186 extract_bookmarks(odh.getTopLevelOutlines(), numbers);
187 187 } else {
188   - std::cout << filename << " has no bookmarks" << std::endl;
  188 + std::cout << filename << " has no bookmarks\n";
189 189 }
190 190 } catch (std::exception& e) {
191   - std::cerr << whoami << " processing file " << filename << ": " << e.what() << std::endl;
  191 + std::cerr << whoami << " processing file " << filename << ": " << e.what() << '\n';
192 192 exit(2);
193 193 }
194 194  
... ...
examples/pdf-count-strings.cc
... ... @@ -18,8 +18,8 @@ static char const* whoami = nullptr;
18 18 void
19 19 usage()
20 20 {
21   - std::cerr << "Usage: " << whoami << " infile" << std::endl
22   - << "Applies token filters to infile" << std::endl;
  21 + std::cerr << "Usage: " << whoami << " infile\n"
  22 + << "Applies token filters to infile\n";
23 23 exit(2);
24 24 }
25 25  
... ... @@ -88,14 +88,14 @@ main(int argc, char* argv[])
88 88 } else {
89 89 // Write output to stdout for even pages.
90 90 Pl_StdioFile out("stdout", stdout);
91   - std::cout << "% Contents of page " << pageno << std::endl;
  91 + std::cout << "% Contents of page " << pageno << '\n';
92 92 page.filterContents(&counter, &out);
93   - std::cout << "\n% end " << pageno << std::endl;
  93 + std::cout << "\n% end " << pageno << '\n';
94 94 }
95   - std::cout << "Page " << pageno << ": strings = " << counter.getCount() << std::endl;
  95 + std::cout << "Page " << pageno << ": strings = " << counter.getCount() << '\n';
96 96 }
97 97 } catch (std::exception& e) {
98   - std::cerr << whoami << ": " << e.what() << std::endl;
  98 + std::cerr << whoami << ": " << e.what() << '\n';
99 99 exit(2);
100 100 }
101 101  
... ...
examples/pdf-create.cc
... ... @@ -117,8 +117,8 @@ ImageProvider::provideStreamData(QPDFObjGen const&amp;, Pipeline* pipeline)
117 117 void
118 118 usage()
119 119 {
120   - std::cerr << "Usage: " << whoami << " filename" << std::endl
121   - << "Creates a simple PDF and writes it to filename" << std::endl;
  120 + std::cerr << "Usage: " << whoami << " filename\n"
  121 + << "Creates a simple PDF and writes it to filename\n";
122 122 exit(2);
123 123 }
124 124  
... ... @@ -257,12 +257,12 @@ check(
257 257 if (!filter.isNameAndEquals(desired_filter)) {
258 258 this_errors = errors = true;
259 259 std::cout << "page " << pageno << ": expected filter " << desired_filter
260   - << "; actual filter = " << filter.unparse() << std::endl;
  260 + << "; actual filter = " << filter.unparse() << '\n';
261 261 }
262 262 if (!color_space.isNameAndEquals(desired_color_space)) {
263 263 this_errors = errors = true;
264 264 std::cout << "page " << pageno << ": expected color space " << desired_color_space
265   - << "; actual color space = " << color_space.unparse() << std::endl;
  265 + << "; actual color space = " << color_space.unparse() << '\n';
266 266 }
267 267  
268 268 if (!this_errors) {
... ... @@ -275,7 +275,7 @@ check(
275 275 std::shared_ptr<Buffer> desired_data(b_p.getBuffer());
276 276  
277 277 if (desired_data->getSize() != actual_data->getSize()) {
278   - std::cout << "page " << pageno << ": image data length mismatch" << std::endl;
  278 + std::cout << "page " << pageno << ": image data length mismatch\n";
279 279 this_errors = errors = true;
280 280 } else {
281 281 // Compare bytes. For JPEG, allow a certain number of the bytes to be off desired by
... ... @@ -297,7 +297,7 @@ check(
297 297 if (mismatches > threshold) {
298 298 std::cout << "page " << pageno << ": " << desired_color_space << ", "
299 299 << desired_filter << ": mismatches: " << mismatches << " of " << len
300   - << std::endl;
  300 + << '\n';
301 301 this_errors = errors = true;
302 302 }
303 303 }
... ... @@ -308,7 +308,7 @@ check(
308 308 if (errors) {
309 309 throw std::logic_error("errors found");
310 310 } else {
311   - std::cout << "all checks passed" << std::endl;
  311 + std::cout << "all checks passed\n";
312 312 }
313 313 }
314 314  
... ... @@ -366,7 +366,7 @@ main(int argc, char* argv[])
366 366 try {
367 367 create_pdf(filename);
368 368 } catch (std::exception& e) {
369   - std::cerr << e.what() << std::endl;
  369 + std::cerr << e.what() << '\n';
370 370 exit(2);
371 371 }
372 372  
... ...
examples/pdf-custom-filter.cc
... ... @@ -116,7 +116,7 @@ SF_XORDecode::setDecodeParms(QPDFObjectHandle decode_parms)
116 116 this->key = buf->getBuffer()[0];
117 117 return true;
118 118 } catch (std::exception& e) {
119   - std::cerr << "Error extracting key for /XORDecode: " << e.what() << std::endl;
  119 + std::cerr << "Error extracting key for /XORDecode: " << e.what() << '\n';
120 120 }
121 121 return false;
122 122 }
... ... @@ -361,15 +361,13 @@ process(char const* infilename, char const* outfilename, bool decode_specialized
361 361 // For the test suite, use static IDs.
362 362 w.setStaticID(true); // for testing only
363 363 w.write();
364   - std::cout << whoami << ": new file written to " << outfilename << std::endl;
  364 + std::cout << whoami << ": new file written to " << outfilename << '\n';
365 365 }
366 366  
367 367 static void
368 368 usage()
369 369 {
370   - std::cerr << "\n"
371   - << "Usage: " << whoami << " [--decode-specialized] infile outfile\n"
372   - << std::endl;
  370 + std::cerr << '\n' << "Usage: " << whoami << " [--decode-specialized] infile outfile\n" << '\n';
373 371 exit(2);
374 372 }
375 373  
... ... @@ -404,7 +402,7 @@ main(int argc, char* argv[])
404 402 // Do the actual processing.
405 403 process(infilename, outfilename, decode_specialized);
406 404 } catch (std::exception& e) {
407   - std::cerr << whoami << ": exception: " << e.what() << std::endl;
  405 + std::cerr << whoami << ": exception: " << e.what() << '\n';
408 406 exit(2);
409 407 }
410 408  
... ...
examples/pdf-double-page-size.cc
... ... @@ -13,8 +13,8 @@ static char const* whoami = nullptr;
13 13 void
14 14 usage()
15 15 {
16   - std::cerr << "Usage: " << whoami << " infile.pdf outfile.pdf [in-password]" << std::endl
17   - << "Double size of all pages in infile.pdf; write output to outfile.pdf" << std::endl;
  16 + std::cerr << "Usage: " << whoami << " infile.pdf outfile.pdf [in-password]\n"
  17 + << "Double size of all pages in infile.pdf; write output to outfile.pdf\n";
18 18 exit(2);
19 19 }
20 20  
... ... @@ -87,9 +87,9 @@ main(int argc, char* argv[])
87 87 w.setStreamDataMode(qpdf_s_uncompress);
88 88 }
89 89 w.write();
90   - std::cout << whoami << ": new file written to " << outfilename << std::endl;
  90 + std::cout << whoami << ": new file written to " << outfilename << '\n';
91 91 } catch (std::exception& e) {
92   - std::cerr << whoami << " processing file " << infilename << ": " << e.what() << std::endl;
  92 + std::cerr << whoami << " processing file " << infilename << ": " << e.what() << '\n';
93 93 exit(2);
94 94 }
95 95  
... ...
examples/pdf-filter-tokens.cc
... ... @@ -20,8 +20,8 @@ static char const* whoami = nullptr;
20 20 void
21 21 usage()
22 22 {
23   - std::cerr << "Usage: " << whoami << " infile outfile" << std::endl
24   - << "Applies token filters to infile and writes outfile" << std::endl;
  23 + std::cerr << "Usage: " << whoami << " infile outfile\n"
  24 + << "Applies token filters to infile and writes outfile\n";
25 25 exit(2);
26 26 }
27 27  
... ... @@ -184,7 +184,7 @@ main(int argc, char* argv[])
184 184 w.setQDFMode(true);
185 185 w.write();
186 186 } catch (std::exception& e) {
187   - std::cerr << whoami << ": " << e.what() << std::endl;
  187 + std::cerr << whoami << ": " << e.what() << '\n';
188 188 exit(2);
189 189 }
190 190  
... ...
examples/pdf-invert-images.cc
... ... @@ -14,8 +14,8 @@ static char const* whoami = nullptr;
14 14 void
15 15 usage()
16 16 {
17   - std::cerr << "Usage: " << whoami << " infile.pdf outfile.pdf [in-password]" << std::endl
18   - << "Invert some images in infile.pdf; write output to outfile.pdf" << std::endl;
  17 + std::cerr << "Usage: " << whoami << " infile.pdf outfile.pdf [in-password]\n"
  18 + << "Invert some images in infile.pdf; write output to outfile.pdf\n";
19 19 exit(2);
20 20 }
21 21  
... ... @@ -137,9 +137,9 @@ main(int argc, char* argv[])
137 137 w.setStaticID(true); // for testing only
138 138 }
139 139 w.write();
140   - std::cout << whoami << ": new file written to " << outfilename << std::endl;
  140 + std::cout << whoami << ": new file written to " << outfilename << '\n';
141 141 } catch (std::exception& e) {
142   - std::cerr << whoami << " processing file " << infilename << ": " << e.what() << std::endl;
  142 + std::cerr << whoami << " processing file " << infilename << ": " << e.what() << '\n';
143 143 exit(2);
144 144 }
145 145  
... ...
examples/pdf-mod-info.cc
... ... @@ -39,7 +39,7 @@ dumpInfoDict(QPDF&amp; pdf, std::ostream&amp; os = std::cout, std::string const&amp; sep = &quot;
39 39 {
40 40 val = it.second.unparseResolved();
41 41 }
42   - os << it.first.substr(1) << sep << val << std::endl; // skip '/'
  42 + os << it.first.substr(1) << sep << val << '\n'; // skip '/'
43 43 }
44 44 }
45 45 }
... ... @@ -52,7 +52,7 @@ pdfDumpInfoDict(char const* fname)
52 52 pdf.processFile(fname);
53 53 dumpInfoDict(pdf);
54 54 } catch (std::exception& e) {
55   - std::cerr << e.what() << std::endl;
  55 + std::cerr << e.what() << '\n';
56 56 exit(2);
57 57 }
58 58 }
... ... @@ -66,7 +66,7 @@ main(int argc, char* argv[])
66 66 whoami = QUtil::getWhoami(argv[0]);
67 67  
68 68 if ((argc == 2) && (!strcmp(argv[1], "--version"))) {
69   - std::cout << whoami << " version " << version << std::endl;
  69 + std::cout << whoami << " version " << version << '\n';
70 70 exit(0);
71 71 }
72 72 if ((argc == 3) && (!strcmp(argv[1], "--dump"))) {
... ... @@ -155,7 +155,7 @@ main(int argc, char* argv[])
155 155 w.setStaticID(static_id); // for testing only
156 156 w.write();
157 157 } catch (std::exception& e) {
158   - std::cerr << e.what() << std::endl;
  158 + std::cerr << e.what() << '\n';
159 159 exit(2);
160 160 }
161 161  
... ... @@ -164,7 +164,7 @@ main(int argc, char* argv[])
164 164 QUtil::os_wrapper(
165 165 "rename " + fl_tmp + " " + std::string(fl_out), rename(fl_tmp.c_str(), fl_out));
166 166 } catch (std::exception& e) {
167   - std::cerr << e.what() << std::endl;
  167 + std::cerr << e.what() << '\n';
168 168 exit(2);
169 169 }
170 170  
... ...
examples/pdf-name-number-tree.cc
... ... @@ -10,8 +10,8 @@ static char const* whoami = nullptr;
10 10 void
11 11 usage()
12 12 {
13   - std::cerr << "Usage: " << whoami << " outfile.pdf" << std::endl
14   - << "Create some name/number trees and write to a file" << std::endl;
  13 + std::cerr << "Usage: " << whoami << " outfile.pdf" << '\n'
  14 + << "Create some name/number trees and write to a file\n";
15 15 exit(2);
16 16 }
17 17  
... ... @@ -57,64 +57,63 @@ main(int argc, char* argv[])
57 57 name_tree.insert("N", QPDFObjectHandle::newUnicodeString("knight"));
58 58 auto iter = name_tree.insert("P", QPDFObjectHandle::newUnicodeString("pawn"));
59 59 // Look at the iterator
60   - std::cout << "just inserted " << iter->first << " -> " << iter->second.unparse() << std::endl;
  60 + std::cout << "just inserted " << iter->first << " -> " << iter->second.unparse() << '\n';
61 61 --iter;
62   - std::cout << "predecessor: " << iter->first << " -> " << iter->second.unparse() << std::endl;
  62 + std::cout << "predecessor: " << iter->first << " -> " << iter->second.unparse() << '\n';
63 63 ++iter;
64 64 ++iter;
65   - std::cout << "successor: " << iter->first << " -> " << iter->second.unparse() << std::endl;
  65 + std::cout << "successor: " << iter->first << " -> " << iter->second.unparse() << '\n';
66 66  
67 67 // Use range-for iteration
68   - std::cout << "Name tree items:" << std::endl;
  68 + std::cout << "Name tree items:\n";
69 69 for (auto i: name_tree) {
70   - std::cout << " " << i.first << " -> " << i.second.unparse() << std::endl;
  70 + std::cout << " " << i.first << " -> " << i.second.unparse() << '\n';
71 71 }
72 72  
73 73 // This is a small tree, so everything will be at the root. We can look at it using dictionary
74 74 // and array iterators.
75   - std::cout << "Keys in name tree object:" << std::endl;
  75 + std::cout << "Keys in name tree object:\n";
76 76 QPDFObjectHandle names;
77 77 for (auto const& i: name_tree_oh.ditems()) {
78   - std::cout << i.first << std::endl;
  78 + std::cout << i.first << '\n';
79 79 if (i.first == "/Names") {
80 80 names = i.second;
81 81 }
82 82 }
83 83 // Values in names array:
84   - std::cout << "Values in names:" << std::endl;
  84 + std::cout << "Values in names:\n";
85 85 for (auto& i: names.aitems()) {
86   - std::cout << " " << i.unparse() << std::endl;
  86 + std::cout << " " << i.unparse() << '\n';
87 87 }
88 88  
89 89 // pre 10.2 API
90   - std::cout << "Has Q?: " << name_tree.hasName("Q") << std::endl;
91   - std::cout << "Has W?: " << name_tree.hasName("W") << std::endl;
  90 + std::cout << "Has Q?: " << name_tree.hasName("Q") << '\n';
  91 + std::cout << "Has W?: " << name_tree.hasName("W") << '\n';
92 92 QPDFObjectHandle obj;
93   - std::cout << "Found W?: " << name_tree.findObject("W", obj) << std::endl;
94   - std::cout << "Found Q?: " << name_tree.findObject("Q", obj) << std::endl;
95   - std::cout << "Q: " << obj.unparse() << std::endl;
  93 + std::cout << "Found W?: " << name_tree.findObject("W", obj) << '\n';
  94 + std::cout << "Found Q?: " << name_tree.findObject("Q", obj) << '\n';
  95 + std::cout << "Q: " << obj.unparse() << '\n';
96 96  
97 97 // 10.2 API
98 98 iter = name_tree.find("Q");
99   - std::cout << "Q: " << iter->first << " -> " << iter->second.unparse() << std::endl;
  99 + std::cout << "Q: " << iter->first << " -> " << iter->second.unparse() << '\n';
100 100 iter = name_tree.find("W");
101   - std::cout << "W found: " << (iter != name_tree.end()) << std::endl;
  101 + std::cout << "W found: " << (iter != name_tree.end()) << '\n';
102 102 // Allow find to return predecessor
103 103 iter = name_tree.find("W", true);
104   - std::cout << "W's predecessor: " << iter->first << " -> " << iter->second.unparse()
105   - << std::endl;
  104 + std::cout << "W's predecessor: " << iter->first << " -> " << iter->second.unparse() << '\n';
106 105  
107 106 // We can also remove items
108   - std::cout << "Remove P: " << name_tree.remove("P", &obj) << std::endl;
109   - std::cout << "Value removed: " << obj.unparse() << std::endl;
110   - std::cout << "Has P?: " << name_tree.hasName("P") << std::endl;
  107 + std::cout << "Remove P: " << name_tree.remove("P", &obj) << '\n';
  108 + std::cout << "Value removed: " << obj.unparse() << '\n';
  109 + std::cout << "Has P?: " << name_tree.hasName("P") << '\n';
111 110 // Or we can remove using an iterator
112 111 iter = name_tree.find("K");
113   - std::cout << "Find K: " << iter->second.unparse() << std::endl;
  112 + std::cout << "Find K: " << iter->second.unparse() << '\n';
114 113 iter.remove();
115 114 std::cout << "Iter after removing K: " << iter->first << " -> " << iter->second.unparse()
116   - << std::endl;
117   - std::cout << "Has K?: " << name_tree.hasName("K") << std::endl;
  115 + << '\n';
  116 + std::cout << "Has K?: " << name_tree.hasName("K") << '\n';
118 117  
119 118 // Illustrate some more advanced usage using number trees. These calls work for name trees too.
120 119  
... ... @@ -129,14 +128,14 @@ main(int argc, char* argv[])
129 128 for (int i = 7; i <= 350; i += 7) {
130 129 iter2.insertAfter(i, QPDFObjectHandle::newString("-" + std::to_string(i) + "-"));
131 130 }
132   - std::cout << "Numbers:" << std::endl;
  131 + std::cout << "Numbers:\n";
133 132 int n = 1;
134 133 for (auto& i: number_tree) {
135 134 std::cout << i.first << " -> " << i.second.getUTF8Value();
136 135 if (n % 5) {
137 136 std::cout << ", ";
138 137 } else {
139   - std::cout << std::endl;
  138 + std::cout << '\n';
140 139 }
141 140 ++n;
142 141 }
... ... @@ -151,14 +150,14 @@ main(int argc, char* argv[])
151 150 ++iter2;
152 151 }
153 152 }
154   - std::cout << "Numbers after filtering:" << std::endl;
  153 + std::cout << "Numbers after filtering:\n";
155 154 n = 1;
156 155 for (auto& i: number_tree) {
157 156 std::cout << i.first << " -> " << i.second.getUTF8Value();
158 157 if (n % 5) {
159 158 std::cout << ", ";
160 159 } else {
161   - std::cout << std::endl;
  160 + std::cout << '\n';
162 161 }
163 162 ++n;
164 163 }
... ...
examples/pdf-npages.cc
... ... @@ -10,8 +10,8 @@ static char const* whoami = nullptr;
10 10 void
11 11 usage()
12 12 {
13   - std::cerr << "Usage: " << whoami << " filename" << std::endl
14   - << "Prints the number of pages in filename" << std::endl;
  13 + std::cerr << "Usage: " << whoami << " filename\n"
  14 + << "Prints the number of pages in filename\n";
15 15 exit(2);
16 16 }
17 17  
... ... @@ -21,7 +21,7 @@ main(int argc, char* argv[])
21 21 whoami = QUtil::getWhoami(argv[0]);
22 22  
23 23 if ((argc == 2) && (strcmp(argv[1], "--version") == 0)) {
24   - std::cout << whoami << " version 1.3" << std::endl;
  24 + std::cout << whoami << " version 1.3\n";
25 25 exit(0);
26 26 }
27 27  
... ... @@ -36,9 +36,9 @@ main(int argc, char* argv[])
36 36 QPDFObjectHandle root = pdf.getRoot();
37 37 QPDFObjectHandle pages = root.getKey("/Pages");
38 38 QPDFObjectHandle count = pages.getKey("/Count");
39   - std::cout << count.getIntValue() << std::endl;
  39 + std::cout << count.getIntValue() << '\n';
40 40 } catch (std::exception& e) {
41   - std::cerr << whoami << ": " << e.what() << std::endl;
  41 + std::cerr << whoami << ": " << e.what() << '\n';
42 42 exit(2);
43 43 }
44 44  
... ...
examples/pdf-overlay-page.cc
... ... @@ -15,9 +15,8 @@ static char const* whoami = nullptr;
15 15 void
16 16 usage()
17 17 {
18   - std::cerr << "Usage: " << whoami << " infile pagefile outfile" << std::endl
19   - << "Stamp page 1 of pagefile on every page of infile, writing to outfile"
20   - << std::endl;
  18 + std::cerr << "Usage: " << whoami << " infile pagefile outfile\n"
  19 + << "Stamp page 1 of pagefile on every page of infile, writing to outfile\n";
21 20 exit(2);
22 21 }
23 22  
... ... @@ -81,7 +80,7 @@ main(int argc, char* argv[])
81 80 try {
82 81 stamp_page(infile, stampfile, outfile);
83 82 } catch (std::exception& e) {
84   - std::cerr << whoami << ": " << e.what() << std::endl;
  83 + std::cerr << whoami << ": " << e.what() << '\n';
85 84 exit(2);
86 85 }
87 86 return 0;
... ...
examples/pdf-parse-content.cc
... ... @@ -12,10 +12,10 @@ static char const* whoami = nullptr;
12 12 void
13 13 usage()
14 14 {
15   - std::cerr << "Usage: " << whoami << " filename page-number" << std::endl
16   - << "Prints a dump of the objects in the content streams of the given page."
17   - << std::endl
18   - << "Pages are numbered from 1." << std::endl;
  15 + std::cerr << "Usage: " << whoami << " filename page-number\n"
  16 + << "Prints a dump of the objects in the content streams of the given page.\n"
  17 + << '\n'
  18 + << "Pages are numbered from 1.\n";
19 19 exit(2);
20 20 }
21 21  
... ... @@ -31,7 +31,7 @@ class ParserCallbacks: public QPDFObjectHandle::ParserCallbacks
31 31 void
32 32 ParserCallbacks::contentSize(size_t size)
33 33 {
34   - std::cout << "content size: " << size << std::endl;
  34 + std::cout << "content size: " << size << '\n';
35 35 }
36 36  
37 37 void
... ... @@ -39,16 +39,16 @@ ParserCallbacks::handleObject(QPDFObjectHandle obj, size_t offset, size_t length
39 39 {
40 40 std::cout << obj.getTypeName() << ", offset=" << offset << ", length=" << length << ": ";
41 41 if (obj.isInlineImage()) {
42   - std::cout << QUtil::hex_encode(obj.getInlineImageValue()) << std::endl;
  42 + std::cout << QUtil::hex_encode(obj.getInlineImageValue()) << '\n';
43 43 } else {
44   - std::cout << obj.unparse() << std::endl;
  44 + std::cout << obj.unparse() << '\n';
45 45 }
46 46 }
47 47  
48 48 void
49 49 ParserCallbacks::handleEOF()
50 50 {
51   - std::cout << "-EOF-" << std::endl;
  51 + std::cout << "-EOF-\n";
52 52 }
53 53  
54 54 int
... ... @@ -74,7 +74,7 @@ main(int argc, char* argv[])
74 74 ParserCallbacks cb;
75 75 page.parseContents(&cb);
76 76 } catch (std::exception& e) {
77   - std::cerr << whoami << ": " << e.what() << std::endl;
  77 + std::cerr << whoami << ": " << e.what() << '\n';
78 78 exit(2);
79 79 }
80 80  
... ...
examples/pdf-set-form-values.cc
... ... @@ -11,8 +11,8 @@ static char const* whoami = nullptr;
11 11 void
12 12 usage()
13 13 {
14   - std::cerr << "Usage: " << whoami << " infile.pdf outfile.pdf value" << std::endl
15   - << "Set the value of all text fields to a specified value" << std::endl;
  14 + std::cerr << "Usage: " << whoami << " infile.pdf outfile.pdf value\n"
  15 + << "Set the value of all text fields to a specified value\n";
16 16 exit(2);
17 17 }
18 18  
... ... @@ -68,7 +68,7 @@ main(int argc, char* argv[])
68 68 w.setStaticID(true); // for testing only
69 69 w.write();
70 70 } catch (std::exception& e) {
71   - std::cerr << whoami << " processing file " << infilename << ": " << e.what() << std::endl;
  71 + std::cerr << whoami << " processing file " << infilename << ": " << e.what() << '\n';
72 72 exit(2);
73 73 }
74 74  
... ...
examples/pdf-split-pages.cc
... ... @@ -42,7 +42,7 @@ process(char const* whoami, char const* infile, std::string outprefix)
42 42 void
43 43 usage(char const* whoami)
44 44 {
45   - std::cerr << "Usage: " << whoami << " infile outprefix" << std::endl;
  45 + std::cerr << "Usage: " << whoami << " infile outprefix\n";
46 46 exit(2);
47 47 }
48 48  
... ... @@ -64,7 +64,7 @@ main(int argc, char* argv[])
64 64 try {
65 65 process(whoami, argv[1], argv[2]);
66 66 } catch (std::exception const& e) {
67   - std::cerr << whoami << ": exception: " << e.what() << std::endl;
  67 + std::cerr << whoami << ": exception: " << e.what() << '\n';
68 68 return 2;
69 69 }
70 70 return 0;
... ...
examples/qpdf-job.cc
... ... @@ -10,11 +10,10 @@ static char const* whoami = nullptr;
10 10 static void
11 11 usage()
12 12 {
13   - std::cerr << "Usage: " << whoami << std::endl
  13 + std::cerr << "Usage: " << whoami << '\n'
14 14 << "This program linearizes the first page of in.pdf to out1.pdf, out2.pdf, and"
15   - << std::endl
16   - << " out3.pdf, each demonstrating a different way to use the QPDFJob API"
17   - << std::endl;
  15 + << '\n'
  16 + << " out3.pdf, each demonstrating a different way to use the QPDFJob API" << '\n';
18 17 exit(2);
19 18 }
20 19  
... ... @@ -49,9 +48,9 @@ main(int argc, char* argv[])
49 48 ->compressStreams("n") // avoid dependency on zlib output
50 49 ->checkConfiguration();
51 50 j.run();
52   - std::cout << "out1 status: " << j.getExitCode() << std::endl;
  51 + std::cout << "out1 status: " << j.getExitCode() << '\n';
53 52 } catch (std::exception& e) {
54   - std::cerr << "exception: " << e.what() << std::endl;
  53 + std::cerr << "exception: " << e.what() << '\n';
55 54 return 2;
56 55 }
57 56  
... ... @@ -71,9 +70,9 @@ main(int argc, char* argv[])
71 70 QPDFJob j;
72 71 j.initializeFromArgv(new_argv);
73 72 j.run();
74   - std::cout << "out2 status: " << j.getExitCode() << std::endl;
  73 + std::cout << "out2 status: " << j.getExitCode() << '\n';
75 74 } catch (std::exception& e) {
76   - std::cerr << "exception: " << e.what() << std::endl;
  75 + std::cerr << "exception: " << e.what() << '\n';
77 76 return 2;
78 77 }
79 78  
... ... @@ -95,9 +94,9 @@ main(int argc, char* argv[])
95 94 }
96 95 )");
97 96 j.run();
98   - std::cout << "out3 status: " << j.getExitCode() << std::endl;
  97 + std::cout << "out3 status: " << j.getExitCode() << '\n';
99 98 } catch (std::exception& e) {
100   - std::cerr << "exception: " << e.what() << std::endl;
  99 + std::cerr << "exception: " << e.what() << '\n';
101 100 return 2;
102 101 }
103 102  
... ...
examples/qpdfjob-save-attachment.cc
... ... @@ -13,7 +13,7 @@ main(int argc, char* argv[])
13 13 auto whoami = QUtil::getWhoami(argv[0]);
14 14  
15 15 if (argc != 4) {
16   - std::cerr << "Usage: " << whoami << " file attachment-key outfile" << std::endl;
  16 + std::cerr << "Usage: " << whoami << " file attachment-key outfile" << '\n';
17 17 exit(2);
18 18 }
19 19  
... ... @@ -40,10 +40,10 @@ main(int argc, char* argv[])
40 40 j.initializeFromArgv(j_argv);
41 41 j.run();
42 42 } catch (std::exception& e) {
43   - std::cerr << whoami << ": " << e.what() << std::endl;
  43 + std::cerr << whoami << ": " << e.what() << '\n';
44 44 exit(2);
45 45 }
46 46  
47   - std::cout << whoami << ": wrote attachment to " << outfilename << std::endl;
  47 + std::cout << whoami << ": wrote attachment to " << outfilename << '\n';
48 48 return 0;
49 49 }
... ...
fuzz/ascii85_fuzzer.cc
... ... @@ -37,7 +37,7 @@ FuzzHelper::run()
37 37 try {
38 38 doChecks();
39 39 } catch (std::runtime_error const& e) {
40   - std::cerr << "runtime_error: " << e.what() << std::endl;
  40 + std::cerr << "runtime_error: " << e.what() << '\n';
41 41 }
42 42 }
43 43  
... ...
fuzz/dct_fuzzer.cc
... ... @@ -49,7 +49,7 @@ FuzzHelper::run()
49 49 try {
50 50 doChecks();
51 51 } catch (std::runtime_error const& e) {
52   - std::cerr << "runtime_error: " << e.what() << std::endl;
  52 + std::cerr << "runtime_error: " << e.what() << '\n';
53 53 }
54 54 }
55 55  
... ...
fuzz/flate_fuzzer.cc
... ... @@ -37,7 +37,7 @@ FuzzHelper::run()
37 37 try {
38 38 doChecks();
39 39 } catch (std::runtime_error const& e) {
40   - std::cerr << "runtime_error: " << e.what() << std::endl;
  40 + std::cerr << "runtime_error: " << e.what() << '\n';
41 41 }
42 42 }
43 43  
... ...
fuzz/hex_fuzzer.cc
... ... @@ -37,7 +37,7 @@ FuzzHelper::run()
37 37 try {
38 38 doChecks();
39 39 } catch (std::runtime_error const& e) {
40   - std::cerr << "runtime_error: " << e.what() << std::endl;
  40 + std::cerr << "runtime_error: " << e.what() << '\n';
41 41 }
42 42 }
43 43  
... ...
fuzz/json_fuzzer.cc
... ... @@ -30,7 +30,7 @@ FuzzHelper::doChecks()
30 30 try {
31 31 JSON::parse(std::string(reinterpret_cast<char const*>(data), size));
32 32 } catch (std::runtime_error& e) {
33   - std::cerr << "runtime_error parsing json: " << e.what() << std::endl;
  33 + std::cerr << "runtime_error parsing json: " << e.what() << '\n';
34 34 }
35 35 QPDF q;
36 36 q.setMaxWarnings(1000);
... ... @@ -45,7 +45,7 @@ FuzzHelper::run()
45 45 try {
46 46 doChecks();
47 47 } catch (std::runtime_error const& e) {
48   - std::cerr << "runtime_error: " << e.what() << std::endl;
  48 + std::cerr << "runtime_error: " << e.what() << '\n';
49 49 }
50 50 }
51 51  
... ...
fuzz/lzw_fuzzer.cc
... ... @@ -37,7 +37,7 @@ FuzzHelper::run()
37 37 try {
38 38 doChecks();
39 39 } catch (std::runtime_error const& e) {
40   - std::cerr << "runtime_error: " << e.what() << std::endl;
  40 + std::cerr << "runtime_error: " << e.what() << '\n';
41 41 }
42 42 }
43 43  
... ...
fuzz/pngpredictor_fuzzer.cc
... ... @@ -37,7 +37,7 @@ FuzzHelper::run()
37 37 try {
38 38 doChecks();
39 39 } catch (std::runtime_error const& e) {
40   - std::cerr << "runtime_error: " << e.what() << std::endl;
  40 + std::cerr << "runtime_error: " << e.what() << '\n';
41 41 }
42 42 }
43 43  
... ...
fuzz/qpdf_crypt_fuzzer.cc
... ... @@ -76,9 +76,9 @@ FuzzHelper::doWrite(std::shared_ptr&lt;QPDFWriter&gt; w)
76 76 try {
77 77 w->write();
78 78 } catch (QPDFExc const& e) {
79   - std::cerr << e.what() << std::endl;
  79 + std::cerr << e.what() << '\n';
80 80 } catch (std::runtime_error const& e) {
81   - std::cerr << e.what() << std::endl;
  81 + std::cerr << e.what() << '\n';
82 82 }
83 83 }
84 84  
... ... @@ -135,9 +135,9 @@ FuzzHelper::run()
135 135 try {
136 136 doChecks();
137 137 } catch (QPDFExc const& e) {
138   - std::cerr << "QPDFExc: " << e.what() << std::endl;
  138 + std::cerr << "QPDFExc: " << e.what() << '\n';
139 139 } catch (std::runtime_error const& e) {
140   - std::cerr << "runtime_error: " << e.what() << std::endl;
  140 + std::cerr << "runtime_error: " << e.what() << '\n';
141 141 }
142 142 }
143 143  
... ...
fuzz/qpdf_crypt_insecure_fuzzer.cc
... ... @@ -75,9 +75,9 @@ FuzzHelper::doWrite(std::shared_ptr&lt;QPDFWriter&gt; w)
75 75 try {
76 76 w->write();
77 77 } catch (QPDFExc const& e) {
78   - std::cerr << e.what() << std::endl;
  78 + std::cerr << e.what() << '\n';
79 79 } catch (std::runtime_error const& e) {
80   - std::cerr << e.what() << std::endl;
  80 + std::cerr << e.what() << '\n';
81 81 }
82 82 }
83 83  
... ... @@ -135,9 +135,9 @@ FuzzHelper::run()
135 135 try {
136 136 doChecks();
137 137 } catch (QPDFExc const& e) {
138   - std::cerr << "QPDFExc: " << e.what() << std::endl;
  138 + std::cerr << "QPDFExc: " << e.what() << '\n';
139 139 } catch (std::runtime_error const& e) {
140   - std::cerr << "runtime_error: " << e.what() << std::endl;
  140 + std::cerr << "runtime_error: " << e.what() << '\n';
141 141 }
142 142 }
143 143  
... ...
fuzz/qpdf_fuzzer.cc
... ... @@ -75,9 +75,9 @@ FuzzHelper::doWrite(std::shared_ptr&lt;QPDFWriter&gt; w)
75 75 try {
76 76 w->write();
77 77 } catch (QPDFExc const& e) {
78   - std::cerr << e.what() << std::endl;
  78 + std::cerr << e.what() << '\n';
79 79 } catch (std::runtime_error const& e) {
80   - std::cerr << e.what() << std::endl;
  80 + std::cerr << e.what() << '\n';
81 81 }
82 82 }
83 83  
... ... @@ -133,9 +133,9 @@ FuzzHelper::run()
133 133 try {
134 134 doChecks();
135 135 } catch (QPDFExc const& e) {
136   - std::cerr << "QPDFExc: " << e.what() << std::endl;
  136 + std::cerr << "QPDFExc: " << e.what() << '\n';
137 137 } catch (std::runtime_error const& e) {
138   - std::cerr << "runtime_error: " << e.what() << std::endl;
  138 + std::cerr << "runtime_error: " << e.what() << '\n';
139 139 }
140 140 }
141 141  
... ...
fuzz/qpdf_lin_fuzzer.cc
... ... @@ -75,9 +75,9 @@ FuzzHelper::doWrite(std::shared_ptr&lt;QPDFWriter&gt; w)
75 75 try {
76 76 w->write();
77 77 } catch (QPDFExc const& e) {
78   - std::cerr << e.what() << std::endl;
  78 + std::cerr << e.what() << '\n';
79 79 } catch (std::runtime_error const& e) {
80   - std::cerr << e.what() << std::endl;
  80 + std::cerr << e.what() << '\n';
81 81 }
82 82 }
83 83  
... ... @@ -134,9 +134,9 @@ FuzzHelper::run()
134 134 try {
135 135 doChecks();
136 136 } catch (QPDFExc const& e) {
137   - std::cerr << "QPDFExc: " << e.what() << std::endl;
  137 + std::cerr << "QPDFExc: " << e.what() << '\n';
138 138 } catch (std::runtime_error const& e) {
139   - std::cerr << "runtime_error: " << e.what() << std::endl;
  139 + std::cerr << "runtime_error: " << e.what() << '\n';
140 140 }
141 141 }
142 142  
... ...
fuzz/qpdf_outlines_fuzzer.cc
... ... @@ -111,9 +111,9 @@ FuzzHelper::run()
111 111 try {
112 112 doChecks();
113 113 } catch (QPDFExc const& e) {
114   - std::cerr << "QPDFExc: " << e.what() << std::endl;
  114 + std::cerr << "QPDFExc: " << e.what() << '\n';
115 115 } catch (std::runtime_error const& e) {
116   - std::cerr << "runtime_error: " << e.what() << std::endl;
  116 + std::cerr << "runtime_error: " << e.what() << '\n';
117 117 }
118 118 }
119 119  
... ...
fuzz/qpdf_pages_fuzzer.cc
... ... @@ -132,9 +132,9 @@ FuzzHelper::run()
132 132 try {
133 133 doChecks();
134 134 } catch (QPDFExc const& e) {
135   - std::cerr << "QPDFExc: " << e.what() << std::endl;
  135 + std::cerr << "QPDFExc: " << e.what() << '\n';
136 136 } catch (std::runtime_error const& e) {
137   - std::cerr << "runtime_error: " << e.what() << std::endl;
  137 + std::cerr << "runtime_error: " << e.what() << '\n';
138 138 }
139 139 }
140 140  
... ...
fuzz/runlength_fuzzer.cc
... ... @@ -38,7 +38,7 @@ FuzzHelper::run()
38 38 try {
39 39 doChecks();
40 40 } catch (std::runtime_error const& e) {
41   - std::cerr << "runtime_error: " << e.what() << std::endl;
  41 + std::cerr << "runtime_error: " << e.what() << '\n';
42 42 }
43 43 }
44 44  
... ...
fuzz/standalone_fuzz_target_runner.cc
... ... @@ -12,7 +12,7 @@ main(int argc, char** argv)
12 12 size_t size = 0;
13 13 QUtil::read_file_into_memory(argv[i], file_buf, size);
14 14 LLVMFuzzerTestOneInput(reinterpret_cast<unsigned char*>(file_buf.get()), size);
15   - std::cout << argv[i] << " successful" << std::endl;
  15 + std::cout << argv[i] << " successful" << '\n';
16 16 }
17 17 return 0;
18 18 }
... ...
fuzz/tiffpredictor_fuzzer.cc
... ... @@ -41,7 +41,7 @@ FuzzHelper::run()
41 41 try {
42 42 doChecks();
43 43 } catch (std::runtime_error const& e) {
44   - std::cerr << "runtime_error: " << e.what() << std::endl;
  44 + std::cerr << "runtime_error: " << e.what() << '\n';
45 45 }
46 46 }
47 47  
... ...
libqpdf/QPDFArgParser.cc
... ... @@ -198,13 +198,13 @@ QPDFArgParser::completionCommon(bool zsh)
198 198 if (!zsh) {
199 199 std::cout << " -o nospace";
200 200 }
201   - std::cout << " -C \"" << progname << "\" " << m->whoami << std::endl;
  201 + std::cout << " -C \"" << progname << "\" " << m->whoami << '\n';
202 202 // Put output before error so calling from zsh works properly
203 203 std::string path = progname;
204 204 size_t slash = path.find('/');
205 205 if ((slash != 0) && (slash != std::string::npos)) {
206 206 std::cerr << "WARNING: " << m->whoami << " completion enabled"
207   - << " using relative path to executable" << std::endl;
  207 + << " using relative path to executable" << '\n';
208 208 }
209 209 }
210 210  
... ... @@ -666,7 +666,7 @@ QPDFArgParser::handleCompletion()
666 666 std::string prefix = extra_prefix + m->bash_cur;
667 667 for (auto const& iter: m->completions) {
668 668 if (prefix.empty() || (iter.substr(0, prefix.length()) == prefix)) {
669   - std::cout << iter << std::endl;
  669 + std::cout << iter << '\n';
670 670 }
671 671 }
672 672 exit(0);
... ... @@ -729,13 +729,13 @@ QPDFArgParser::addOptionHelp(
729 729 void
730 730 QPDFArgParser::getTopHelp(std::ostringstream& msg)
731 731 {
732   - msg << "Run \"" << m->whoami << " --help=topic\" for help on a topic." << std::endl
733   - << "Run \"" << m->whoami << " --help=--option\" for help on an option." << std::endl
734   - << "Run \"" << m->whoami << " --help=all\" to see all available help." << std::endl
735   - << std::endl
736   - << "Topics:" << std::endl;
  732 + msg << "Run \"" << m->whoami << " --help=topic\" for help on a topic." << '\n'
  733 + << "Run \"" << m->whoami << " --help=--option\" for help on an option." << '\n'
  734 + << "Run \"" << m->whoami << " --help=all\" to see all available help." << '\n'
  735 + << '\n'
  736 + << "Topics:" << '\n';
737 737 for (auto const& i: m->help_topics) {
738   - msg << " " << i.first << ": " << i.second.short_text << std::endl;
  738 + msg << " " << i.first << ": " << i.second.short_text << '\n';
739 739 }
740 740 }
741 741  
... ... @@ -746,29 +746,27 @@ QPDFArgParser::getAllHelp(std::ostringstream&amp; msg)
746 746 auto show = [this, &msg](std::map<std::string, HelpTopic>& topics) {
747 747 for (auto const& i: topics) {
748 748 auto const& topic = i.first;
749   - msg << std::endl
750   - << "== " << topic << " (" << i.second.short_text << ") ==" << std::endl
751   - << std::endl;
  749 + msg << '\n' << "== " << topic << " (" << i.second.short_text << ") ==" << '\n' << '\n';
752 750 getTopicHelp(topic, i.second, msg);
753 751 }
754 752 };
755 753 show(m->help_topics);
756 754 show(m->option_help);
757   - msg << std::endl << "====" << std::endl;
  755 + msg << '\n' << "====" << '\n';
758 756 }
759 757  
760 758 void
761 759 QPDFArgParser::getTopicHelp(std::string const& name, HelpTopic const& ht, std::ostringstream& msg)
762 760 {
763 761 if (ht.long_text.empty()) {
764   - msg << ht.short_text << std::endl;
  762 + msg << ht.short_text << '\n';
765 763 } else {
766 764 msg << ht.long_text;
767 765 }
768 766 if (!ht.options.empty()) {
769   - msg << std::endl << "Related options:" << std::endl;
  767 + msg << '\n' << "Related options:" << '\n';
770 768 for (auto const& i: ht.options) {
771   - msg << " " << i << ": " << m->option_help[i].short_text << std::endl;
  769 + msg << " " << i << ": " << m->option_help[i].short_text << '\n';
772 770 }
773 771 }
774 772 }
... ...
libqpdf/QPDFJob_json.cc
... ... @@ -630,7 +630,7 @@ QPDFJob::initializeFromJson(std::string const&amp; json, bool partial)
630 630 std::ostringstream msg;
631 631 msg << m->message_prefix << ": job json has errors:";
632 632 for (auto const& error: errors) {
633   - msg << std::endl << " " << error;
  633 + msg << "\n " << error;
634 634 }
635 635 throw std::runtime_error(msg.str());
636 636 }
... ...
libqpdf/QPDF_json.cc
... ... @@ -161,7 +161,7 @@ QPDF::test_json_validators()
161 161 auto check_fn = [&passed](char const* msg, bool expr) {
162 162 if (!expr) {
163 163 passed = false;
164   - std::cerr << msg << std::endl;
  164 + std::cerr << msg << '\n';
165 165 }
166 166 };
167 167 #define check(expr) check_fn(#expr, expr)
... ...
libtests/aes.cc
... ... @@ -11,15 +11,15 @@
11 11 static void
12 12 usage()
13 13 {
14   - std::cerr << "Usage: aes options hex-key infile outfile" << std::endl
15   - << " -cbc -- disable CBC mode" << std::endl
16   - << " +cbc -- enable CBC mode" << std::endl
17   - << " -encrypt -- encrypt" << std::endl
18   - << " -decrypt -- decrypt CBC mode" << std::endl
19   - << " -zero-iv -- use zero initialization vector" << std::endl
20   - << " -static-iv -- use static initialization vector" << std::endl
21   - << " -no-padding -- disable padding" << std::endl
22   - << "Options must precede key and file names." << std::endl;
  14 + std::cerr << "Usage: aes options hex-key infile outfile" << '\n'
  15 + << " -cbc -- disable CBC mode" << '\n'
  16 + << " +cbc -- enable CBC mode" << '\n'
  17 + << " -encrypt -- encrypt" << '\n'
  18 + << " -decrypt -- decrypt CBC mode" << '\n'
  19 + << " -zero-iv -- use zero initialization vector" << '\n'
  20 + << " -static-iv -- use static initialization vector" << '\n'
  21 + << " -no-padding -- disable padding" << '\n'
  22 + << "Options must precede key and file names." << '\n';
23 23 exit(2);
24 24 }
25 25  
... ...
libtests/arg_parser.cc
... ... @@ -82,7 +82,7 @@ void
82 82 ArgParser::output(std::string const& msg)
83 83 {
84 84 if (!this->ap.isCompleting()) {
85   - std::cout << msg << std::endl;
  85 + std::cout << msg << '\n';
86 86 }
87 87 }
88 88  
... ... @@ -160,7 +160,7 @@ ArgParser::test_exceptions()
160 160 fn();
161 161 assert(msg == nullptr);
162 162 } catch (std::exception& e) {
163   - std::cout << msg << ": " << e.what() << std::endl;
  163 + std::cout << msg << ": " << e.what() << '\n';
164 164 }
165 165 };
166 166  
... ... @@ -196,10 +196,10 @@ main(int argc, char* argv[])
196 196 try {
197 197 ap.parseArgs();
198 198 } catch (QPDFUsage& e) {
199   - std::cerr << "usage: " << e.what() << std::endl;
  199 + std::cerr << "usage: " << e.what() << '\n';
200 200 exit(2);
201 201 } catch (std::exception& e) {
202   - std::cerr << "exception: " << e.what() << std::endl;
  202 + std::cerr << "exception: " << e.what() << '\n';
203 203 exit(3);
204 204 }
205 205 return 0;
... ...
libtests/ascii85.cc
... ... @@ -23,7 +23,7 @@ main()
23 23 }
24 24 decode.finish();
25 25 } catch (std::exception& e) {
26   - std::cerr << e.what() << std::endl;
  26 + std::cerr << e.what() << '\n';
27 27 exit(2);
28 28 }
29 29  
... ...
libtests/base64.cc
... ... @@ -20,7 +20,7 @@ write_some(FILE* f, size_t bytes, Pipeline* p)
20 20 }
21 21 if (len < bytes) {
22 22 if (ferror(f)) {
23   - std::cerr << "error reading file" << std::endl;
  23 + std::cerr << "error reading file" << '\n';
24 24 exit(2);
25 25 }
26 26 p->finish();
... ... @@ -32,7 +32,7 @@ write_some(FILE* f, size_t bytes, Pipeline* p)
32 32 static void
33 33 usage()
34 34 {
35   - std::cerr << "Usage: base64 encode|decode" << std::endl;
  35 + std::cerr << "Usage: base64 encode|decode" << '\n';
36 36 exit(2);
37 37 }
38 38  
... ... @@ -74,7 +74,7 @@ main(int argc, char* argv[])
74 74 }
75 75 }
76 76 } catch (std::exception& e) {
77   - std::cout << "exception: " << e.what() << std::endl;
  77 + std::cout << "exception: " << e.what() << '\n';
78 78 exit(2);
79 79 }
80 80  
... ...
libtests/bits.cc
... ... @@ -16,7 +16,7 @@ static void
16 16 print_values(long long byte_offset, size_t bit_offset, size_t bits_available)
17 17 {
18 18 std::cout << "byte offset = " << byte_offset << ", " << "bit offset = " << bit_offset << ", "
19   - << "bits available = " << bits_available << std::endl;
  19 + << "bits available = " << bits_available << '\n';
20 20 }
21 21  
22 22 static void
... ... @@ -29,7 +29,7 @@ test_read_bits(
29 29 {
30 30 unsigned long result = QIntC::to_ulong(read_bits(p, bit_offset, bits_available, bits_wanted));
31 31  
32   - std::cout << "bits read: " << bits_wanted << ", result = " << result << std::endl;
  32 + std::cout << "bits read: " << bits_wanted << ", result = " << result << '\n';
33 33 print_values(p - buf, bit_offset, bits_available);
34 34 }
35 35  
... ... @@ -39,7 +39,7 @@ test_write_bits(
39 39 {
40 40 write_bits(ch, bit_offset, val, bits, bp);
41 41 std::cout << "ch = " << QUtil::uint_to_string_base(ch, 16, 2) << ", bit_offset = " << bit_offset
42   - << std::endl;
  42 + << '\n';
43 43 }
44 44  
45 45 static void
... ... @@ -52,7 +52,7 @@ print_buffer(Pl_Buffer* bp)
52 52 for (unsigned long i = 0; i < l; ++i) {
53 53 std::cout << QUtil::uint_to_string_base(p[i], 16, 2) << ((i == l - 1) ? "\n" : " ");
54 54 }
55   - std::cout << std::endl;
  55 + std::cout << '\n';
56 56 delete b;
57 57 }
58 58  
... ... @@ -86,12 +86,12 @@ test()
86 86 try {
87 87 test_read_bits(buf, p, bit_offset, bits_available, 4);
88 88 } catch (std::exception& e) {
89   - std::cout << "exception: " << e.what() << std::endl;
  89 + std::cout << "exception: " << e.what() << '\n';
90 90 print_values(p - buf, bit_offset, bits_available);
91 91 }
92 92  
93 93 test_read_bits(buf, p, bit_offset, bits_available, 3);
94   - std::cout << std::endl;
  94 + std::cout << '\n';
95 95  
96 96 // 11110101 00010101 01100101 01111001: 00010010 10001001 01110101 01001011
97 97  
... ... @@ -101,29 +101,29 @@ test()
101 101 print_values(p - buf, bit_offset, bits_available);
102 102 test_read_bits(buf, p, bit_offset, bits_available, 32);
103 103 test_read_bits(buf, p, bit_offset, bits_available, 32);
104   - std::cout << std::endl;
  104 + std::cout << '\n';
105 105  
106 106 BitStream b(buf, 8);
107   - std::cout << b.getBits(32) << std::endl;
  107 + std::cout << b.getBits(32) << '\n';
108 108 b.reset();
109   - std::cout << b.getBits(32) << std::endl;
110   - std::cout << b.getBits(32) << std::endl;
111   - std::cout << std::endl;
  109 + std::cout << b.getBits(32) << '\n';
  110 + std::cout << b.getBits(32) << '\n';
  111 + std::cout << '\n';
112 112  
113 113 b.reset();
114   - std::cout << b.getBits(6) << std::endl;
  114 + std::cout << b.getBits(6) << '\n';
115 115 b.skipToNextByte();
116   - std::cout << b.getBits(8) << std::endl;
  116 + std::cout << b.getBits(8) << '\n';
117 117 b.skipToNextByte();
118   - std::cout << b.getBits(8) << std::endl;
119   - std::cout << std::endl;
  118 + std::cout << b.getBits(8) << '\n';
  119 + std::cout << '\n';
120 120 b.reset();
121   - std::cout << b.getBitsSigned(3) << std::endl;
122   - std::cout << b.getBitsSigned(6) << std::endl;
123   - std::cout << b.getBitsSigned(5) << std::endl;
124   - std::cout << b.getBitsSigned(1) << std::endl;
125   - std::cout << b.getBitsSigned(17) << std::endl;
126   - std::cout << std::endl;
  121 + std::cout << b.getBitsSigned(3) << '\n';
  122 + std::cout << b.getBitsSigned(6) << '\n';
  123 + std::cout << b.getBitsSigned(5) << '\n';
  124 + std::cout << b.getBitsSigned(1) << '\n';
  125 + std::cout << b.getBitsSigned(17) << '\n';
  126 + std::cout << '\n';
127 127  
128 128 // Write tests
129 129  
... ... @@ -176,9 +176,9 @@ main()
176 176 try {
177 177 test();
178 178 } catch (std::exception& e) {
179   - std::cout << "unexpected exception: " << e.what() << std::endl;
  179 + std::cout << "unexpected exception: " << e.what() << '\n';
180 180 exit(2);
181 181 }
182   - std::cout << "done" << std::endl;
  182 + std::cout << "done" << '\n';
183 183 return 0;
184 184 }
... ...
libtests/buffer.cc
... ... @@ -85,22 +85,22 @@ main()
85 85 bp1.write(uc("12345"), 5);
86 86 bp1.write(uc("67890"), 5);
87 87 bp1.finish();
88   - std::cout << "count: " << count.getCount() << std::endl;
  88 + std::cout << "count: " << count.getCount() << '\n';
89 89 bp1.write(uc("abcde"), 5);
90 90 bp1.write(uc("fghij"), 6);
91 91 bp1.finish();
92   - std::cout << "count: " << count.getCount() << std::endl;
  92 + std::cout << "count: " << count.getCount() << '\n';
93 93 Buffer* b = bp1.getBuffer();
94   - std::cout << "size: " << b->getSize() << std::endl;
95   - std::cout << "data: " << b->getBuffer() << std::endl;
  94 + std::cout << "size: " << b->getSize() << '\n';
  95 + std::cout << "data: " << b->getBuffer() << '\n';
96 96 delete b;
97 97 bp1.write(uc("qwert"), 5);
98 98 bp1.write(uc("yuiop"), 6);
99 99 bp1.finish();
100   - std::cout << "count: " << count.getCount() << std::endl;
  100 + std::cout << "count: " << count.getCount() << '\n';
101 101 b = bp1.getBuffer();
102   - std::cout << "size: " << b->getSize() << std::endl;
103   - std::cout << "data: " << b->getBuffer() << std::endl;
  102 + std::cout << "size: " << b->getSize() << '\n';
  103 + std::cout << "data: " << b->getBuffer() << '\n';
104 104 delete b;
105 105  
106 106 Pl_Buffer bp2("bp2");
... ... @@ -109,12 +109,12 @@ main()
109 109 try {
110 110 delete bp2.getBuffer();
111 111 } catch (std::exception& e) {
112   - std::cout << e.what() << std::endl;
  112 + std::cout << e.what() << '\n';
113 113 }
114 114 bp2.finish();
115 115 b = bp2.getBuffer();
116   - std::cout << "size: " << b->getSize() << std::endl;
117   - std::cout << "data: " << b->getBuffer() << std::endl;
  116 + std::cout << "size: " << b->getSize() << '\n';
  117 + std::cout << "data: " << b->getBuffer() << '\n';
118 118 delete b;
119 119  
120 120 unsigned char lbuf[10];
... ... @@ -125,17 +125,17 @@ main()
125 125  
126 126 Pl_Buffer bp3("bp3");
127 127 b = bp3.getBuffer();
128   - std::cout << "size: " << b->getSize() << std::endl;
  128 + std::cout << "size: " << b->getSize() << '\n';
129 129 delete b;
130 130 // Should be able to call getBuffer again and get an empty buffer
131 131 b = bp3.getBuffer();
132   - std::cout << "size: " << b->getSize() << std::endl;
  132 + std::cout << "size: " << b->getSize() << '\n';
133 133 delete b;
134 134 // Also can write 0 and do it.
135 135 bp3.write(uc(""), 0);
136 136 bp3.finish();
137 137 b = bp3.getBuffer();
138   - std::cout << "size: " << b->getSize() << std::endl;
  138 + std::cout << "size: " << b->getSize() << '\n';
139 139 delete b;
140 140  
141 141 // Malloc buffer should behave similarly.
... ... @@ -147,7 +147,7 @@ main()
147 147 bp4.getMallocBuffer(&mbuf, &len);
148 148 assert(false);
149 149 } catch (std::logic_error& e) {
150   - std::cout << "malloc buffer logic error: " << e.what() << std::endl;
  150 + std::cout << "malloc buffer logic error: " << e.what() << '\n';
151 151 }
152 152 bp4.finish();
153 153 bp4.getMallocBuffer(&mbuf, &len);
... ... @@ -160,10 +160,10 @@ main()
160 160 assert(mbuf == nullptr);
161 161 assert(len == 0);
162 162 } catch (std::exception& e) {
163   - std::cout << "unexpected exception: " << e.what() << std::endl;
  163 + std::cout << "unexpected exception: " << e.what() << '\n';
164 164 exit(2);
165 165 }
166 166  
167   - std::cout << "done" << std::endl;
  167 + std::cout << "done" << '\n';
168 168 return 0;
169 169 }
... ...
libtests/closed_file_input_source.cc
... ... @@ -8,7 +8,7 @@ void
8 8 check(std::string const& what, bool result)
9 9 {
10 10 if (!result) {
11   - std::cout << "FAIL: " << what << std::endl;
  11 + std::cout << "FAIL: " << what << '\n';
12 12 }
13 13 }
14 14  
... ... @@ -73,6 +73,6 @@ main()
73 73 std::cout << "testing with FileInputSource\n";
74 74 FileInputSource f("input");
75 75 do_tests(&f);
76   - std::cout << "all assertions passed" << std::endl;
  76 + std::cout << "all assertions passed" << '\n';
77 77 return 0;
78 78 }
... ...
libtests/concatenate.cc
... ... @@ -31,9 +31,9 @@ main(int argc, char* argv[])
31 31 auto b2_buf = b2.getBufferSharedPointer();
32 32 std::string result(reinterpret_cast<char*>(b2_buf->getBuffer()), b2_buf->getSize());
33 33 if (result == "-one--two-") {
34   - std::cout << "concatenate test passed" << std::endl;
  34 + std::cout << "concatenate test passed" << '\n';
35 35 } else {
36   - std::cout << "concatenate test failed: " << result << std::endl;
  36 + std::cout << "concatenate test failed: " << result << '\n';
37 37 }
38 38 return 0;
39 39 }
... ...
libtests/dct_compress.cc
... ... @@ -12,7 +12,7 @@
12 12 static void
13 13 usage()
14 14 {
15   - std::cerr << "Usage: dct_compress infile outfile width height {rgb|cmyk|gray}" << std::endl;
  15 + std::cerr << "Usage: dct_compress infile outfile width height {rgb|cmyk|gray}" << '\n';
16 16 exit(2);
17 17 }
18 18  
... ...
libtests/dct_uncompress.cc
... ... @@ -10,7 +10,7 @@ int
10 10 main(int argc, char* argv[])
11 11 {
12 12 if (argc != 3) {
13   - std::cerr << "Usage: dct_uncompress infile outfile" << std::endl;
  13 + std::cerr << "Usage: dct_uncompress infile outfile" << '\n';
14 14 exit(2);
15 15 }
16 16  
... ...
libtests/flate.cc
... ... @@ -53,7 +53,7 @@ run(char const* filename)
53 53  
54 54 def3->finish();
55 55  
56   - std::cout << "bytes written to o3: " << count3->getCount() << std::endl;
  56 + std::cout << "bytes written to o3: " << count3->getCount() << '\n';
57 57  
58 58 delete def3;
59 59 delete inf3;
... ... @@ -76,14 +76,14 @@ run(char const* filename)
76 76 // At this point, filename, filename.2, and filename.3 should have
77 77 // identical contents. filename.1 should be a compressed version.
78 78  
79   - std::cout << "done" << std::endl;
  79 + std::cout << "done" << '\n';
80 80 }
81 81  
82 82 int
83 83 main(int argc, char* argv[])
84 84 {
85 85 if (argc != 2) {
86   - std::cerr << "Usage: pipeline filename" << std::endl;
  86 + std::cerr << "Usage: pipeline filename" << '\n';
87 87 exit(2);
88 88 }
89 89 char* filename = argv[1];
... ... @@ -91,7 +91,7 @@ main(int argc, char* argv[])
91 91 try {
92 92 run(filename);
93 93 } catch (std::exception& e) {
94   - std::cout << e.what() << std::endl;
  94 + std::cout << e.what() << '\n';
95 95 }
96 96 return 0;
97 97 }
... ...
libtests/hex.cc
... ... @@ -23,7 +23,7 @@ main()
23 23 }
24 24 decode.finish();
25 25 } catch (std::exception& e) {
26   - std::cerr << e.what() << std::endl;
  26 + std::cerr << e.what() << '\n';
27 27 exit(2);
28 28 }
29 29  
... ...
libtests/input_source.cc
... ... @@ -47,7 +47,7 @@ Finder::check()
47 47 void
48 48 check(char const* description, bool expected, bool actual)
49 49 {
50   - std::cout << description << ": " << ((actual == expected) ? "PASS" : "FAIL") << std::endl;
  50 + std::cout << description << ": " << ((actual == expected) ? "PASS" : "FAIL") << '\n';
51 51 }
52 52  
53 53 int
... ...
libtests/json.cc
... ... @@ -186,12 +186,12 @@ static void
186 186 check_schema(JSON& obj, JSON& schema, unsigned long flags, bool exp, std::string const& description)
187 187 {
188 188 std::list<std::string> errors;
189   - std::cout << "--- " << description << std::endl;
  189 + std::cout << "--- " << description << '\n';
190 190 assert(exp == obj.checkSchema(schema, flags, errors));
191 191 for (auto const& error: errors) {
192   - std::cout << error << std::endl;
  192 + std::cout << error << '\n';
193 193 }
194   - std::cout << "---" << std::endl;
  194 + std::cout << "---" << '\n';
195 195 }
196 196  
197 197 static void
... ...
libtests/json_handler.cc
... ... @@ -8,43 +8,43 @@
8 8 static void
9 9 print_null(std::string const& path)
10 10 {
11   - std::cout << path << ": null" << std::endl;
  11 + std::cout << path << ": null" << '\n';
12 12 }
13 13  
14 14 static void
15 15 print_string(std::string const& path, std::string const& value)
16 16 {
17   - std::cout << path << ": string: " << value << std::endl;
  17 + std::cout << path << ": string: " << value << '\n';
18 18 }
19 19  
20 20 static void
21 21 print_number(std::string const& path, std::string const& value)
22 22 {
23   - std::cout << path << ": number: " << value << std::endl;
  23 + std::cout << path << ": number: " << value << '\n';
24 24 }
25 25  
26 26 static void
27 27 print_bool(std::string const& path, bool value)
28 28 {
29   - std::cout << path << ": bool: " << (value ? "true" : "false") << std::endl;
  29 + std::cout << path << ": bool: " << (value ? "true" : "false") << '\n';
30 30 }
31 31  
32 32 static void
33 33 print_json(std::string const& path, JSON value)
34 34 {
35   - std::cout << path << ": json: " << value.unparse() << std::endl;
  35 + std::cout << path << ": json: " << value.unparse() << '\n';
36 36 }
37 37  
38 38 static JSONHandler::void_handler_t
39 39 make_print_message(std::string msg)
40 40 {
41   - return [msg](std::string const& path) { std::cout << path << ": json: " << msg << std::endl; };
  41 + return [msg](std::string const& path) { std::cout << path << ": json: " << msg << '\n'; };
42 42 }
43 43  
44 44 static void
45 45 test_scalar()
46 46 {
47   - std::cout << "-- scalar --" << std::endl;
  47 + std::cout << "-- scalar --" << '\n';
48 48 JSONHandler h;
49 49 h.addStringHandler(print_string);
50 50 JSON j = JSON::parse("\"potato\"");
... ... @@ -97,7 +97,7 @@ make_all_handler()
97 97 static void
98 98 test_all()
99 99 {
100   - std::cout << "-- all --" << std::endl;
  100 + std::cout << "-- all --" << '\n';
101 101 auto h = make_all_handler();
102 102 /* cSpell: ignore phour */
103 103 JSON j = JSON::parse(R"({
... ... @@ -110,7 +110,7 @@ test_all()
110 110 "six": {"a": {"b": "quack", "Q": "baaa"}, "b": "moo"}
111 111 })");
112 112 h->handle(".", j);
113   - std::cerr << "-- fallback --" << std::endl;
  113 + std::cerr << "-- fallback --" << '\n';
114 114 j = JSON::parse(R"({
115 115 "five": "not-array"
116 116 })");
... ... @@ -120,14 +120,14 @@ test_all()
120 120 static void
121 121 test_errors()
122 122 {
123   - std::cout << "-- errors --" << std::endl;
  123 + std::cout << "-- errors --" << '\n';
124 124 auto h = make_all_handler();
125 125 auto t = [h](std::string const& msg, std::function<void()> fn) {
126 126 try {
127 127 fn();
128 128 assert(false);
129 129 } catch (QPDFUsage& e) {
130   - std::cout << msg << ": " << e.what() << std::endl;
  130 + std::cout << msg << ": " << e.what() << '\n';
131 131 }
132 132 };
133 133  
... ...
libtests/json_parse.cc
... ... @@ -26,13 +26,13 @@ namespace
26 26 void
27 27 Reactor::dictionaryStart()
28 28 {
29   - std::cout << "dictionary start" << std::endl;
  29 + std::cout << "dictionary start" << '\n';
30 30 }
31 31  
32 32 void
33 33 Reactor::arrayStart()
34 34 {
35   - std::cout << "array start" << std::endl;
  35 + std::cout << "array start" << '\n';
36 36 }
37 37  
38 38 void
... ... @@ -45,7 +45,7 @@ Reactor::containerEnd(JSON const&amp; value)
45 45 void
46 46 Reactor::topLevelScalar()
47 47 {
48   - std::cout << "top-level scalar" << std::endl;
  48 + std::cout << "top-level scalar" << '\n';
49 49 }
50 50  
51 51 bool
... ... @@ -74,13 +74,13 @@ Reactor::arrayItem(JSON const&amp; value)
74 74 void
75 75 Reactor::printItem(JSON const& j)
76 76 {
77   - std::cout << "[" << j.getStart() << ", " << j.getEnd() << "): " << j.unparse() << std::endl;
  77 + std::cout << "[" << j.getStart() << ", " << j.getEnd() << "): " << j.unparse() << '\n';
78 78 }
79 79  
80 80 static void
81 81 usage()
82 82 {
83   - std::cerr << "Usage: json_parse file [--react]" << std::endl;
  83 + std::cerr << "Usage: json_parse file [--react]" << '\n';
84 84 exit(2);
85 85 }
86 86  
... ... @@ -102,9 +102,9 @@ main(int argc, char* argv[])
102 102 }
103 103 try {
104 104 FileInputSource is(filename);
105   - std::cout << JSON::parse(is, reactor.get()).unparse() << std::endl;
  105 + std::cout << JSON::parse(is, reactor.get()).unparse() << '\n';
106 106 } catch (std::exception& e) {
107   - std::cerr << "exception: " << filename << ": " << e.what() << std::endl;
  107 + std::cerr << "exception: " << filename << ": " << e.what() << '\n';
108 108 return 2;
109 109 }
110 110 return 0;
... ...
libtests/lzw.cc
... ... @@ -15,7 +15,7 @@ main(int argc, char* argv[])
15 15 }
16 16  
17 17 if (argc < 3) {
18   - std::cerr << "Usage: lzw infile outfile [ --no-early-code-change ]" << std::endl;
  18 + std::cerr << "Usage: lzw infile outfile [ --no-early-code-change ]" << '\n';
19 19 exit(2);
20 20 }
21 21  
... ... @@ -41,7 +41,7 @@ main(int argc, char* argv[])
41 41 }
42 42 decode.finish();
43 43 } catch (std::exception& e) {
44   - std::cerr << e.what() << std::endl;
  44 + std::cerr << e.what() << '\n';
45 45 exit(2);
46 46 }
47 47  
... ...
libtests/main_from_wmain.cc
... ... @@ -8,7 +8,7 @@ wmain_test()
8 8 // writable args and function args
9 9 auto realmain = [](int argc, char* argv[]) {
10 10 for (int i = 0; i < argc; ++i) {
11   - std::cout << argv[i] << std::endl;
  11 + std::cout << argv[i] << '\n';
12 12 }
13 13 return 0;
14 14 };
... ... @@ -28,7 +28,7 @@ cwmain_test()
28 28 // const args and function args
29 29 auto realmain = [](int argc, char const* const argv[]) {
30 30 for (int i = 0; i < argc; ++i) {
31   - std::cout << "const " << argv[i] << std::endl;
  31 + std::cout << "const " << argv[i] << '\n';
32 32 }
33 33 return 0;
34 34 };
... ... @@ -49,7 +49,7 @@ main(int argc, char* argv[])
49 49 wmain_test();
50 50 cwmain_test();
51 51 } catch (std::exception& e) {
52   - std::cout << "unexpected exception: " << e.what() << std::endl;
  52 + std::cout << "unexpected exception: " << e.what() << '\n';
53 53 }
54 54 #endif // QPDF_NO_WCHAR_T
55 55  
... ...
libtests/matrix.cc
... ... @@ -9,7 +9,7 @@ check(QPDFMatrix const&amp; m, std::string const&amp; exp)
9 9 {
10 10 std::string u = m.unparse();
11 11 if (u != exp) {
12   - std::cout << "got " << u << ", wanted " << exp << std::endl;
  12 + std::cout << "got " << u << ", wanted " << exp << '\n';
13 13 }
14 14 }
15 15  
... ... @@ -18,7 +18,7 @@ check_xy(double x, double y, std::string const&amp; exp)
18 18 {
19 19 std::string u = (QUtil::double_to_string(x, 2) + " " + QUtil::double_to_string(y, 2));
20 20 if (u != exp) {
21   - std::cout << "got " << u << ", wanted " << exp << std::endl;
  21 + std::cout << "got " << u << ", wanted " << exp << '\n';
22 22 }
23 23 }
24 24  
... ... @@ -32,7 +32,7 @@ check_rect(QPDFObjectHandle::Rectangle const&amp; r, double llx, double lly, double
32 32 (QUtil::double_to_string(llx, 2) + " " + QUtil::double_to_string(lly, 2) + " " +
33 33 QUtil::double_to_string(urx, 2) + " " + QUtil::double_to_string(ury, 2));
34 34 if (actual != wanted) {
35   - std::cout << "got " << actual << ", wanted " << wanted << std::endl;
  35 + std::cout << "got " << actual << ", wanted " << wanted << '\n';
36 36 }
37 37 }
38 38  
... ... @@ -78,6 +78,6 @@ main()
78 78 m.translate(200, -100);
79 79 check_rect(m.transformRectangle(QPDFObjectHandle::Rectangle(10, 20, 30, 50)), 50, 210, 80, 230);
80 80  
81   - std::cout << "matrix tests done" << std::endl;
  81 + std::cout << "matrix tests done" << '\n';
82 82 return 0;
83 83 }
... ...
libtests/md5.cc
... ... @@ -29,16 +29,16 @@ main(int, char*[])
29 29 "1234567890123456789012345678901234567890");
30 30 MD5 a;
31 31 a.encodeFile("md5.in");
32   - std::cout << a.unparse() << std::endl;
  32 + std::cout << a.unparse() << '\n';
33 33 MD5 b;
34 34 b.encodeFile("md5.in", 100);
35   - std::cout << b.unparse() << std::endl;
  35 + std::cout << b.unparse() << '\n';
36 36  
37   - std::cout << MD5::checkDataChecksum("900150983cd24fb0d6963f7d28e17f72", "abc", 3) << std::endl
38   - << MD5::checkFileChecksum("5f4b4321873433daae578f85c72f9e74", "md5.in") << std::endl
39   - << MD5::checkFileChecksum("6f4b4321873433daae578f85c72f9e74", "md5.in") << std::endl
40   - << MD5::checkDataChecksum("000150983cd24fb0d6963f7d28e17f72", "abc", 3) << std::endl
41   - << MD5::checkFileChecksum("6f4b4321873433daae578f85c72f9e74", "glerbl") << std::endl;
  37 + std::cout << MD5::checkDataChecksum("900150983cd24fb0d6963f7d28e17f72", "abc", 3) << '\n'
  38 + << MD5::checkFileChecksum("5f4b4321873433daae578f85c72f9e74", "md5.in") << '\n'
  39 + << MD5::checkFileChecksum("6f4b4321873433daae578f85c72f9e74", "md5.in") << '\n'
  40 + << MD5::checkDataChecksum("000150983cd24fb0d6963f7d28e17f72", "abc", 3) << '\n'
  41 + << MD5::checkFileChecksum("6f4b4321873433daae578f85c72f9e74", "glerbl") << '\n';
42 42  
43 43 Pl_Discard d;
44 44 Pl_MD5 p("MD5", &d);
... ... @@ -63,7 +63,7 @@ main(int, char*[])
63 63 p2.write(buf, len);
64 64 if (i == 1) {
65 65 // Partial digest -- resets after each call to write
66   - std::cout << p.getHexDigest() << std::endl;
  66 + std::cout << p.getHexDigest() << '\n';
67 67 }
68 68 }
69 69 }
... ... @@ -72,10 +72,10 @@ main(int, char*[])
72 72 p2.finish();
73 73 // Make sure calling getHexDigest twice with no intervening
74 74 // writes results in the same result each time.
75   - std::cout << p.getHexDigest() << std::endl;
76   - std::cout << p.getHexDigest() << std::endl;
  75 + std::cout << p.getHexDigest() << '\n';
  76 + std::cout << p.getHexDigest() << '\n';
77 77 }
78   - std::cout << p2.getHexDigest() << std::endl;
  78 + std::cout << p2.getHexDigest() << '\n';
79 79  
80 80 return 0;
81 81 }
... ...
libtests/nntree.cc
... ... @@ -20,7 +20,7 @@ report(QPDF&amp; q, QPDFObjectHandle oh, long long item, long long exp_item)
20 20 auto show = [&failed, &oh, &item]() {
21 21 if (!failed) {
22 22 failed = true;
23   - std::cout << "key = " << item << ", oh = " << oh.unparseResolved() << std::endl;
  23 + std::cout << "key = " << item << ", oh = " << oh.unparseResolved() << '\n';
24 24 }
25 25 };
26 26  
... ... @@ -37,11 +37,11 @@ report(QPDF&amp; q, QPDFObjectHandle oh, long long item, long long exp_item)
37 37  
38 38 if (i1_wanted != i1_actual) {
39 39 show();
40   - std::cout << "i1: wanted " << i1_wanted << ", got " << i1_actual << std::endl;
  40 + std::cout << "i1: wanted " << i1_wanted << ", got " << i1_actual << '\n';
41 41 }
42 42 if (i2_wanted != i2_actual) {
43 43 show();
44   - std::cout << "i2: wanted " << i2_wanted << ", got " << i2_actual << std::endl;
  44 + std::cout << "i2: wanted " << i2_wanted << ", got " << i2_actual << '\n';
45 45 }
46 46  
47 47 return failed;
... ... @@ -106,7 +106,7 @@ test_bsearch()
106 106 r(d, 25, 20);
107 107  
108 108 if (!any_failures) {
109   - std::cout << "bsearch tests passed" << std::endl;
  109 + std::cout << "bsearch tests passed" << '\n';
110 110 }
111 111 }
112 112  
... ... @@ -128,7 +128,7 @@ check_find(QPDFNameTreeObjectHelper&amp; nh, std::string const&amp; key, bool prev_if_no
128 128 } else {
129 129 std::cout << (*i).first << " -> " << (*i).second.unparse();
130 130 }
131   - std::cout << std::endl;
  131 + std::cout << '\n';
132 132 }
133 133  
134 134 void
... ... @@ -183,13 +183,13 @@ test_depth()
183 183 }
184 184  
185 185 QPDFNameTreeObjectHelper nh(n0, q);
186   - std::cout << "--- forward ---" << std::endl;
  186 + std::cout << "--- forward ---" << '\n';
187 187 for (auto i: nh) {
188   - std::cout << i.first << " -> " << i.second.unparse() << std::endl;
  188 + std::cout << i.first << " -> " << i.second.unparse() << '\n';
189 189 }
190   - std::cout << "--- backward ---" << std::endl;
  190 + std::cout << "--- backward ---" << '\n';
191 191 for (auto i = nh.last(); i.valid(); --i) {
192   - std::cout << (*i).first << " -> " << (*i).second.unparse() << std::endl;
  192 + std::cout << (*i).first << " -> " << (*i).second.unparse() << '\n';
193 193 }
194 194  
195 195 // Find
... ...
libtests/numrange.cc
... ... @@ -5,14 +5,14 @@ static void
5 5 test_numrange(char const* range)
6 6 {
7 7 if (range == nullptr) {
8   - std::cout << "null" << std::endl;
  8 + std::cout << "null" << '\n';
9 9 } else {
10 10 std::vector<int> result = QUtil::parse_numrange(range, 15);
11 11 std::cout << "numeric range " << range << " ->";
12 12 for (int i: result) {
13 13 std::cout << " " << i;
14 14 }
15   - std::cout << std::endl;
  15 + std::cout << '\n';
16 16 }
17 17 }
18 18  
... ... @@ -22,7 +22,7 @@ main(int argc, char* argv[])
22 22 try {
23 23 test_numrange(argv[1]);
24 24 } catch (std::exception& e) {
25   - std::cout << e.what() << std::endl;
  25 + std::cout << e.what() << '\n';
26 26 return 2;
27 27 }
28 28  
... ...
libtests/pdf_version.cc
... ... @@ -48,6 +48,6 @@ main()
48 48 assert(PDFVersion(2, 0) == PDFVersion(2, 0));
49 49 assert(PDFVersion(2, 0, 1) == PDFVersion(2, 0, 1));
50 50  
51   - std::cout << "PDFVersion assertions passed" << std::endl;
  51 + std::cout << "PDFVersion assertions passed" << '\n';
52 52 return 0;
53 53 }
... ...
libtests/pl_function.cc
... ... @@ -18,7 +18,7 @@ f(unsigned char const* data, size_t len, void* udata)
18 18 {
19 19 auto c = reinterpret_cast<Count*>(udata);
20 20 ++c->count;
21   - std::cout << "got " << data << "(" << len << ")" << std::endl;
  21 + std::cout << "got " << data << "(" << len << ")" << '\n';
22 22 if (c->count == 3) {
23 23 return 1;
24 24 }
... ... @@ -30,7 +30,7 @@ g(char const* data, size_t len, void* udata)
30 30 {
31 31 auto c = reinterpret_cast<Count*>(udata);
32 32 ++c->count;
33   - std::cout << "signed got " << data << "(" << len << ")" << std::endl;
  33 + std::cout << "signed got " << data << "(" << len << ")" << '\n';
34 34 if (c->count == 2) {
35 35 return 2;
36 36 }
... ... @@ -41,7 +41,7 @@ int
41 41 main(int argc, char* argv[])
42 42 {
43 43 Pl_Function p1("p1", nullptr, [](unsigned char const* data, size_t len) {
44   - std::cout << "p1: " << len << ": " << data << std::endl;
  44 + std::cout << "p1: " << len << ": " << data << '\n';
45 45 });
46 46 p1.write(reinterpret_cast<unsigned char const*>("potato"), 6);
47 47  
... ... @@ -49,7 +49,7 @@ main(int argc, char* argv[])
49 49 Pl_String ps("string", nullptr, s);
50 50 Pl_Base64 b("base64", &ps, Pl_Base64::a_encode);
51 51 Pl_Function p2("p2", &b, [](unsigned char const* data, size_t len) {
52   - std::cout << "p2: " << len << ": " << data << std::endl;
  52 + std::cout << "p2: " << len << ": " << data << '\n';
53 53 });
54 54 p2.write(reinterpret_cast<unsigned char const*>("salad"), 5);
55 55 p2.finish();
... ... @@ -63,7 +63,7 @@ main(int argc, char* argv[])
63 63 p3 << "three";
64 64 assert(false);
65 65 } catch (std::runtime_error& e) {
66   - std::cout << "three threw " << e.what() << std::endl;
  66 + std::cout << "three threw " << e.what() << '\n';
67 67 }
68 68 p3 << "four";
69 69 p3.finish();
... ... @@ -76,7 +76,7 @@ main(int argc, char* argv[])
76 76 p4 << "salad";
77 77 assert(false);
78 78 } catch (std::runtime_error& e) {
79   - std::cout << "salad threw " << e.what() << std::endl;
  79 + std::cout << "salad threw " << e.what() << '\n';
80 80 }
81 81 p4 << "quack";
82 82 p4.finish();
... ...
libtests/pointer_holder.cc
... ... @@ -26,24 +26,24 @@ int Object::next_id = 0;
26 26 Object::Object()
27 27 {
28 28 this->id = ++next_id;
29   - std::cout << "created Object, id " << this->id << std::endl;
  29 + std::cout << "created Object, id " << this->id << '\n';
30 30 }
31 31  
32 32 Object::~Object()
33 33 {
34   - std::cout << "destroyed Object, id " << this->id << std::endl;
  34 + std::cout << "destroyed Object, id " << this->id << '\n';
35 35 }
36 36  
37 37 void
38 38 Object::hello()
39 39 {
40   - std::cout << "calling Object::hello for " << this->id << std::endl;
  40 + std::cout << "calling Object::hello for " << this->id << '\n';
41 41 }
42 42  
43 43 void
44 44 Object::hello() const
45 45 {
46   - std::cout << "calling Object::hello const for " << this->id << std::endl;
  46 + std::cout << "calling Object::hello const for " << this->id << '\n';
47 47 }
48 48  
49 49 typedef PointerHolder<Object> ObjectHolder;
... ... @@ -71,27 +71,27 @@ test_ph()
71 71  
72 72 ObjectHolder oh0;
73 73 {
74   - std::cout << "hello" << std::endl;
  74 + std::cout << "hello" << '\n';
75 75 auto* o1 = new Object;
76 76 ObjectHolder oh1(o1);
77   - std::cout << "oh1 refcount = " << oh1.getRefcount() << std::endl;
  77 + std::cout << "oh1 refcount = " << oh1.getRefcount() << '\n';
78 78 ObjectHolder oh2(oh1);
79   - std::cout << "oh1 refcount = " << oh1.getRefcount() << std::endl;
80   - std::cout << "oh2 refcount = " << oh2.use_count() << std::endl;
  79 + std::cout << "oh1 refcount = " << oh1.getRefcount() << '\n';
  80 + std::cout << "oh2 refcount = " << oh2.use_count() << '\n';
81 81 ObjectHolder oh3(new Object);
82 82 ObjectHolder oh4;
83 83 ObjectHolder oh5;
84   - std::cout << "oh5 refcount = " << oh5.getRefcount() << std::endl;
  84 + std::cout << "oh5 refcount = " << oh5.getRefcount() << '\n';
85 85 if (oh4 == oh5) {
86   - std::cout << "nulls equal" << std::endl;
  86 + std::cout << "nulls equal" << '\n';
87 87 }
88 88 oh3 = oh1;
89 89 oh4 = oh2;
90 90 if (oh3 == oh4) {
91   - std::cout << "equal okay" << std::endl;
  91 + std::cout << "equal okay" << '\n';
92 92 }
93 93 if ((!(oh3 < oh4)) && (!(oh4 < oh3))) {
94   - std::cout << "less than okay" << std::endl;
  94 + std::cout << "less than okay" << '\n';
95 95 }
96 96 ol1.push_back(oh3);
97 97 ol1.push_back(oh3);
... ... @@ -107,9 +107,9 @@ test_ph()
107 107 callHello(ol1.front());
108 108 callHelloWithGet(ol1.front());
109 109 ol1.pop_front();
110   - std::cout << "array" << std::endl;
  110 + std::cout << "array" << '\n';
111 111 PointerHolder<Object> o_arr1_ph(true, new Object[2]);
112   - std::cout << "goodbye" << std::endl;
  112 + std::cout << "goodbye" << '\n';
113 113 }
114 114  
115 115 PointerHolder<Object>
... ... @@ -165,7 +165,7 @@ ph_sp_compat()
165 165 {
166 166 // Ensure bidirectional compatibility between PointerHolder and
167 167 // shared_ptr.
168   - std::cout << "compat" << std::endl;
  168 + std::cout << "compat" << '\n';
169 169 PointerHolder<Object> ph_from_ph = make_object_ph();
170 170 std::shared_ptr<Object> sp_from_ph = make_object_ph();
171 171 PointerHolder<Object> ph_from_sp = make_object_sp();
... ... @@ -184,21 +184,21 @@ ph_sp_compat()
184 184 hello_ph_const(sp_const_from_sp);
185 185 PointerHolder<Object> arr1_ph;
186 186 {
187   - std::cout << "initialize ph array from shared_ptr" << std::endl;
  187 + std::cout << "initialize ph array from shared_ptr" << '\n';
188 188 std::shared_ptr<Object> arr1(new Object[2], std::default_delete<Object[]>());
189 189 arr1_ph = arr1;
190 190 }
191   - std::cout << "delete ph array" << std::endl;
  191 + std::cout << "delete ph array" << '\n';
192 192 arr1_ph = nullptr;
193 193 std::shared_ptr<Object> arr2_sp;
194 194 {
195   - std::cout << "initialize sp array from PointerHolder" << std::endl;
  195 + std::cout << "initialize sp array from PointerHolder" << '\n';
196 196 PointerHolder<Object> arr2(true, new Object[2]);
197 197 arr2_sp = arr2;
198 198 }
199   - std::cout << "delete sp array" << std::endl;
  199 + std::cout << "delete sp array" << '\n';
200 200 arr2_sp = nullptr;
201   - std::cout << "end compat" << std::endl;
  201 + std::cout << "end compat" << '\n';
202 202 }
203 203  
204 204 std::list<PointerHolder<Object>>
... ... @@ -224,13 +224,13 @@ get_sp_list()
224 224 void
225 225 ph_sp_containers()
226 226 {
227   - std::cout << "containers" << std::endl;
  227 + std::cout << "containers" << '\n';
228 228 // Demonstrate that using auto makes it easy to switch interfaces
229 229 // from using a container of one shared pointer type to a
230 230 // container of the other.
231 231 auto phl1 = get_ph_list();
232 232 auto phl2 = get_sp_list();
233   - std::cout << "end containers" << std::endl;
  233 + std::cout << "end containers" << '\n';
234 234 }
235 235  
236 236 int
... ...
libtests/predictors.cc
... ... @@ -39,7 +39,7 @@ run(char const* filename,
39 39 samples_per_pixel,
40 40 bits_per_sample);
41 41 } else {
42   - std::cerr << "unknown filter " << filter << std::endl;
  42 + std::cerr << "unknown filter " << filter << '\n';
43 43 exit(2);
44 44 }
45 45 assert((2 * (columns + 1)) < 1024);
... ... @@ -69,7 +69,7 @@ run(char const* filename,
69 69 fclose(o1);
70 70 fclose(in);
71 71  
72   - std::cout << "done" << std::endl;
  72 + std::cout << "done" << '\n';
73 73 }
74 74  
75 75 int
... ... @@ -77,7 +77,7 @@ main(int argc, char* argv[])
77 77 {
78 78 if (argc != 7) {
79 79 std::cerr << "Usage: predictor {png|tiff} {en,de}code filename"
80   - << " columns samples-per-pixel bits-per-sample" << std::endl;
  80 + << " columns samples-per-pixel bits-per-sample" << '\n';
81 81 exit(2);
82 82 }
83 83 char* filter = argv[1];
... ... @@ -95,7 +95,7 @@ main(int argc, char* argv[])
95 95 QIntC::to_uint(bits_per_sample),
96 96 QIntC::to_uint(samples_per_pixel));
97 97 } catch (std::exception& e) {
98   - std::cout << e.what() << std::endl;
  98 + std::cout << e.what() << '\n';
99 99 }
100 100 return 0;
101 101 }
... ...
libtests/qintc.cc
... ... @@ -18,7 +18,7 @@ try_convert_real(char const* description, bool exp_pass, To (*fn)(From const&amp;),
18 18 std::cout << description << ": " << e.what();
19 19 passed = false;
20 20 }
21   - std::cout << ((passed == exp_pass) ? " PASSED" : " FAILED") << std::endl;
  21 + std::cout << ((passed == exp_pass) ? " PASSED" : " FAILED") << '\n';
22 22 }
23 23  
24 24 #define try_range_check(exp_pass, a, b) try_range_check_real(#a " + " #b, exp_pass, a, b)
... ... @@ -36,7 +36,7 @@ try_range_check_real(char const* description, bool exp_pass, T const&amp; a, T const
36 36 std::cout << description << ": " << e.what();
37 37 passed = false;
38 38 }
39   - std::cout << ((passed == exp_pass) ? " PASSED" : " FAILED") << std::endl;
  39 + std::cout << ((passed == exp_pass) ? " PASSED" : " FAILED") << '\n';
40 40 }
41 41  
42 42 #define try_range_check_subtract(exp_pass, a, b) \
... ... @@ -55,7 +55,7 @@ try_range_check_subtract_real(char const* description, bool exp_pass, T const&amp; a
55 55 std::cout << description << ": " << e.what();
56 56 passed = false;
57 57 }
58   - std::cout << ((passed == exp_pass) ? " PASSED" : " FAILED") << std::endl;
  58 + std::cout << ((passed == exp_pass) ? " PASSED" : " FAILED") << '\n';
59 59 }
60 60  
61 61 int
... ...
libtests/qutil.cc
... ... @@ -32,13 +32,13 @@ test_to_number(char const* str, int_T wanted, bool error, int_T (*fn)(char const
32 32 }
33 33 if (threw) {
34 34 if (error) {
35   - std::cout << str << " to int threw (" << msg << "): PASSED" << std::endl;
  35 + std::cout << str << " to int threw (" << msg << "): PASSED" << '\n';
36 36 } else {
37 37 std::cout << str << " to int threw but wanted " << wanted << std::endl;
38 38 }
39 39 } else {
40 40 if (worked) {
41   - std::cout << str << " to int: PASSED" << std::endl;
  41 + std::cout << str << " to int: PASSED" << '\n';
42 42 } else {
43 43 std::cout << str << " to int failed; got " << result << std::endl;
44 44 }
... ... @@ -97,51 +97,51 @@ string_conversion_test()
97 97 // Make sure the code produces consistent results even if we load
98 98 // a non-C locale.
99 99 set_locale();
100   - std::cout << QUtil::int_to_string(16059) << std::endl
101   - << QUtil::int_to_string(16059, 7) << std::endl
102   - << QUtil::int_to_string(16059, -7) << std::endl
103   - << QUtil::double_to_string(3.14159, 0, false) << std::endl
104   - << QUtil::double_to_string(3.14159, 3) << std::endl
105   - << QUtil::double_to_string(1000.123, -1024, false) << std::endl
106   - << QUtil::double_to_string(.1234, 5, false) << std::endl
107   - << QUtil::double_to_string(.0001234, 5) << std::endl
108   - << QUtil::double_to_string(.123456, 5) << std::endl
109   - << QUtil::double_to_string(.000123456, 5) << std::endl
110   - << QUtil::double_to_string(1.01020, 5, true) << std::endl
111   - << QUtil::double_to_string(1.00000, 5, true) << std::endl
112   - << QUtil::double_to_string(1, 5, true) << std::endl
113   - << QUtil::double_to_string(1, 5, false) << std::endl
114   - << QUtil::double_to_string(10, 2, false) << std::endl
115   - << QUtil::double_to_string(10, 2, true) << std::endl
116   - << QUtil::int_to_string_base(16059, 10) << std::endl
117   - << QUtil::int_to_string_base(16059, 8) << std::endl
118   - << QUtil::int_to_string_base(16059, 16) << std::endl
119   - << QUtil::int_to_string_base(5000093552LL, 10) << std::endl;
  100 + std::cout << QUtil::int_to_string(16059) << '\n'
  101 + << QUtil::int_to_string(16059, 7) << '\n'
  102 + << QUtil::int_to_string(16059, -7) << '\n'
  103 + << QUtil::double_to_string(3.14159, 0, false) << '\n'
  104 + << QUtil::double_to_string(3.14159, 3) << '\n'
  105 + << QUtil::double_to_string(1000.123, -1024, false) << '\n'
  106 + << QUtil::double_to_string(.1234, 5, false) << '\n'
  107 + << QUtil::double_to_string(.0001234, 5) << '\n'
  108 + << QUtil::double_to_string(.123456, 5) << '\n'
  109 + << QUtil::double_to_string(.000123456, 5) << '\n'
  110 + << QUtil::double_to_string(1.01020, 5, true) << '\n'
  111 + << QUtil::double_to_string(1.00000, 5, true) << '\n'
  112 + << QUtil::double_to_string(1, 5, true) << '\n'
  113 + << QUtil::double_to_string(1, 5, false) << '\n'
  114 + << QUtil::double_to_string(10, 2, false) << '\n'
  115 + << QUtil::double_to_string(10, 2, true) << '\n'
  116 + << QUtil::int_to_string_base(16059, 10) << '\n'
  117 + << QUtil::int_to_string_base(16059, 8) << '\n'
  118 + << QUtil::int_to_string_base(16059, 16) << '\n'
  119 + << QUtil::int_to_string_base(5000093552LL, 10) << '\n';
120 120  
121 121 std::string embedded_null = "one";
122 122 embedded_null += '\0';
123 123 embedded_null += "two";
124   - std::cout << embedded_null.c_str() << std::endl;
125   - std::cout << embedded_null.length() << std::endl;
  124 + std::cout << embedded_null.c_str() << '\n';
  125 + std::cout << embedded_null.length() << '\n';
126 126 char* tmp = QUtil::copy_string(embedded_null);
127 127 if (memcmp(tmp, embedded_null.c_str(), 7) == 0) {
128   - std::cout << "compare okay" << std::endl;
  128 + std::cout << "compare okay" << '\n';
129 129 } else {
130   - std::cout << "compare failed" << std::endl;
  130 + std::cout << "compare failed" << '\n';
131 131 }
132 132 delete[] tmp;
133 133 // Also test with make_shared_cstr and make_unique_cstr
134 134 auto tmp2 = QUtil::make_shared_cstr(embedded_null);
135 135 if (memcmp(tmp2.get(), embedded_null.c_str(), 7) == 0) {
136   - std::cout << "compare okay" << std::endl;
  136 + std::cout << "compare okay" << '\n';
137 137 } else {
138   - std::cout << "compare failed" << std::endl;
  138 + std::cout << "compare failed" << '\n';
139 139 }
140 140 auto tmp3 = QUtil::make_unique_cstr(embedded_null);
141 141 if (memcmp(tmp3.get(), embedded_null.c_str(), 7) == 0) {
142   - std::cout << "compare okay" << std::endl;
  142 + std::cout << "compare okay" << '\n';
143 143 } else {
144   - std::cout << "compare failed" << std::endl;
  144 + std::cout << "compare failed" << '\n';
145 145 }
146 146  
147 147 std::string int_max_str = QUtil::int_to_string(INT_MAX);
... ... @@ -171,11 +171,11 @@ void
171 171 os_wrapper_test()
172 172 {
173 173 try {
174   - std::cout << "before remove" << std::endl;
  174 + std::cout << "before remove" << '\n';
175 175 QUtil::os_wrapper("remove file", remove("/this/file/does/not/exist"));
176   - std::cout << "after remove" << std::endl;
  176 + std::cout << "after remove" << '\n';
177 177 } catch (std::runtime_error& s) {
178   - std::cout << "exception: " << s.what() << std::endl;
  178 + std::cout << "exception: " << s.what() << '\n';
179 179 }
180 180 }
181 181  
... ... @@ -183,12 +183,12 @@ void
183 183 fopen_wrapper_test()
184 184 {
185 185 try {
186   - std::cout << "before fopen" << std::endl;
  186 + std::cout << "before fopen" << '\n';
187 187 FILE* f = QUtil::safe_fopen("/this/file/does/not/exist", "r");
188   - std::cout << "after fopen" << std::endl;
  188 + std::cout << "after fopen" << '\n';
189 189 (void)fclose(f);
190 190 } catch (QPDFSystemError& s) {
191   - std::cout << "exception: " << s.what() << std::endl;
  191 + std::cout << "exception: " << s.what() << '\n';
192 192 assert(s.getErrno() != 0);
193 193 }
194 194  
... ... @@ -200,10 +200,9 @@ void
200 200 getenv_test()
201 201 {
202 202 std::string val;
203   - std::cout << "IN_TESTSUITE: " << QUtil::get_env("IN_TESTSUITE", &val) << ": " << val
204   - << std::endl;
  203 + std::cout << "IN_TESTSUITE: " << QUtil::get_env("IN_TESTSUITE", &val) << ": " << val << '\n';
205 204 // Hopefully this environment variable is not defined.
206   - std::cout << "HAGOOGAMAGOOGLE: " << QUtil::get_env("HAGOOGAMAGOOGLE") << std::endl;
  205 + std::cout << "HAGOOGAMAGOOGLE: " << QUtil::get_env("HAGOOGAMAGOOGLE") << '\n';
207 206 }
208 207  
209 208 static void
... ... @@ -223,7 +222,7 @@ print_utf8(unsigned long val)
223 222 static_cast<int>(static_cast<unsigned char>(ch)), 16, 2);
224 223 }
225 224 }
226   - std::cout << std::endl;
  225 + std::cout << '\n';
227 226  
228 227 // Boundary conditions for QUtil::get_next_utf8_codepoint, which is
229 228 // also tested indirectly through test_pdf_unicode.cc.
... ... @@ -264,7 +263,7 @@ to_utf8_test()
264 263 try {
265 264 print_utf8(0x80000000UL);
266 265 } catch (std::runtime_error& e) {
267   - std::cout << "0x80000000: " << e.what() << std::endl;
  266 + std::cout << "0x80000000: " << e.what() << '\n';
268 267 }
269 268  
270 269 // Overlong characters: characters represented by more bytes than necessary.
... ... @@ -296,7 +295,7 @@ print_utf16(unsigned long val)
296 295 << QUtil::int_to_string_base(
297 296 static_cast<int>(static_cast<unsigned char>(ch)), 16, 2);
298 297 }
299   - std::cout << std::endl;
  298 + std::cout << '\n';
300 299 }
301 300  
302 301 void
... ... @@ -311,24 +310,24 @@ to_utf16_test()
311 310 print_utf16(0x80000000UL);
312 311  
313 312 std::string s(QUtil::utf8_to_utf16("\xcf\x80"));
314   - std::cout << QUtil::utf16_to_utf8(s) << std::endl;
315   - std::cout << QUtil::utf16_to_utf8(s + ".") << std::endl;
316   - std::cout << "LE: " << QUtil::utf16_to_utf8("\xff\xfe\xc0\x03") << std::endl;
  313 + std::cout << QUtil::utf16_to_utf8(s) << '\n';
  314 + std::cout << QUtil::utf16_to_utf8(s + ".") << '\n';
  315 + std::cout << "LE: " << QUtil::utf16_to_utf8("\xff\xfe\xc0\x03") << '\n';
317 316 }
318 317  
319 318 void
320 319 utf8_to_ascii_test()
321 320 {
322 321 char const* input = "\302\277Does \317\200 have fingers?";
323   - std::cout << input << std::endl
324   - << QUtil::utf8_to_ascii(input) << std::endl
325   - << QUtil::utf8_to_ascii(input, '*') << std::endl;
  322 + std::cout << input << '\n'
  323 + << QUtil::utf8_to_ascii(input) << '\n'
  324 + << QUtil::utf8_to_ascii(input, '*') << '\n';
326 325 std::string a = QUtil::utf8_to_win_ansi(input, '*');
327 326 std::string b = QUtil::utf8_to_mac_roman(input, '*');
328 327 std::cout << "<" << QUtil::int_to_string_base(static_cast<unsigned char>(a.at(0)), 16, 2) << ">"
329   - << a.substr(1) << std::endl
  328 + << a.substr(1) << '\n'
330 329 << "<" << QUtil::int_to_string_base(static_cast<unsigned char>(b.at(0)), 16, 2) << ">"
331   - << b.substr(1) << std::endl;
  330 + << b.substr(1) << '\n';
332 331 }
333 332  
334 333 void
... ... @@ -349,7 +348,7 @@ transcoding_test(
349 348 back = (*from_utf8)(out, '?');
350 349 if (back != wanted) {
351 350 std::cout << i << ": " << in << " -> " << out << " -> " << back << " (wanted " << wanted
352   - << ")" << std::endl;
  351 + << ")" << '\n';
353 352 }
354 353 }
355 354 }
... ... @@ -363,7 +362,7 @@ check_analyze(std::string const&amp; str, bool has8bit, bool utf8, bool utf16)
363 362 QUtil::analyze_encoding(str, has_8bit_chars, is_valid_utf8, is_utf16);
364 363 if (!((has_8bit_chars == has8bit) && (is_valid_utf8 == utf8) && (is_utf16 == utf16))) {
365 364 std::cout << "analysis failed: " << str << ": 8bit: " << has_8bit_chars
366   - << ", utf8: " << is_valid_utf8 << ", utf16: " << is_utf16 << std::endl;
  365 + << ", utf8: " << is_valid_utf8 << ", utf16: " << is_utf16 << '\n';
367 366 }
368 367 }
369 368  
... ... @@ -373,7 +372,7 @@ print_alternatives(std::string const&amp; str)
373 372 std::vector<std::string> result = QUtil::possible_repaired_encodings(str);
374 373 size_t n = result.size();
375 374 for (size_t i = 0; i < n; ++i) {
376   - std::cout << i << ": " << QUtil::hex_encode(result.at(i)) << std::endl;
  375 + std::cout << i << ": " << QUtil::hex_encode(result.at(i)) << '\n';
377 376 }
378 377 }
379 378  
... ... @@ -381,20 +380,20 @@ void
381 380 transcoding_test()
382 381 {
383 382 transcoding_test(&QUtil::pdf_doc_to_utf8, &QUtil::utf8_to_pdf_doc, 127, 160, "\x9f");
384   - std::cout << "bidirectional pdf doc done" << std::endl;
  383 + std::cout << "bidirectional pdf doc done" << '\n';
385 384 transcoding_test(&QUtil::pdf_doc_to_utf8, &QUtil::utf8_to_pdf_doc, 24, 31, "?");
386   - std::cout << "bidirectional pdf doc low done" << std::endl;
  385 + std::cout << "bidirectional pdf doc low done" << '\n';
387 386 transcoding_test(&QUtil::win_ansi_to_utf8, &QUtil::utf8_to_win_ansi, 128, 160, "?");
388   - std::cout << "bidirectional win ansi done" << std::endl;
  387 + std::cout << "bidirectional win ansi done" << '\n';
389 388 transcoding_test(&QUtil::mac_roman_to_utf8, &QUtil::utf8_to_mac_roman, 128, 255, "?");
390   - std::cout << "bidirectional mac roman done" << std::endl;
  389 + std::cout << "bidirectional mac roman done" << '\n';
391 390 check_analyze("pi = \317\200", true, true, false);
392 391 check_analyze("pi != \317", true, false, false);
393 392 check_analyze("pi != 22/7", false, false, false);
394 393 check_analyze("\xE0\x80\x82", true, false, false);
395 394 check_analyze(std::string("\xfe\xff\x00\x51", 4), true, false, true);
396 395 check_analyze(std::string("\xff\xfe\x51\x00", 4), true, false, true);
397   - std::cout << "analysis done" << std::endl;
  396 + std::cout << "analysis done" << '\n';
398 397 std::string input1("a\302\277b");
399 398 std::string input2("a\317\200b");
400 399 std::string input3("ab");
... ... @@ -411,7 +410,7 @@ transcoding_test()
411 410 assert(QUtil::utf8_to_pdf_doc(input1, output));
412 411 assert(!QUtil::utf8_to_pdf_doc(input2, output));
413 412 assert(QUtil::utf8_to_pdf_doc(input3, output));
414   - std::cout << "alternatives" << std::endl;
  413 + std::cout << "alternatives" << '\n';
415 414 // char name mac win pdf-doc
416 415 // U+0192 florin 304 203 206
417 416 // U+00A9 copyright 251 251 251
... ... @@ -422,18 +421,18 @@ transcoding_test()
422 421 print_alternatives(pdfdoc);
423 422 print_alternatives(utf8);
424 423 print_alternatives("quack");
425   - std::cout << "done alternatives" << std::endl;
  424 + std::cout << "done alternatives" << '\n';
426 425 // These are characters are either valid in PDFDoc and invalid in
427 426 // UTF-8 or the other way around.
428 427 std::string other("w\x18w\x19w\x1aw\x1bw\x1cw\x1dw\x1ew\x1fw\x7fw");
429 428 // cSpell: ignore xadw
430 429 std::string other_doc = other + "\x9fw\xadw";
431   - std::cout << QUtil::pdf_doc_to_utf8(other_doc) << std::endl;
  430 + std::cout << QUtil::pdf_doc_to_utf8(other_doc) << '\n';
432 431 std::string other_utf8 = other + QUtil::toUTF8(0x9f) + "w" + QUtil::toUTF8(0xad) + "w";
433 432 std::string other_to_utf8;
434 433 assert(!QUtil::utf8_to_pdf_doc(other_utf8, other_to_utf8));
435   - std::cout << other_to_utf8 << std::endl;
436   - std::cout << "done other characters" << std::endl;
  434 + std::cout << other_to_utf8 << '\n';
  435 + std::cout << "done other characters" << '\n';
437 436 // These valid UTF8 strings when converted to PDFDoc would end up
438 437 // with a byte sequence that would be recognized as UTF-8 or
439 438 // UTF-16 rather than PDFDoc. A special case is required to store
... ... @@ -455,7 +454,7 @@ void
455 454 print_whoami(char const* str)
456 455 {
457 456 auto dup = QUtil::make_unique_cstr(str);
458   - std::cout << QUtil::getWhoami(dup.get()) << std::endl;
  457 + std::cout << QUtil::getWhoami(dup.get()) << '\n';
459 458 }
460 459  
461 460 void
... ... @@ -473,7 +472,7 @@ assert_same_file(char const* file1, char const* file2, bool expected)
473 472 bool actual = QUtil::same_file(file1, file2);
474 473 std::cout << "file1: -" << (file1 ? file1 : "(null)") << "-, file2: -"
475 474 << (file2 ? file2 : "(null)") << "-; same: " << actual << ": "
476   - << ((actual == expected) ? "PASS" : "FAIL") << std::endl;
  475 + << ((actual == expected) ? "PASS" : "FAIL") << '\n';
477 476 }
478 477  
479 478 void
... ... @@ -501,7 +500,7 @@ path_test()
501 500 auto check = [](bool print, std::string const& a, std::string const& b) {
502 501 auto result = QUtil::path_basename(a);
503 502 if (print) {
504   - std::cout << a << " -> " << result << std::endl;
  503 + std::cout << a << " -> " << result << '\n';
505 504 }
506 505 assert(result == b);
507 506 };
... ... @@ -523,7 +522,7 @@ read_from_file_test()
523 522 {
524 523 std::list<std::string> lines = QUtil::read_lines_from_file("other-file");
525 524 for (auto const& line: lines) {
526   - std::cout << line << std::endl;
  525 + std::cout << line << '\n';
527 526 }
528 527 // Test the other versions and make sure we get the same results
529 528 {
... ... @@ -561,7 +560,7 @@ read_from_file_test()
561 560 std::shared_ptr<char> buf;
562 561 size_t size = 0;
563 562 QUtil::read_file_into_memory("other-file", buf, size);
564   - std::cout << "read " << size << " bytes" << std::endl;
  563 + std::cout << "read " << size << " bytes" << '\n';
565 564 char const* p = buf.get();
566 565 assert(size == 24652);
567 566 assert(memcmp(p, "This file is used for qutil testing.", 36) == 0);
... ... @@ -575,7 +574,7 @@ read_from_file_test()
575 574 assert(memcmp(buf2->getBuffer(), p, size) == 0);
576 575  
577 576 auto s = QUtil::read_file_into_string("other-file");
578   - std::cout << "read " << s.size() << " bytes" << std::endl;
  577 + std::cout << "read " << s.size() << " bytes" << '\n';
579 578 assert(s.size() == 24652);
580 579 assert(s.substr(0, 36) == "This file is used for qutil testing.");
581 580 assert(s.substr(24641, 10) == "very long.");
... ... @@ -587,7 +586,7 @@ assert_hex_encode(std::string const&amp; input, std::string const&amp; expected)
587 586 std::string actual = QUtil::hex_encode(input);
588 587 if (expected != actual) {
589 588 std::cout << "hex encode " << input << ": expected = " << expected
590   - << "; actual = " << actual << std::endl;
  589 + << "; actual = " << actual << '\n';
591 590 }
592 591 }
593 592  
... ... @@ -597,7 +596,7 @@ assert_hex_decode(std::string const&amp; input, std::string const&amp; expected)
597 596 std::string actual = QUtil::hex_decode(input);
598 597 if (expected != actual) {
599 598 std::cout << "hex encode " << input << ": expected = " << expected
600   - << "; actual = " << actual << std::endl;
  599 + << "; actual = " << actual << '\n';
601 600 }
602 601 }
603 602  
... ... @@ -639,31 +638,31 @@ rename_delete_test()
639 638 } catch (QPDFSystemError&) {
640 639 }
641 640 assert_no_file("old\xcf\x80");
642   - std::cout << "create file" << std::endl;
  641 + std::cout << "create file" << '\n';
643 642 ;
644 643 FILE* f1 = QUtil::safe_fopen("old\xcf\x80", "w");
645 644 fprintf(f1, "one");
646 645 fclose(f1);
647 646 QUtil::read_file_into_memory("old\xcf\x80", buf, size);
648 647 assert(memcmp(buf.get(), "one", 3) == 0);
649   - std::cout << "rename file" << std::endl;
  648 + std::cout << "rename file" << '\n';
650 649 ;
651 650 QUtil::rename_file("old\xcf\x80", "old\xcf\x80.~tmp");
652 651 QUtil::read_file_into_memory("old\xcf\x80.~tmp", buf, size);
653 652 assert(memcmp(buf.get(), "one", 3) == 0);
654 653 assert_no_file("old\xcf\x80");
655   - std::cout << "create file" << std::endl;
  654 + std::cout << "create file" << '\n';
656 655 ;
657 656 f1 = QUtil::safe_fopen("old\xcf\x80", "w");
658 657 fprintf(f1, "two");
659 658 fclose(f1);
660   - std::cout << "rename over existing" << std::endl;
  659 + std::cout << "rename over existing" << '\n';
661 660 ;
662 661 QUtil::rename_file("old\xcf\x80", "old\xcf\x80.~tmp");
663 662 QUtil::read_file_into_memory("old\xcf\x80.~tmp", buf, size);
664 663 assert(memcmp(buf.get(), "two", 3) == 0);
665 664 assert_no_file("old\xcf\x80");
666   - std::cout << "delete file" << std::endl;
  665 + std::cout << "delete file" << '\n';
667 666 ;
668 667 QUtil::remove_file("old\xcf\x80.~tmp");
669 668 assert_no_file("old\xcf\x80");
... ... @@ -676,7 +675,7 @@ timestamp_test()
676 675 auto check = [](QUtil::QPDFTime const& t) {
677 676 std::string pdf = QUtil::qpdf_time_to_pdf_time(t);
678 677 std::string iso8601 = QUtil::qpdf_time_to_iso8601(t);
679   - std::cout << pdf << std::endl << iso8601 << std::endl;
  678 + std::cout << pdf << '\n' << iso8601 << '\n';
680 679 QUtil::QPDFTime t2;
681 680 std::string iso8601_2;
682 681 assert(QUtil::pdf_time_to_qpdf_time(pdf, &t2));
... ... @@ -704,7 +703,7 @@ is_long_long_test()
704 703 {
705 704 auto check = [](char const* s, bool v) {
706 705 if (QUtil::is_long_long(s) != v) {
707   - std::cout << "failed: " << s << std::endl;
  706 + std::cout << "failed: " << s << '\n';
708 707 }
709 708 };
710 709 check("12312312", true);
... ... @@ -719,7 +718,7 @@ is_long_long_test()
719 718 check("123123123123123123123123123123123123", false);
720 719 check("potato", false);
721 720 check("0123", false);
722   - std::cout << "done" << std::endl;
  721 + std::cout << "done" << '\n';
723 722 }
724 723  
725 724 void
... ... @@ -731,49 +730,49 @@ memory_usage_test()
731 730 auto u2 = QUtil::get_max_memory_usage();
732 731 assert(u2 > u1);
733 732 }
734   - std::cout << "memory usage okay" << std::endl;
  733 + std::cout << "memory usage okay" << '\n';
735 734 }
736 735  
737 736 int
738 737 main(int argc, char* argv[])
739 738 {
740 739 try {
741   - std::cout << "---- string conversion" << std::endl;
  740 + std::cout << "---- string conversion" << '\n';
742 741 string_conversion_test();
743   - std::cout << "---- os wrapper" << std::endl;
  742 + std::cout << "---- os wrapper" << '\n';
744 743 os_wrapper_test();
745   - std::cout << "---- fopen" << std::endl;
  744 + std::cout << "---- fopen" << '\n';
746 745 fopen_wrapper_test();
747   - std::cout << "---- getenv" << std::endl;
  746 + std::cout << "---- getenv" << '\n';
748 747 getenv_test();
749   - std::cout << "---- utf8" << std::endl;
  748 + std::cout << "---- utf8" << '\n';
750 749 to_utf8_test();
751   - std::cout << "---- utf16" << std::endl;
  750 + std::cout << "---- utf16" << '\n';
752 751 to_utf16_test();
753   - std::cout << "---- utf8_to_ascii" << std::endl;
  752 + std::cout << "---- utf8_to_ascii" << '\n';
754 753 utf8_to_ascii_test();
755   - std::cout << "---- transcoding" << std::endl;
  754 + std::cout << "---- transcoding" << '\n';
756 755 transcoding_test();
757   - std::cout << "---- whoami" << std::endl;
  756 + std::cout << "---- whoami" << '\n';
758 757 get_whoami_test();
759   - std::cout << "---- file" << std::endl;
  758 + std::cout << "---- file" << '\n';
760 759 same_file_test();
761   - std::cout << "---- path" << std::endl;
  760 + std::cout << "---- path" << '\n';
762 761 path_test();
763   - std::cout << "---- read from file" << std::endl;
  762 + std::cout << "---- read from file" << '\n';
764 763 read_from_file_test();
765   - std::cout << "---- hex encode/decode" << std::endl;
  764 + std::cout << "---- hex encode/decode" << '\n';
766 765 hex_encode_decode_test();
767   - std::cout << "---- rename/delete" << std::endl;
  766 + std::cout << "---- rename/delete" << '\n';
768 767 rename_delete_test();
769   - std::cout << "---- timestamp" << std::endl;
  768 + std::cout << "---- timestamp" << '\n';
770 769 timestamp_test();
771   - std::cout << "---- is_long_long" << std::endl;
  770 + std::cout << "---- is_long_long" << '\n';
772 771 is_long_long_test();
773   - std::cout << "---- memory usage" << std::endl;
  772 + std::cout << "---- memory usage" << '\n';
774 773 memory_usage_test();
775 774 } catch (std::exception& e) {
776   - std::cout << "unexpected exception: " << e.what() << std::endl;
  775 + std::cout << "unexpected exception: " << e.what() << '\n';
777 776 }
778 777  
779 778 return 0;
... ...
libtests/rc4.cc
... ... @@ -20,7 +20,7 @@ other_tests()
20 20 memcpy(data.get(), "potato", 6);
21 21 r.process(data.get(), 6, data.get());
22 22 assert(memcmp(data.get(), "\xa5\x6f\xe7\x27\x2b\x5c", 6) == 0);
23   - std::cout << "passed" << std::endl;
  23 + std::cout << "passed" << '\n';
24 24 }
25 25  
26 26 int
... ... @@ -32,7 +32,7 @@ main(int argc, char* argv[])
32 32 }
33 33  
34 34 if (argc != 4) {
35   - std::cerr << "Usage: rc4 hex-key infile outfile" << std::endl;
  35 + std::cerr << "Usage: rc4 hex-key infile outfile" << '\n';
36 36 exit(2);
37 37 }
38 38  
... ...
libtests/runlength.cc
... ... @@ -11,7 +11,7 @@ int
11 11 main(int argc, char* argv[])
12 12 {
13 13 if (argc != 4) {
14   - std::cerr << "Usage: runlength {-encode|-decode} infile outfile" << std::endl;
  14 + std::cerr << "Usage: runlength {-encode|-decode} infile outfile" << '\n';
15 15 exit(2);
16 16 }
17 17  
... ...
libtests/sparse_array.cc
... ... @@ -118,6 +118,6 @@ main()
118 118 } catch (std::logic_error&) {
119 119 }
120 120  
121   - std::cout << "sparse array tests done" << std::endl;
  121 + std::cout << "sparse array tests done" << '\n';
122 122 return 0;
123 123 }
... ...
qpdf/fix-qdf.cc
... ... @@ -81,7 +81,7 @@ QdfFixer::QdfFixer(std::string const&amp; filename, std::ostream&amp; out) :
81 81 void
82 82 QdfFixer::fatal(std::string const& msg)
83 83 {
84   - std::cerr << msg << std::endl;
  84 + std::cerr << msg << '\n';
85 85 exit(2);
86 86 }
87 87  
... ... @@ -380,7 +380,7 @@ realmain(int argc, char* argv[])
380 380 if (argc > 3) {
381 381 usage();
382 382 } else if ((argc > 1) && (strcmp(argv[1], "--version") == 0)) {
383   - std::cout << whoami << " from qpdf version " << QPDF::QPDFVersion() << std::endl;
  383 + std::cout << whoami << " from qpdf version " << QPDF::QPDFVersion() << '\n';
384 384 return 0;
385 385 } else if ((argc > 1) && (strcmp(argv[1], "--help") == 0)) {
386 386 usage();
... ... @@ -411,7 +411,7 @@ realmain(int argc, char* argv[])
411 411 QdfFixer qf(filename, out ? *out : std::cout);
412 412 qf.processLines(input);
413 413 } catch (std::exception& e) {
414   - std::cerr << whoami << ": error: " << e.what() << std::endl;
  414 + std::cerr << whoami << ": error: " << e.what() << '\n';
415 415 exit(qpdf_exit_error);
416 416 }
417 417 return 0;
... ...
qpdf/pdf_from_scratch.cc
... ... @@ -14,7 +14,7 @@ static char const* whoami = nullptr;
14 14 void
15 15 usage()
16 16 {
17   - std::cerr << "Usage: " << whoami << " n" << std::endl;
  17 + std::cerr << "Usage: " << whoami << " n\n";
18 18 exit(2);
19 19 }
20 20  
... ... @@ -77,7 +77,7 @@ runtest(int n)
77 77 throw std::runtime_error(std::string("invalid test ") + std::to_string(n));
78 78 }
79 79  
80   - std::cout << "test " << n << " done" << std::endl;
  80 + std::cout << "test " << n << " done\n";
81 81 }
82 82  
83 83 int
... ... @@ -98,7 +98,7 @@ main(int argc, char* argv[])
98 98 int n = QUtil::string_to_int(argv[1]);
99 99 runtest(n);
100 100 } catch (std::exception& e) {
101   - std::cerr << e.what() << std::endl;
  101 + std::cerr << e.what() << '\n';
102 102 exit(2);
103 103 }
104 104  
... ...
qpdf/qpdf.cc
... ... @@ -11,15 +11,15 @@ static char const* whoami = nullptr;
11 11 static void
12 12 usageExit(std::string const& msg)
13 13 {
14   - std::cerr << std::endl
15   - << whoami << ": " << msg << std::endl
16   - << std::endl
17   - << "For help:" << std::endl
18   - << " " << whoami << " --help=usage usage information" << std::endl
19   - << " " << whoami << " --help=topic help on a topic" << std::endl
20   - << " " << whoami << " --help=--option help on an option" << std::endl
21   - << " " << whoami << " --help general help and a topic list" << std::endl
22   - << std::endl;
  14 + std::cerr << '\n'
  15 + << whoami << ": " << msg << '\n'
  16 + << '\n'
  17 + << "For help:\n"
  18 + << " " << whoami << " --help=usage usage information\n"
  19 + << " " << whoami << " --help=topic help on a topic\n"
  20 + << " " << whoami << " --help=--option help on an option\n"
  21 + << " " << whoami << " --help general help and a topic list\n"
  22 + << '\n';
23 23 exit(QPDFJob::EXIT_ERROR);
24 24 }
25 25  
... ... @@ -37,7 +37,7 @@ realmain(int argc, char* argv[])
37 37 } catch (QPDFUsage& e) {
38 38 usageExit(e.what());
39 39 } catch (std::exception& e) {
40   - std::cerr << whoami << ": " << e.what() << std::endl;
  40 + std::cerr << whoami << ": " << e.what() << '\n';
41 41 return QPDFJob::EXIT_ERROR;
42 42 }
43 43 return j.getExitCode();
... ...
qpdf/test_driver.cc
... ... @@ -39,7 +39,7 @@ static char const* whoami = nullptr;
39 39 void
40 40 usage()
41 41 {
42   - std::cerr << "Usage: " << whoami << " n filename1 [arg2]" << std::endl;
  42 + std::cerr << "Usage: " << whoami << " n filename1 [arg2]" << '\n';
43 43 exit(2);
44 44 }
45 45  
... ... @@ -58,7 +58,7 @@ ExtendNameTree::ExtendNameTree(QPDFObjectHandle o, QPDF&amp; q) :
58 58  
59 59 ExtendNameTree::~ExtendNameTree()
60 60 {
61   - std::cout << "~ExtendNameTree called" << std::endl;
  61 + std::cout << "~ExtendNameTree called" << '\n';
62 62 }
63 63  
64 64 class Provider: public QPDFObjectHandle::StreamDataProvider
... ... @@ -104,30 +104,30 @@ class ParserCallbacks: public QPDFObjectHandle::ParserCallbacks
104 104 void
105 105 ParserCallbacks::contentSize(size_t size)
106 106 {
107   - std::cout << "content size: " << size << std::endl;
  107 + std::cout << "content size: " << size << '\n';
108 108 }
109 109  
110 110 void
111 111 ParserCallbacks::handleObject(QPDFObjectHandle obj, size_t offset, size_t length)
112 112 {
113 113 if (obj.isName() && (obj.getName() == "/Abort")) {
114   - std::cout << "test suite: terminating parsing" << std::endl;
  114 + std::cout << "test suite: terminating parsing" << '\n';
115 115 terminateParsing();
116 116 }
117 117 std::cout << obj.getTypeName() << ", offset=" << offset << ", length=" << length << ": ";
118 118 if (obj.isInlineImage()) {
119 119 // Exercise getTypeCode
120 120 assert(obj.getTypeCode() == ::ot_inlineimage);
121   - std::cout << QUtil::hex_encode(obj.getInlineImageValue()) << std::endl;
  121 + std::cout << QUtil::hex_encode(obj.getInlineImageValue()) << '\n';
122 122 } else {
123   - std::cout << obj.unparse() << std::endl;
  123 + std::cout << obj.unparse() << '\n';
124 124 }
125 125 }
126 126  
127 127 void
128 128 ParserCallbacks::handleEOF()
129 129 {
130   - std::cout << "-EOF-" << std::endl;
  130 + std::cout << "-EOF-" << '\n';
131 131 }
132 132  
133 133 class TokenFilter: public QPDFObjectHandle::TokenFilter
... ... @@ -165,7 +165,7 @@ checkPageContents(QPDFObjectHandle page, std::string const&amp; wanted_string)
165 165 {
166 166 std::string contents = getPageContents(page);
167 167 if (contents.find(wanted_string) == std::string::npos) {
168   - std::cout << "didn't find " << wanted_string << " in " << contents << std::endl;
  168 + std::cout << "didn't find " << wanted_string << " in " << contents << '\n';
169 169 }
170 170 }
171 171  
... ... @@ -207,77 +207,77 @@ test_0_1(QPDF&amp; pdf, char const* arg2)
207 207 // any difference between a key that is present and null
208 208 // and a key that is absent.
209 209 QTC::TC("qpdf", "main QTest implicit");
210   - std::cout << "/QTest is implicit" << std::endl;
  210 + std::cout << "/QTest is implicit" << '\n';
211 211 }
212 212  
213 213 QTC::TC("qpdf", "main QTest indirect", qtest.isIndirect() ? 1 : 0);
214 214 std::cout << "/QTest is " << (qtest.isIndirect() ? "in" : "") << "direct and has type "
215   - << qtest.getTypeName() << " (" << qtest.getTypeCode() << ")" << std::endl;
  215 + << qtest.getTypeName() << " (" << qtest.getTypeCode() << ")" << '\n';
216 216  
217 217 if (qtest.isNull()) {
218 218 QTC::TC("qpdf", "main QTest null");
219   - std::cout << "/QTest is null" << std::endl;
  219 + std::cout << "/QTest is null" << '\n';
220 220 } else if (qtest.isBool()) {
221 221 QTC::TC("qpdf", "main QTest bool", qtest.getBoolValue() ? 1 : 0);
222 222 std::cout << "/QTest is Boolean with value " << (qtest.getBoolValue() ? "true" : "false")
223   - << std::endl;
  223 + << '\n';
224 224 } else if (qtest.isInteger()) {
225 225 QTC::TC("qpdf", "main QTest int");
226   - std::cout << "/QTest is an integer with value " << qtest.getIntValue() << std::endl;
  226 + std::cout << "/QTest is an integer with value " << qtest.getIntValue() << '\n';
227 227 } else if (qtest.isReal()) {
228 228 QTC::TC("qpdf", "main QTest real");
229   - std::cout << "/QTest is a real number with value " << qtest.getRealValue() << std::endl;
  229 + std::cout << "/QTest is a real number with value " << qtest.getRealValue() << '\n';
230 230 } else if (qtest.isName()) {
231 231 QTC::TC("qpdf", "main QTest name");
232   - std::cout << "/QTest is a name with value " << qtest.getName() << std::endl;
  232 + std::cout << "/QTest is a name with value " << qtest.getName() << '\n';
233 233 } else if (qtest.isString()) {
234 234 QTC::TC("qpdf", "main QTest string");
235   - std::cout << "/QTest is a string with value " << qtest.getStringValue() << std::endl;
  235 + std::cout << "/QTest is a string with value " << qtest.getStringValue() << '\n';
236 236 } else if (qtest.isArray()) {
237 237 QTC::TC("qpdf", "main QTest array");
238   - std::cout << "/QTest is an array with " << qtest.getArrayNItems() << " items" << std::endl;
  238 + std::cout << "/QTest is an array with " << qtest.getArrayNItems() << " items" << '\n';
239 239 int i = 0;
240 240 for (auto& iter: qtest.aitems()) {
241 241 QTC::TC("qpdf", "main QTest array indirect", iter.isIndirect() ? 1 : 0);
242 242 std::cout << " item " << i << " is " << (iter.isIndirect() ? "in" : "") << "direct"
243   - << std::endl;
  243 + << '\n';
244 244 ++i;
245 245 }
246 246 } else if (qtest.isDictionary()) {
247 247 QTC::TC("qpdf", "main QTest dictionary");
248   - std::cout << "/QTest is a dictionary" << std::endl;
  248 + std::cout << "/QTest is a dictionary" << '\n';
249 249 for (auto& iter: qtest.ditems()) {
250 250 QTC::TC("qpdf", "main QTest dictionary indirect", iter.second.isIndirect() ? 1 : 0);
251 251 std::cout << " " << iter.first << " is " << (iter.second.isIndirect() ? "in" : "")
252   - << "direct" << std::endl;
  252 + << "direct" << '\n';
253 253 }
254 254 } else if (qtest.isStream()) {
255 255 QTC::TC("qpdf", "main QTest stream");
256   - std::cout << "/QTest is a stream. Dictionary: " << qtest.getDict().unparse() << std::endl;
  256 + std::cout << "/QTest is a stream. Dictionary: " << qtest.getDict().unparse() << '\n';
257 257  
258   - std::cout << "Raw stream data:" << std::endl;
  258 + std::cout << "Raw stream data:" << '\n';
259 259 std::cout.flush();
260 260 QUtil::binary_stdout();
261 261 auto out = std::make_shared<Pl_StdioFile>("raw", stdout);
262 262 qtest.pipeStreamData(out.get(), 0, qpdf_dl_none);
263 263  
264   - std::cout << std::endl << "Uncompressed stream data:" << std::endl;
  264 + std::cout << '\n' << "Uncompressed stream data:" << '\n';
265 265 if (qtest.pipeStreamData(nullptr, 0, qpdf_dl_all)) {
266 266 std::cout.flush();
267 267 QUtil::binary_stdout();
268 268 out = std::make_shared<Pl_StdioFile>("filtered", stdout);
269 269 qtest.pipeStreamData(out.get(), 0, qpdf_dl_all);
270   - std::cout << std::endl << "End of stream data" << std::endl;
  270 + std::cout << '\n' << "End of stream data" << '\n';
271 271 } else {
272   - std::cout << "Stream data is not filterable." << std::endl;
  272 + std::cout << "Stream data is not filterable." << '\n';
273 273 }
274 274 } else {
275 275 // Should not happen!
276   - std::cout << "/QTest is an unknown object" << std::endl;
  276 + std::cout << "/QTest is an unknown object" << '\n';
277 277 }
278 278  
279   - std::cout << "unparse: " << qtest.unparse() << std::endl
280   - << "unparseResolved: " << qtest.unparseResolved() << std::endl;
  279 + std::cout << "unparse: " << qtest.unparse() << '\n'
  280 + << "unparseResolved: " << qtest.unparseResolved() << '\n';
281 281 }
282 282  
283 283 static void
... ... @@ -287,12 +287,12 @@ test_2(QPDF&amp; pdf, char const* arg2)
287 287 // PDF file.
288 288  
289 289 QPDFObjectHandle trailer = pdf.getTrailer();
290   - std::cout << trailer.getKey("/Info").getKey("/CreationDate").getStringValue() << std::endl;
291   - std::cout << trailer.getKey("/Info").getKey("/Producer").getStringValue() << std::endl;
  290 + std::cout << trailer.getKey("/Info").getKey("/CreationDate").getStringValue() << '\n';
  291 + std::cout << trailer.getKey("/Info").getKey("/Producer").getStringValue() << '\n';
292 292  
293 293 QPDFObjectHandle encrypt = trailer.getKey("/Encrypt");
294   - std::cout << encrypt.getKey("/O").unparse() << std::endl;
295   - std::cout << encrypt.getKey("/U").unparse() << std::endl;
  294 + std::cout << encrypt.getKey("/O").unparse() << '\n';
  295 + std::cout << encrypt.getKey("/U").unparse() << '\n';
296 296  
297 297 QPDFObjectHandle root = pdf.getRoot();
298 298 QPDFObjectHandle pages = root.getKey("/Pages");
... ... @@ -310,7 +310,7 @@ test_3(QPDF&amp; pdf, char const* arg2)
310 310 QPDFObjectHandle streams = pdf.getTrailer().getKey("/QStreams");
311 311 for (int i = 0; i < streams.getArrayNItems(); ++i) {
312 312 QPDFObjectHandle stream = streams.getArrayItem(i);
313   - std::cout << "-- stream " << i << " --" << std::endl;
  313 + std::cout << "-- stream " << i << " --" << '\n';
314 314 std::cout.flush();
315 315 QUtil::binary_stdout();
316 316 auto out = std::make_shared<Pl_StdioFile>("tokenized stream", stdout);
... ... @@ -374,44 +374,44 @@ test_5(QPDF&amp; pdf, char const* arg2)
374 374 int pageno = 0;
375 375 for (auto& page: QPDFPageDocumentHelper(pdf).getAllPages()) {
376 376 ++pageno;
377   - std::cout << "page " << pageno << ":" << std::endl;
378   - std::cout << " images:" << std::endl;
  377 + std::cout << "page " << pageno << ":" << '\n';
  378 + std::cout << " images:" << '\n';
379 379 for (auto const& iter2: page.getImages()) {
380 380 std::string const& name = iter2.first;
381 381 QPDFObjectHandle image = iter2.second;
382 382 QPDFObjectHandle dict = image.getDict();
383 383 long long width = dict.getKey("/Width").getIntValue();
384 384 long long height = dict.getKey("/Height").getIntValue();
385   - std::cout << " " << name << ": " << width << " x " << height << std::endl;
  385 + std::cout << " " << name << ": " << width << " x " << height << '\n';
386 386 }
387 387  
388   - std::cout << " content:" << std::endl;
  388 + std::cout << " content:" << '\n';
389 389 std::vector<QPDFObjectHandle> content = page.getPageContents();
390 390 for (auto& iter2: content) {
391   - std::cout << " " << iter2.unparse() << std::endl;
  391 + std::cout << " " << iter2.unparse() << '\n';
392 392 }
393 393  
394   - std::cout << "end page " << pageno << std::endl;
  394 + std::cout << "end page " << pageno << '\n';
395 395 }
396 396  
397 397 QPDFObjectHandle root = pdf.getRoot();
398 398 QPDFObjectHandle qstrings = root.getKey("/QStrings");
399 399 if (qstrings.isArray()) {
400   - std::cout << "QStrings:" << std::endl;
  400 + std::cout << "QStrings:" << '\n';
401 401 int nitems = qstrings.getArrayNItems();
402 402 for (int i = 0; i < nitems; ++i) {
403   - std::cout << qstrings.getArrayItem(i).getUTF8Value() << std::endl;
  403 + std::cout << qstrings.getArrayItem(i).getUTF8Value() << '\n';
404 404 }
405 405 }
406 406  
407 407 QPDFObjectHandle qnumbers = root.getKey("/QNumbers");
408 408 if (qnumbers.isArray()) {
409   - std::cout << "QNumbers:" << std::endl;
  409 + std::cout << "QNumbers:" << '\n';
410 410 int nitems = qnumbers.getArrayNItems();
411 411 for (int i = 0; i < nitems; ++i) {
412 412 std::cout << QUtil::double_to_string(
413 413 qnumbers.getArrayItem(i).getNumericValue(), 3, false)
414   - << std::endl;
  414 + << '\n';
415 415 }
416 416 }
417 417 }
... ... @@ -432,7 +432,7 @@ test_6(QPDF&amp; pdf, char const* arg2)
432 432 cleartext = true;
433 433 }
434 434 std::cout << "encrypted=" << (pdf.isEncrypted() ? 1 : 0)
435   - << "; cleartext=" << (cleartext ? 1 : 0) << std::endl;
  435 + << "; cleartext=" << (cleartext ? 1 : 0) << '\n';
436 436 }
437 437  
438 438 static void
... ... @@ -483,9 +483,9 @@ test_8(QPDF&amp; pdf, char const* arg2)
483 483 provider->badLength(true);
484 484 try {
485 485 qstream.getStreamData();
486   - std::cout << "oops -- getStreamData didn't throw" << std::endl;
  486 + std::cout << "oops -- getStreamData didn't throw" << '\n';
487 487 } catch (std::exception const& e) {
488   - std::cout << "exception: " << e.what() << std::endl;
  488 + std::cout << "exception: " << e.what() << '\n';
489 489 }
490 490 }
491 491  
... ... @@ -501,9 +501,9 @@ test_9(QPDF&amp; pdf, char const* arg2)
501 501 QPDFObjectHandle rstream = QPDFObjectHandle::newStream(&pdf);
502 502 try {
503 503 rstream.getStreamData();
504   - std::cout << "oops -- getStreamData didn't throw" << std::endl;
  504 + std::cout << "oops -- getStreamData didn't throw" << '\n';
505 505 } catch (std::logic_error const& e) {
506   - std::cout << "exception: " << e.what() << std::endl;
  506 + std::cout << "exception: " << e.what() << '\n';
507 507 }
508 508 rstream.replaceStreamData(
509 509 "data for other stream\n", QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull());
... ... @@ -539,10 +539,10 @@ test_11(QPDF&amp; pdf, char const* arg2)
539 539 std::shared_ptr<Buffer> b1 = qstream.getStreamData();
540 540 std::shared_ptr<Buffer> b2 = qstream.getRawStreamData();
541 541 if ((b1->getSize() == 7) && (memcmp(b1->getBuffer(), "potato\n", 7) == 0)) {
542   - std::cout << "filtered stream data okay" << std::endl;
  542 + std::cout << "filtered stream data okay" << '\n';
543 543 }
544 544 if ((b2->getSize() == 15) && (memcmp(b2->getBuffer(), "706F7461746F0A\n", 15) == 0)) {
545   - std::cout << "raw stream data okay" << std::endl;
  545 + std::cout << "raw stream data okay" << '\n';
546 546 }
547 547 }
548 548  
... ... @@ -580,9 +580,7 @@ test_13(QPDF&amp; pdf, char const* arg2)
580 580 # pragma GCC diagnostic pop
581 581 #endif
582 582 pdf.showLinearizationData();
583   - std::cout << "---output---" << std::endl
584   - << out.str() << "---error---" << std::endl
585   - << err.str();
  583 + std::cout << "---output---" << '\n' << out.str() << "---error---" << '\n' << err.str();
586 584 }
587 585  
588 586 static void
... ... @@ -614,27 +612,27 @@ test_14(QPDF&amp; pdf, char const* arg2)
614 612 // Do it wrong first...
615 613 pdf.replaceObject(qdict.getObjGen(), qdict);
616 614 } catch (std::logic_error const&) {
617   - std::cout << "caught logic error as expected" << std::endl;
  615 + std::cout << "caught logic error as expected" << '\n';
618 616 }
619 617 pdf.replaceObject(qdict.getObjGen(), new_dict);
620 618 // Now qdict points to the new dictionary
621   - std::cout << "old dict: " << qdict.getKey("/NewDict").getIntValue() << std::endl;
  619 + std::cout << "old dict: " << qdict.getKey("/NewDict").getIntValue() << '\n';
622 620 // Swap dict and array
623 621 pdf.swapObjects(qdict.getObjGen(), qarray.getObjGen());
624 622 // Now qarray will resolve to new object and qdict resolves to
625 623 // the array
626   - std::cout << "swapped array: " << qdict.getArrayItem(0).getName() << std::endl;
627   - std::cout << "new dict: " << qarray.getKey("/NewDict").getIntValue() << std::endl;
  624 + std::cout << "swapped array: " << qdict.getArrayItem(0).getName() << '\n';
  625 + std::cout << "new dict: " << qarray.getKey("/NewDict").getIntValue() << '\n';
628 626 // Reread qdict, still pointing to an array
629 627 qdict = pdf.getObjectByObjGen(qdict.getObjGen());
630   - std::cout << "swapped array: " << qdict.getArrayItem(0).getName() << std::endl;
  628 + std::cout << "swapped array: " << qdict.getArrayItem(0).getName() << '\n';
631 629  
632 630 // Exercise getAsMap and getAsArray
633 631 std::vector<QPDFObjectHandle> array_elements = qdict.getArrayAsVector();
634 632 std::map<std::string, QPDFObjectHandle> dict_items = qarray.getDictAsMap();
635 633 if ((array_elements.size() == 1) && (array_elements.at(0).getName() == "/Array") &&
636 634 (dict_items.size() == 1) && (dict_items["/NewDict"].getIntValue() == 2)) {
637   - std::cout << "array and dictionary contents are correct" << std::endl;
  635 + std::cout << "array and dictionary contents are correct" << '\n';
638 636 }
639 637  
640 638 // Exercise writing to memory buffer
... ... @@ -853,7 +851,7 @@ test_21(QPDF&amp; pdf, char const* arg2)
853 851 QPDFObjectHandle page = pages.at(0);
854 852 QPDFObjectHandle contents = page.getKey("/Contents");
855 853 contents.shallowCopy();
856   - std::cout << "you can't see this" << std::endl;
  854 + std::cout << "you can't see this" << '\n';
857 855 }
858 856  
859 857 static void
... ... @@ -865,7 +863,7 @@ test_22(QPDF&amp; pdf, char const* arg2)
865 863 QPDFPageObjectHelper& page = pages.at(0);
866 864 dh.removePage(page);
867 865 dh.removePage(page);
868   - std::cout << "you can't see this" << std::endl;
  866 + std::cout << "you can't see this" << '\n';
869 867 }
870 868  
871 869 static void
... ... @@ -895,44 +893,44 @@ test_24(QPDF&amp; pdf, char const* arg2)
895 893 // Make sure trying to ask questions about a reserved object
896 894 // doesn't break it.
897 895 if (res1.isArray()) {
898   - std::cout << "oops -- res1 is an array" << std::endl;
  896 + std::cout << "oops -- res1 is an array" << '\n';
899 897 }
900 898 if (res1.isReserved()) {
901   - std::cout << "res1 is still reserved after checking if array" << std::endl;
  899 + std::cout << "res1 is still reserved after checking if array" << '\n';
902 900 }
903 901 pdf.replaceReserved(res1, array1);
904 902 if (res1.isReserved()) {
905   - std::cout << "oops -- res1 is still reserved" << std::endl;
  903 + std::cout << "oops -- res1 is still reserved" << '\n';
906 904 } else {
907   - std::cout << "res1 is no longer reserved" << std::endl;
  905 + std::cout << "res1 is no longer reserved" << '\n';
908 906 }
909 907 res1.assertArray();
910   - std::cout << "res1 is an array" << std::endl;
  908 + std::cout << "res1 is an array" << '\n';
911 909  
912 910 try {
913 911 res2.unparseResolved();
914   - std::cout << "oops -- didn't throw" << std::endl;
  912 + std::cout << "oops -- didn't throw" << '\n';
915 913 } catch (std::logic_error const& e) {
916   - std::cout << "logic error: " << e.what() << std::endl;
  914 + std::cout << "logic error: " << e.what() << '\n';
917 915 }
918 916 try {
919 917 res2.makeDirect();
920   - std::cout << "oops -- didn't throw" << std::endl;
  918 + std::cout << "oops -- didn't throw" << '\n';
921 919 } catch (std::logic_error const& e) {
922   - std::cout << "logic error: " << e.what() << std::endl;
  920 + std::cout << "logic error: " << e.what() << '\n';
923 921 }
924 922  
925 923 pdf.replaceReserved(res2, array2);
926 924  
927 925 res2.assertArray();
928   - std::cout << "res2 is an array" << std::endl;
  926 + std::cout << "res2 is an array" << '\n';
929 927  
930 928 // Verify that the previously added reserved keys can be
931 929 // dereferenced properly now
932 930 int i1 = res1.getArrayItem(0).getArrayItem(1).getIntValueAsInt();
933 931 int i2 = res2.getArrayItem(0).getArrayItem(1).getIntValueAsInt();
934 932 if ((i1 == 2) && (i2 == 1)) {
935   - std::cout << "circular access and lazy resolution worked" << std::endl;
  933 + std::cout << "circular access and lazy resolution worked" << '\n';
936 934 }
937 935  
938 936 QPDFWriter w(pdf, "a.pdf");
... ... @@ -1078,15 +1076,15 @@ test_28(QPDF&amp; pdf, char const* arg2)
1078 1076 // Copy foreign object errors
1079 1077 try {
1080 1078 pdf.copyForeignObject(pdf.getTrailer().getKey("/QTest"));
1081   - std::cout << "oops -- didn't throw" << std::endl;
  1079 + std::cout << "oops -- didn't throw" << '\n';
1082 1080 } catch (std::logic_error const& e) {
1083   - std::cout << "logic error: " << e.what() << std::endl;
  1081 + std::cout << "logic error: " << e.what() << '\n';
1084 1082 }
1085 1083 try {
1086 1084 pdf.copyForeignObject(QPDFObjectHandle::newInteger(1));
1087   - std::cout << "oops -- didn't throw" << std::endl;
  1085 + std::cout << "oops -- didn't throw" << '\n';
1088 1086 } catch (std::logic_error const& e) {
1089   - std::cout << "logic error: " << e.what() << std::endl;
  1087 + std::cout << "logic error: " << e.what() << '\n';
1090 1088 }
1091 1089 }
1092 1090  
... ... @@ -1111,9 +1109,9 @@ test_29(QPDF&amp; pdf, char const* arg2)
1111 1109 try {
1112 1110 QPDFWriter w(*other, "a.pdf");
1113 1111 w.write();
1114   - std::cout << "oops -- didn't throw" << std::endl;
  1112 + std::cout << "oops -- didn't throw" << '\n';
1115 1113 } catch (std::logic_error const& e) {
1116   - std::cout << "logic error: " << e.what() << std::endl;
  1114 + std::cout << "logic error: " << e.what() << '\n';
1117 1115 }
1118 1116  
1119 1117 // Make sure deleting the other source doesn't prevent detection.
... ... @@ -1126,9 +1124,9 @@ test_29(QPDF&amp; pdf, char const* arg2)
1126 1124 try {
1127 1125 QPDFWriter w(*other, "a.pdf");
1128 1126 w.write();
1129   - std::cout << "oops -- didn't throw" << std::endl;
  1127 + std::cout << "oops -- didn't throw" << '\n';
1130 1128 } catch (std::logic_error const& e) {
1131   - std::cout << "logic error: " << e.what() << std::endl;
  1129 + std::cout << "logic error: " << e.what() << '\n';
1132 1130 }
1133 1131  
1134 1132 // Detect adding a foreign object
... ... @@ -1137,7 +1135,7 @@ test_29(QPDF&amp; pdf, char const* arg2)
1137 1135 try {
1138 1136 root1.replaceKey("/Oops", root2);
1139 1137 } catch (std::logic_error const& e) {
1140   - std::cout << "logic error: " << e.what() << std::endl;
  1138 + std::cout << "logic error: " << e.what() << '\n';
1141 1139 }
1142 1140 }
1143 1141  
... ... @@ -1160,10 +1158,10 @@ test_30(QPDF&amp; pdf, char const* arg2)
1160 1158 pages = final.getAllPages();
1161 1159 std::string new_contents = getPageContents(pages.at(0));
1162 1160 if (orig_contents != new_contents) {
1163   - std::cout << "oops -- page contents don't match" << std::endl
  1161 + std::cout << "oops -- page contents don't match" << '\n'
1164 1162 << "original:\n"
1165 1163 << orig_contents << "new:\n"
1166   - << new_contents << std::endl;
  1164 + << new_contents << '\n';
1167 1165 }
1168 1166 }
1169 1167  
... ... @@ -1172,20 +1170,20 @@ test_31(QPDF&amp; pdf, char const* arg2)
1172 1170 {
1173 1171 auto o1 = "[/name 16059 3.14159 false\n"
1174 1172 " << /key true /other [ (string1) (string2) ] >> null]"_qpdf;
1175   - std::cout << o1.unparse() << std::endl;
  1173 + std::cout << o1.unparse() << '\n';
1176 1174 QPDFObjectHandle o2 = QPDFObjectHandle::parse(" 12345 \f ");
1177 1175 assert(o2.isInteger() && (o2.getIntValue() == 12345));
1178 1176 try {
1179 1177 QPDFObjectHandle::parse("[1 0 R]", "indirect test");
1180   - std::cout << "oops -- didn't throw" << std::endl;
  1178 + std::cout << "oops -- didn't throw" << '\n';
1181 1179 } catch (std::logic_error const& e) {
1182   - std::cout << "logic error parsing indirect: " << e.what() << std::endl;
  1180 + std::cout << "logic error parsing indirect: " << e.what() << '\n';
1183 1181 }
1184 1182 try {
1185 1183 QPDFObjectHandle::parse("0 trailing", "trailing test");
1186   - std::cout << "oops -- didn't throw" << std::endl;
  1184 + std::cout << "oops -- didn't throw" << '\n';
1187 1185 } catch (std::runtime_error const& e) {
1188   - std::cout << "trailing data: " << e.what() << std::endl;
  1186 + std::cout << "trailing data: " << e.what() << '\n';
1189 1187 }
1190 1188 assert(QPDFObjectHandle::parse(&pdf, "[5 0 R]").getArrayItem(0).isInteger());
1191 1189 assert(!QPDFObjectHandle::parse(&pdf, "[5 0 R]").getArrayItem(0).isDirectNull());
... ... @@ -1218,9 +1216,9 @@ test_32(QPDF&amp; pdf, char const* arg2)
1218 1216 bool newline = ((i & 2) != 0);
1219 1217 QPDFWriter w(pdf, filenames[i]);
1220 1218 w.setStaticID(true);
1221   - std::cout << "file: " << filenames[i] << std::endl
1222   - << "linearized: " << (linearized ? "yes" : "no") << std::endl
1223   - << "newline: " << (newline ? "yes" : "no") << std::endl;
  1219 + std::cout << "file: " << filenames[i] << '\n'
  1220 + << "linearized: " << (linearized ? "yes" : "no") << '\n'
  1221 + << "newline: " << (newline ? "yes" : "no") << '\n';
1224 1222 w.setLinearization(linearized);
1225 1223 if (linearized) {
1226 1224 w.setCompressStreams(false); // avoid dependency on zlib's output
... ... @@ -1249,14 +1247,14 @@ static void
1249 1247 test_34(QPDF& pdf, char const* arg2)
1250 1248 {
1251 1249 // Look at Extensions dictionary
1252   - std::cout << "version: " << pdf.getPDFVersion() << std::endl
1253   - << "extension level: " << pdf.getExtensionLevel() << std::endl
1254   - << pdf.getRoot().getKey("/Extensions").unparse() << std::endl;
  1250 + std::cout << "version: " << pdf.getPDFVersion() << '\n'
  1251 + << "extension level: " << pdf.getExtensionLevel() << '\n'
  1252 + << pdf.getRoot().getKey("/Extensions").unparse() << '\n';
1255 1253 auto v = pdf.getVersionAsPDFVersion();
1256 1254 std::string v_string;
1257 1255 int extension_level;
1258 1256 v.getVersion(v_string, extension_level);
1259   - std::cout << "As PDFVersion: " << v_string << "/" << extension_level << std::endl;
  1257 + std::cout << "As PDFVersion: " << v_string << "/" << extension_level << '\n';
1260 1258 }
1261 1259  
1262 1260 static void
... ... @@ -1350,7 +1348,7 @@ test_38(QPDF&amp; pdf, char const* arg2)
1350 1348 // Designed for override-compressed-object.pdf
1351 1349 QPDFObjectHandle qtest = pdf.getRoot().getKey("/QTest");
1352 1350 for (int i = 0; i < qtest.getArrayNItems(); ++i) {
1353   - std::cout << qtest.getArrayItem(i).unparseResolved() << std::endl;
  1351 + std::cout << qtest.getArrayItem(i).unparseResolved() << '\n';
1354 1352 }
1355 1353 }
1356 1354  
... ... @@ -1360,13 +1358,13 @@ test_39(QPDF&amp; pdf, char const* arg2)
1360 1358 // Display image filter and color set for each image on each page
1361 1359 int pageno = 0;
1362 1360 for (auto& page: QPDFPageDocumentHelper(pdf).getAllPages()) {
1363   - std::cout << "page " << ++pageno << std::endl;
  1361 + std::cout << "page " << ++pageno << '\n';
1364 1362 std::map<std::string, QPDFObjectHandle> images = page.getImages();
1365 1363 for (auto& i_iter: images) {
1366 1364 QPDFObjectHandle image_dict = i_iter.second.getDict();
1367 1365 std::cout << "filter: " << image_dict.getKey("/Filter").unparseResolved()
1368 1366 << ", color space: " << image_dict.getKey("/ColorSpace").unparseResolved()
1369   - << std::endl;
  1367 + << '\n';
1370 1368 }
1371 1369 }
1372 1370 }
... ... @@ -1578,51 +1576,51 @@ test_43(QPDF&amp; pdf, char const* arg2)
1578 1576 }
1579 1577 std::cout << "iterating over form fields\n";
1580 1578 for (auto& ffh: afdh.getFormFields()) {
1581   - std::cout << "Field: " << ffh.getObjectHandle().unparse() << std::endl;
  1579 + std::cout << "Field: " << ffh.getObjectHandle().unparse() << '\n';
1582 1580 QPDFFormFieldObjectHelper node = ffh;
1583 1581 while (!node.isNull()) {
1584 1582 QPDFFormFieldObjectHelper parent(node.getParent());
1585 1583 std::cout << " Parent: "
1586 1584 << (parent.isNull() ? std::string("none")
1587 1585 : parent.getObjectHandle().unparse())
1588   - << std::endl;
  1586 + << '\n';
1589 1587 node = parent;
1590 1588 }
1591   - std::cout << " Fully qualified name: " << ffh.getFullyQualifiedName() << std::endl;
1592   - std::cout << " Partial name: " << ffh.getPartialName() << std::endl;
1593   - std::cout << " Alternative name: " << ffh.getAlternativeName() << std::endl;
1594   - std::cout << " Mapping name: " << ffh.getMappingName() << std::endl;
1595   - std::cout << " Field type: " << ffh.getFieldType() << std::endl;
1596   - std::cout << " Value: " << ffh.getValue().unparse() << std::endl;
1597   - std::cout << " Value as string: " << ffh.getValueAsString() << std::endl;
1598   - std::cout << " Default value: " << ffh.getDefaultValue().unparse() << std::endl;
1599   - std::cout << " Default value as string: " << ffh.getDefaultValueAsString() << std::endl;
1600   - std::cout << " Default appearance: " << ffh.getDefaultAppearance() << std::endl;
1601   - std::cout << " Quadding: " << ffh.getQuadding() << std::endl;
  1589 + std::cout << " Fully qualified name: " << ffh.getFullyQualifiedName() << '\n';
  1590 + std::cout << " Partial name: " << ffh.getPartialName() << '\n';
  1591 + std::cout << " Alternative name: " << ffh.getAlternativeName() << '\n';
  1592 + std::cout << " Mapping name: " << ffh.getMappingName() << '\n';
  1593 + std::cout << " Field type: " << ffh.getFieldType() << '\n';
  1594 + std::cout << " Value: " << ffh.getValue().unparse() << '\n';
  1595 + std::cout << " Value as string: " << ffh.getValueAsString() << '\n';
  1596 + std::cout << " Default value: " << ffh.getDefaultValue().unparse() << '\n';
  1597 + std::cout << " Default value as string: " << ffh.getDefaultValueAsString() << '\n';
  1598 + std::cout << " Default appearance: " << ffh.getDefaultAppearance() << '\n';
  1599 + std::cout << " Quadding: " << ffh.getQuadding() << '\n';
1602 1600 std::vector<QPDFAnnotationObjectHelper> annotations = afdh.getAnnotationsForField(ffh);
1603 1601 for (auto& aoh: annotations) {
1604   - std::cout << " Annotation: " << aoh.getObjectHandle().unparse() << std::endl;
  1602 + std::cout << " Annotation: " << aoh.getObjectHandle().unparse() << '\n';
1605 1603 }
1606 1604 }
1607 1605 std::cout << "iterating over annotations per page\n";
1608 1606 for (auto& page: QPDFPageDocumentHelper(pdf).getAllPages()) {
1609   - std::cout << "Page: " << page.getObjectHandle().unparse() << std::endl;
  1607 + std::cout << "Page: " << page.getObjectHandle().unparse() << '\n';
1610 1608 for (auto& ah: afdh.getWidgetAnnotationsForPage(page)) {
1611   - std::cout << " Annotation: " << ah.getObjectHandle().unparse() << std::endl;
  1609 + std::cout << " Annotation: " << ah.getObjectHandle().unparse() << '\n';
1612 1610 std::cout << " Field: "
1613   - << (afdh.getFieldForAnnotation(ah).getObjectHandle().unparse()) << std::endl;
1614   - std::cout << " Subtype: " << ah.getSubtype() << std::endl;
  1611 + << (afdh.getFieldForAnnotation(ah).getObjectHandle().unparse()) << '\n';
  1612 + std::cout << " Subtype: " << ah.getSubtype() << '\n';
1615 1613 std::cout << " Rect: ";
1616 1614 print_rect(std::cout, ah.getRect());
1617   - std::cout << std::endl;
  1615 + std::cout << '\n';
1618 1616 std::string state = ah.getAppearanceState();
1619 1617 if (!state.empty()) {
1620   - std::cout << " Appearance state: " << state << std::endl;
  1618 + std::cout << " Appearance state: " << state << '\n';
1621 1619 }
1622 1620 std::cout << " Appearance stream (/N): " << ah.getAppearanceStream("/N").unparse()
1623   - << std::endl;
  1621 + << '\n';
1624 1622 std::cout << " Appearance stream (/N, /3): "
1625   - << ah.getAppearanceStream("/N", "/3").unparse() << std::endl;
  1623 + << ah.getAppearanceStream("/N", "/3").unparse() << '\n';
1626 1624 }
1627 1625 }
1628 1626 }
... ... @@ -1637,7 +1635,7 @@ test_44(QPDF&amp; pdf, char const* arg2)
1637 1635 // \xc3\xb7 is utf-8 for U+00F7 (divided by)
1638 1636 field.setV("3.14 \xc3\xb7 0");
1639 1637 std::cout << "Set field value: " << field.getFullyQualifiedName() << " -> "
1640   - << field.getValueAsString() << std::endl;
  1638 + << field.getValueAsString() << '\n';
1641 1639 }
1642 1640 }
1643 1641 QPDFWriter w(pdf, "a.pdf");
... ... @@ -1669,11 +1667,11 @@ test_46(QPDF&amp; pdf, char const* arg2)
1669 1667 QPDFObjectHandle qtest = pdf.getTrailer().getKey("/QTest");
1670 1668 QPDFNumberTreeObjectHelper ntoh(qtest, pdf);
1671 1669 for (auto& iter: ntoh) {
1672   - std::cout << iter.first << " " << iter.second.getStringValue() << std::endl;
  1670 + std::cout << iter.first << " " << iter.second.getStringValue() << '\n';
1673 1671 }
1674 1672 QPDFNumberTreeObjectHelper::idx_map ntoh_map = ntoh.getAsMap();
1675 1673 for (auto& iter: ntoh_map) {
1676   - std::cout << iter.first << " " << iter.second.getStringValue() << std::endl;
  1674 + std::cout << iter.first << " " << iter.second.getStringValue() << '\n';
1677 1675 }
1678 1676 assert(1 == ntoh.getMin());
1679 1677 assert(29 == ntoh.getMax());
... ... @@ -1719,7 +1717,7 @@ test_46(QPDF&amp; pdf, char const* arg2)
1719 1717 --iter1;
1720 1718 assert(iter1->first == 2);
1721 1719  
1722   - std::cout << "insertAfter" << std::endl;
  1720 + std::cout << "insertAfter" << '\n';
1723 1721 auto new2 = QPDFNumberTreeObjectHelper::newEmpty(pdf);
1724 1722 auto iter2 = new2.begin();
1725 1723 assert(iter2 == new2.end());
... ... @@ -1728,23 +1726,23 @@ test_46(QPDF&amp; pdf, char const* arg2)
1728 1726 iter2.insertAfter(4, QPDFObjectHandle::newString("4!"));
1729 1727 assert(iter2->first == 4);
1730 1728 for (auto& i: new2) {
1731   - std::cout << i.first << " " << i.second.unparse() << std::endl;
  1729 + std::cout << i.first << " " << i.second.unparse() << '\n';
1732 1730 }
1733 1731  
1734   - std::cout << "/Bad1" << std::endl;
  1732 + std::cout << "/Bad1" << '\n';
1735 1733 auto bad1 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Bad1"), pdf);
1736 1734 assert(bad1.begin() == bad1.end());
1737 1735 assert(bad1.last() == bad1.end());
1738 1736  
1739   - std::cout << "/Bad2" << std::endl;
  1737 + std::cout << "/Bad2" << '\n';
1740 1738 auto bad2 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Bad2"), pdf);
1741 1739 for (auto& i: bad2) {
1742   - std::cout << i.first << " " << i.second.unparse() << std::endl;
  1740 + std::cout << i.first << " " << i.second.unparse() << '\n';
1743 1741 }
1744 1742  
1745 1743 std::vector<std::string> empties = {"/Empty1", "/Empty2"};
1746 1744 for (auto const& k: empties) {
1747   - std::cout << k << std::endl;
  1745 + std::cout << k << '\n';
1748 1746 auto empty = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey(k), pdf);
1749 1747 assert(empty.begin() == empty.end());
1750 1748 assert(empty.last() == empty.end());
... ... @@ -1765,37 +1763,37 @@ test_46(QPDF&amp; pdf, char const* arg2)
1765 1763 assert(empty.last()->first == 6);
1766 1764 assert(empty.last()->second.getStringValue() == "6");
1767 1765 }
1768   - std::cout << "Insert into invalid" << std::endl;
  1766 + std::cout << "Insert into invalid" << '\n';
1769 1767 auto invalid1 = QPDFNumberTreeObjectHelper(QPDFObjectHandle::newDictionary(), pdf);
1770 1768 try {
1771 1769 invalid1.insert(1, QPDFObjectHandle::newNull());
1772 1770 } catch (QPDFExc& e) {
1773   - std::cout << e.what() << std::endl;
  1771 + std::cout << e.what() << '\n';
1774 1772 }
1775 1773  
1776   - std::cout << "/Bad3, no repair" << std::endl;
  1774 + std::cout << "/Bad3, no repair" << '\n';
1777 1775 auto bad3_oh = pdf.getTrailer().getKey("/Bad3");
1778 1776 auto bad3 = QPDFNumberTreeObjectHelper(bad3_oh, pdf, false);
1779 1777 for (auto& i: bad3) {
1780   - std::cout << i.first << " " << i.second.unparse() << std::endl;
  1778 + std::cout << i.first << " " << i.second.unparse() << '\n';
1781 1779 }
1782 1780 assert(!bad3_oh.getKey("/Kids").getArrayItem(0).isIndirect());
1783 1781  
1784   - std::cout << "/Bad3, repair" << std::endl;
  1782 + std::cout << "/Bad3, repair" << '\n';
1785 1783 bad3 = QPDFNumberTreeObjectHelper(bad3_oh, pdf, true);
1786 1784 for (auto& i: bad3) {
1787   - std::cout << i.first << " " << i.second.unparse() << std::endl;
  1785 + std::cout << i.first << " " << i.second.unparse() << '\n';
1788 1786 }
1789 1787 assert(bad3_oh.getKey("/Kids").getArrayItem(0).isIndirect());
1790 1788  
1791   - std::cout << "/Bad4 -- missing limits" << std::endl;
  1789 + std::cout << "/Bad4 -- missing limits" << '\n';
1792 1790 auto bad4 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Bad4"), pdf);
1793 1791 bad4.insert(5, QPDFObjectHandle::newString("5"));
1794 1792 for (auto& i: bad4) {
1795   - std::cout << i.first << " " << i.second.unparse() << std::endl;
  1793 + std::cout << i.first << " " << i.second.unparse() << '\n';
1796 1794 }
1797 1795  
1798   - std::cout << "/Bad5 -- limit errors" << std::endl;
  1796 + std::cout << "/Bad5 -- limit errors" << '\n';
1799 1797 auto bad5 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Bad5"), pdf);
1800 1798 assert(bad5.find(10) == bad5.end());
1801 1799 }
... ... @@ -1810,7 +1808,7 @@ test_47(QPDF&amp; pdf, char const* arg2)
1810 1808 pldh.getLabelsForPageRange(0, npages - 1, 1, labels);
1811 1809 assert(labels.size() % 2 == 0);
1812 1810 for (size_t i = 0; i < labels.size(); i += 2) {
1813   - std::cout << labels.at(i).getIntValue() << " " << labels.at(i + 1).unparse() << std::endl;
  1811 + std::cout << labels.at(i).getIntValue() << " " << labels.at(i + 1).unparse() << '\n';
1814 1812 }
1815 1813 }
1816 1814  
... ... @@ -1822,11 +1820,11 @@ test_48(QPDF&amp; pdf, char const* arg2)
1822 1820 QPDFObjectHandle qtest = pdf.getTrailer().getKey("/QTest");
1823 1821 QPDFNameTreeObjectHelper ntoh(qtest, pdf);
1824 1822 for (auto& iter: ntoh) {
1825   - std::cout << iter.first << " -> " << iter.second.getStringValue() << std::endl;
  1823 + std::cout << iter.first << " -> " << iter.second.getStringValue() << '\n';
1826 1824 }
1827 1825 std::map<std::string, QPDFObjectHandle> ntoh_map = ntoh.getAsMap();
1828 1826 for (auto& iter: ntoh_map) {
1829   - std::cout << iter.first << " -> " << iter.second.getStringValue() << std::endl;
  1827 + std::cout << iter.first << " -> " << iter.second.getStringValue() << '\n';
1830 1828 }
1831 1829 assert(ntoh.hasName("11 elephant"));
1832 1830 assert(ntoh.hasName("07 sev\xe2\x80\xa2n"));
... ... @@ -1869,7 +1867,7 @@ test_48(QPDF&amp; pdf, char const* arg2)
1869 1867 --iter1;
1870 1868 assert(iter1->first == "2");
1871 1869  
1872   - std::cout << "insertAfter" << std::endl;
  1870 + std::cout << "insertAfter" << '\n';
1873 1871 auto new2 = QPDFNameTreeObjectHelper::newEmpty(pdf);
1874 1872 auto iter2 = new2.begin();
1875 1873 assert(iter2 == new2.end());
... ... @@ -1878,12 +1876,12 @@ test_48(QPDF&amp; pdf, char const* arg2)
1878 1876 iter2.insertAfter("4", QPDFObjectHandle::newString("4!"));
1879 1877 assert(iter2->first == "4");
1880 1878 for (auto& i: new2) {
1881   - std::cout << i.first << " " << i.second.unparse() << std::endl;
  1879 + std::cout << i.first << " " << i.second.unparse() << '\n';
1882 1880 }
1883 1881  
1884 1882 std::vector<std::string> empties = {"/Empty1", "/Empty2"};
1885 1883 for (auto const& k: empties) {
1886   - std::cout << k << std::endl;
  1884 + std::cout << k << '\n';
1887 1885 auto empty = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey(k), pdf);
1888 1886 assert(empty.begin() == empty.end());
1889 1887 assert(empty.last() == empty.end());
... ... @@ -1905,36 +1903,36 @@ test_48(QPDF&amp; pdf, char const* arg2)
1905 1903 assert(empty.last()->second.getStringValue() == "6");
1906 1904 }
1907 1905  
1908   - std::cout << "/Bad1 -- wrong key type" << std::endl;
  1906 + std::cout << "/Bad1 -- wrong key type" << '\n';
1909 1907 auto bad1 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad1"), pdf);
1910 1908 assert(bad1.find("G", true)->first == "A");
1911 1909 for (auto const& i: bad1) {
1912   - std::cout << i.first << std::endl;
  1910 + std::cout << i.first << '\n';
1913 1911 }
1914 1912  
1915   - std::cout << "/Bad2 -- invalid kid" << std::endl;
  1913 + std::cout << "/Bad2 -- invalid kid" << '\n';
1916 1914 auto bad2 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad2"), pdf);
1917 1915 assert(bad2.find("G", true)->first == "B");
1918 1916 for (auto const& i: bad2) {
1919   - std::cout << i.first << std::endl;
  1917 + std::cout << i.first << '\n';
1920 1918 }
1921 1919  
1922   - std::cout << "/Bad3 -- invalid kid" << std::endl;
  1920 + std::cout << "/Bad3 -- invalid kid" << '\n';
1923 1921 auto bad3 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad3"), pdf);
1924 1922 assert(bad3.find("G", true) == bad3.end());
1925 1923  
1926   - std::cout << "/Bad4 -- invalid kid" << std::endl;
  1924 + std::cout << "/Bad4 -- invalid kid" << '\n';
1927 1925 auto bad4 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad4"), pdf);
1928 1926 assert(bad4.find("F", true)->first == "C");
1929 1927 for (auto const& i: bad4) {
1930   - std::cout << i.first << std::endl;
  1928 + std::cout << i.first << '\n';
1931 1929 }
1932 1930  
1933   - std::cout << "/Bad5 -- loop in find" << std::endl;
  1931 + std::cout << "/Bad5 -- loop in find" << '\n';
1934 1932 auto bad5 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad5"), pdf);
1935 1933 assert(bad5.find("F", true)->first == "D");
1936 1934  
1937   - std::cout << "/Bad6 -- bad limits" << std::endl;
  1935 + std::cout << "/Bad6 -- bad limits" << '\n';
1938 1936 auto bad6 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Bad6"), pdf);
1939 1937 assert(bad6.insert("H", QPDFObjectHandle::newNull())->first == "H");
1940 1938 }
... ... @@ -1949,7 +1947,7 @@ test_49(QPDF&amp; pdf, char const* arg2)
1949 1947 auto outlines = odh.getOutlinesForPage(page.getObjectHandle().getObjGen());
1950 1948 for (auto& ol: outlines) {
1951 1949 std::cout << "page " << pageno << ": " << ol.getTitle() << " -> "
1952   - << ol.getDest().unparseResolved() << std::endl;
  1950 + << ol.getDest().unparseResolved() << '\n';
1953 1951 }
1954 1952 ++pageno;
1955 1953 }
... ... @@ -1963,11 +1961,11 @@ test_50(QPDF&amp; pdf, char const* arg2)
1963 1961 QPDFObjectHandle d1 = pdf.getTrailer().getKey("/Dict1");
1964 1962 QPDFObjectHandle d2 = pdf.getTrailer().getKey("/Dict2");
1965 1963 d1.mergeResources(d2);
1966   - std::cout << d1.getJSON(JSON::LATEST).unparse() << std::endl;
  1964 + std::cout << d1.getJSON(JSON::LATEST).unparse() << '\n';
1967 1965 // Top-level type mismatch
1968 1966 d1.mergeResources(d2.getKey("/k1"));
1969 1967 for (auto const& name: d1.getResourceNames()) {
1970   - std::cout << name << std::endl;
  1968 + std::cout << name << '\n';
1971 1969 }
1972 1970 }
1973 1971  
... ... @@ -2047,10 +2045,10 @@ test_53(QPDF&amp; pdf, char const* arg2)
2047 2045 QPDFObjectHandle root = pdf.getRoot();
2048 2046 auto new_obj = pdf.makeIndirectObject(QPDFObjectHandle::newString("potato"));
2049 2047 root.replaceKey("/Q1", new_obj);
2050   - std::cout << "new object: " << new_obj.unparse() << std::endl;
2051   - std::cout << "all objects" << std::endl;
  2048 + std::cout << "new object: " << new_obj.unparse() << '\n';
  2049 + std::cout << "all objects" << '\n';
2052 2050 for (auto& obj: pdf.getAllObjects()) {
2053   - std::cout << obj.unparse() << std::endl;
  2051 + std::cout << obj.unparse() << '\n';
2054 2052 }
2055 2053  
2056 2054 QPDFWriter w(pdf, "a.pdf");
... ... @@ -2068,7 +2066,7 @@ test_54(QPDF&amp; pdf, char const* arg2)
2068 2066 assert(pdf.getPDFVersion() != "1.5");
2069 2067 w.setObjectStreamMode(qpdf_o_generate);
2070 2068 if (w.getFinalVersion() != "1.5") {
2071   - std::cout << "oops: " << w.getFinalVersion() << std::endl;
  2069 + std::cout << "oops: " << w.getFinalVersion() << '\n';
2072 2070 }
2073 2071 }
2074 2072  
... ... @@ -2193,11 +2191,11 @@ test_60(QPDF&amp; pdf, char const* arg2)
2193 2191  
2194 2192 std::map<std::string, std::map<std::string, std::string>> conflicts;
2195 2193 auto show_conflicts = [&](std::string const& msg) {
2196   - std::cout << msg << std::endl;
  2194 + std::cout << msg << '\n';
2197 2195 for (auto const& i1: conflicts) {
2198   - std::cout << i1.first << ":" << std::endl;
  2196 + std::cout << i1.first << ":" << '\n';
2199 2197 for (auto const& i2: i1.second) {
2200   - std::cout << " " << i2.first << " -> " << i2.second << std::endl;
  2198 + std::cout << " " << i2.first << " -> " << i2.second << '\n';
2201 2199 }
2202 2200 }
2203 2201 };
... ... @@ -2242,22 +2240,22 @@ test_61(QPDF&amp; pdf, char const* arg2)
2242 2240 try {
2243 2241 pdf.processMemoryFile("empty", "", 0);
2244 2242 } catch (QPDFExc const&) {
2245   - std::cout << "Caught QPDFExc as expected" << std::endl;
  2243 + std::cout << "Caught QPDFExc as expected" << '\n';
2246 2244 }
2247 2245 try {
2248 2246 QUtil::safe_fopen("/does/not/exist", "r");
2249 2247 } catch (QPDFSystemError const&) {
2250   - std::cout << "Caught QPDFSystemError as expected" << std::endl;
  2248 + std::cout << "Caught QPDFSystemError as expected" << '\n';
2251 2249 }
2252 2250 try {
2253 2251 QUtil::int_to_string_base(0, 12);
2254 2252 } catch (std::logic_error const&) {
2255   - std::cout << "Caught logic_error as expected" << std::endl;
  2253 + std::cout << "Caught logic_error as expected" << '\n';
2256 2254 }
2257 2255 try {
2258 2256 QUtil::toUTF8(0xffffffff);
2259 2257 } catch (std::runtime_error const&) {
2260   - std::cout << "Caught runtime_error as expected" << std::endl;
  2258 + std::cout << "Caught runtime_error as expected" << '\n';
2261 2259 }
2262 2260  
2263 2261 // Spot check RTTI for dynamic cast. We intend to have pipelines
... ... @@ -2389,18 +2387,18 @@ test_68(QPDF&amp; pdf, char const* arg2)
2389 2387 QPDFObjectHandle qstream = root.getKey("/QStream");
2390 2388 try {
2391 2389 qstream.getStreamData();
2392   - std::cout << "oops -- didn't throw" << std::endl;
  2390 + std::cout << "oops -- didn't throw" << '\n';
2393 2391 } catch (std::exception& e) {
2394   - std::cout << "get unfilterable stream: " << e.what() << std::endl;
  2392 + std::cout << "get unfilterable stream: " << e.what() << '\n';
2395 2393 }
2396 2394 std::shared_ptr<Buffer> b1 = qstream.getStreamData(qpdf_dl_all);
2397 2395 if ((b1->getSize() > 10) && (memcmp(b1->getBuffer(), "wwwwwwwww", 9) == 0)) {
2398   - std::cout << "filtered stream data okay" << std::endl;
  2396 + std::cout << "filtered stream data okay" << '\n';
2399 2397 }
2400 2398 std::shared_ptr<Buffer> b2 = qstream.getRawStreamData();
2401 2399 if ((b2->getSize() > 10) &&
2402 2400 (memcmp(b2->getBuffer(), "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46", 10) == 0)) {
2403   - std::cout << "raw stream data okay" << std::endl;
  2401 + std::cout << "raw stream data okay" << '\n';
2404 2402 }
2405 2403 }
2406 2404  
... ... @@ -2436,42 +2434,42 @@ static void
2436 2434 test_71(QPDF& pdf, char const* arg2)
2437 2435 {
2438 2436 auto show = [](QPDFObjectHandle& obj, QPDFObjectHandle& xobj_dict, std::string const& key) {
2439   - std::cout << xobj_dict.unparse() << " -> " << key << " -> " << obj.unparse() << std::endl;
  2437 + std::cout << xobj_dict.unparse() << " -> " << key << " -> " << obj.unparse() << '\n';
2440 2438 };
2441 2439 auto page = QPDFPageDocumentHelper(pdf).getAllPages().at(0);
2442   - std::cout << "--- recursive, all ---" << std::endl;
  2440 + std::cout << "--- recursive, all ---" << '\n';
2443 2441 page.forEachXObject(true, show);
2444   - std::cout << "--- non-recursive, all ---" << std::endl;
  2442 + std::cout << "--- non-recursive, all ---" << '\n';
2445 2443 page.forEachXObject(false, show);
2446   - std::cout << "--- recursive, images ---" << std::endl;
  2444 + std::cout << "--- recursive, images ---" << '\n';
2447 2445 page.forEachImage(true, show);
2448   - std::cout << "--- non-recursive, images ---" << std::endl;
  2446 + std::cout << "--- non-recursive, images ---" << '\n';
2449 2447 page.forEachImage(false, show);
2450   - std::cout << "--- recursive, form XObjects ---" << std::endl;
  2448 + std::cout << "--- recursive, form XObjects ---" << '\n';
2451 2449 page.forEachFormXObject(true, show);
2452   - std::cout << "--- non-recursive, form XObjects ---" << std::endl;
  2450 + std::cout << "--- non-recursive, form XObjects ---" << '\n';
2453 2451 page.forEachFormXObject(false, show);
2454 2452 auto fx1 = QPDFPageObjectHelper(
2455 2453 page.getObjectHandle().getKey("/Resources").getKey("/XObject").getKey("/Fx1"));
2456   - std::cout << "--- recursive, all, from fx1 ---" << std::endl;
  2454 + std::cout << "--- recursive, all, from fx1 ---" << '\n';
2457 2455 fx1.forEachXObject(true, show);
2458   - std::cout << "--- non-recursive, all, from fx1 ---" << std::endl;
  2456 + std::cout << "--- non-recursive, all, from fx1 ---" << '\n';
2459 2457 fx1.forEachXObject(false, show);
2460   - std::cout << "--- get images, page ---" << std::endl;
  2458 + std::cout << "--- get images, page ---" << '\n';
2461 2459 for (auto& i: page.getImages()) {
2462   - std::cout << i.first << " -> " << i.second.unparse() << std::endl;
  2460 + std::cout << i.first << " -> " << i.second.unparse() << '\n';
2463 2461 }
2464   - std::cout << "--- get images, fx ---" << std::endl;
  2462 + std::cout << "--- get images, fx ---" << '\n';
2465 2463 for (auto& i: fx1.getImages()) {
2466   - std::cout << i.first << " -> " << i.second.unparse() << std::endl;
  2464 + std::cout << i.first << " -> " << i.second.unparse() << '\n';
2467 2465 }
2468   - std::cout << "--- get form XObjects, page ---" << std::endl;
  2466 + std::cout << "--- get form XObjects, page ---" << '\n';
2469 2467 for (auto& i: page.getFormXObjects()) {
2470   - std::cout << i.first << " -> " << i.second.unparse() << std::endl;
  2468 + std::cout << i.first << " -> " << i.second.unparse() << '\n';
2471 2469 }
2472   - std::cout << "--- get form XObjects, fx ---" << std::endl;
  2470 + std::cout << "--- get form XObjects, fx ---" << '\n';
2473 2471 for (auto& i: fx1.getFormXObjects()) {
2474   - std::cout << i.first << " -> " << i.second.unparse() << std::endl;
  2472 + std::cout << i.first << " -> " << i.second.unparse() << '\n';
2475 2473 }
2476 2474 }
2477 2475  
... ... @@ -2482,7 +2480,7 @@ test_72(QPDF&amp; pdf, char const* arg2)
2482 2480 auto page = QPDFPageDocumentHelper(pdf).getAllPages().at(0);
2483 2481 auto fx1 = QPDFPageObjectHelper(
2484 2482 page.getObjectHandle().getKey("/Resources").getKey("/XObject").getKey("/Fx1"));
2485   - std::cout << "--- parseContents ---" << std::endl;
  2483 + std::cout << "--- parseContents ---" << '\n';
2486 2484 ParserCallbacks cb;
2487 2485 fx1.parseContents(&cb);
2488 2486 // Do this once with addContentTokenFilter and once with
... ... @@ -2511,7 +2509,7 @@ test_73(QPDF&amp; pdf, char const* arg2)
2511 2509 QPDF pdf2;
2512 2510 pdf2.getRoot();
2513 2511 } catch (std::exception& e) {
2514   - std::cerr << "getRoot: " << e.what() << std::endl;
  2512 + std::cerr << "getRoot: " << e.what() << '\n';
2515 2513 }
2516 2514  
2517 2515 pdf.closeInputSource();
... ... @@ -2522,7 +2520,7 @@ static void
2522 2520 test_74(QPDF& pdf, char const* arg2)
2523 2521 {
2524 2522 // This test is crafted to work with split-nntree.pdf
2525   - std::cout << "/Split1" << std::endl;
  2523 + std::cout << "/Split1" << '\n';
2526 2524 auto split1 = QPDFNumberTreeObjectHelper(pdf.getTrailer().getKey("/Split1"), pdf);
2527 2525 split1.setSplitThreshold(4);
2528 2526 auto check_split1 = [&split1](int k) {
... ... @@ -2533,10 +2531,10 @@ test_74(QPDF&amp; pdf, char const* arg2)
2533 2531 check_split1(35);
2534 2532 check_split1(125);
2535 2533 for (auto const& i: split1) {
2536   - std::cout << i.first << std::endl;
  2534 + std::cout << i.first << '\n';
2537 2535 }
2538 2536  
2539   - std::cout << "/Split2" << std::endl;
  2537 + std::cout << "/Split2" << '\n';
2540 2538 auto split2 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Split2"), pdf);
2541 2539 split2.setSplitThreshold(4);
2542 2540 auto check_split2 = [](QPDFNameTreeObjectHelper& noh, std::string const& k) {
... ... @@ -2545,16 +2543,16 @@ test_74(QPDF&amp; pdf, char const* arg2)
2545 2543 };
2546 2544 check_split2(split2, "C");
2547 2545 for (auto const& i: split2) {
2548   - std::cout << i.first << std::endl;
  2546 + std::cout << i.first << '\n';
2549 2547 }
2550 2548  
2551   - std::cout << "/Split3" << std::endl;
  2549 + std::cout << "/Split3" << '\n';
2552 2550 auto split3 = QPDFNameTreeObjectHelper(pdf.getTrailer().getKey("/Split3"), pdf);
2553 2551 split3.setSplitThreshold(4);
2554 2552 check_split2(split3, "P");
2555 2553 check_split2(split3, "\xcf\x80");
2556 2554 for (auto& i: split3) {
2557   - std::cout << i.first << " " << i.second.unparse() << std::endl;
  2555 + std::cout << i.first << " " << i.second.unparse() << '\n';
2558 2556 }
2559 2557  
2560 2558 QPDFWriter w(pdf, "a.pdf");
... ... @@ -2655,7 +2653,7 @@ test_76(QPDF&amp; pdf, char const* arg2)
2655 2653 assert(QUtil::hex_encode(efs2.getChecksum()) == "2fce9c8228e360ba9b04a1bd1bf63d6b");
2656 2654  
2657 2655 for (auto const& iter: efdh.getEmbeddedFiles()) {
2658   - std::cout << iter.first << " -> " << iter.second->getFilename() << std::endl;
  2656 + std::cout << iter.first << " -> " << iter.second->getFilename() << '\n';
2659 2657 }
2660 2658 assert(efdh.getEmbeddedFile("att1")->getFilename() == "att1.txt");
2661 2659 assert(!efdh.getEmbeddedFile("potato"));
... ... @@ -2689,17 +2687,17 @@ test_78(QPDF&amp; pdf, char const* arg2)
2689 2687 p->finish();
2690 2688 };
2691 2689 auto f2 = [](Pipeline* p, bool suppress_warnings, bool will_retry) {
2692   - std::cerr << "f2" << std::endl;
  2690 + std::cerr << "f2" << '\n';
2693 2691 if (will_retry) {
2694   - std::cerr << "failing" << std::endl;
  2692 + std::cerr << "failing" << '\n';
2695 2693 return false;
2696 2694 }
2697 2695 if (!suppress_warnings) {
2698   - std::cerr << "warning" << std::endl;
  2696 + std::cerr << "warning" << '\n';
2699 2697 }
2700 2698 p->writeCStr("salad");
2701 2699 p->finish();
2702   - std::cerr << "f2 done" << std::endl;
  2700 + std::cerr << "f2 done" << '\n';
2703 2701 return true;
2704 2702 };
2705 2703  
... ... @@ -2709,11 +2707,11 @@ test_78(QPDF&amp; pdf, char const* arg2)
2709 2707 auto s2 = QPDFObjectHandle::newStream(&pdf);
2710 2708 s2.replaceStreamData(f2, null, null);
2711 2709 pdf.getTrailer().replaceKey("/Streams", QPDFObjectHandle::newArray({s1, s2}));
2712   - std::cout << "piping with warning suppression" << std::endl;
  2710 + std::cout << "piping with warning suppression" << '\n';
2713 2711 Pl_Discard d;
2714 2712 s2.pipeStreamData(&d, nullptr, 0, qpdf_dl_all, true, false);
2715 2713  
2716   - std::cout << "writing" << std::endl;
  2714 + std::cout << "writing" << '\n';
2717 2715 QPDFWriter w(pdf, "a.pdf");
2718 2716 w.setStaticID(true);
2719 2717 w.setQDFMode(true);
... ... @@ -2890,13 +2888,13 @@ test_83(QPDF&amp; pdf, char const* arg2)
2890 2888 size_t size;
2891 2889 QUtil::read_file_into_memory(arg2, file_buf, size);
2892 2890 try {
2893   - std::cout << "calling initializeFromJson" << std::endl;
  2891 + std::cout << "calling initializeFromJson" << '\n';
2894 2892 j.initializeFromJson(std::string(file_buf.get(), size));
2895   - std::cout << "called initializeFromJson" << std::endl;
  2893 + std::cout << "called initializeFromJson" << '\n';
2896 2894 } catch (QPDFUsage& e) {
2897   - std::cerr << "usage: " << e.what() << std::endl;
  2895 + std::cerr << "usage: " << e.what() << '\n';
2898 2896 } catch (std::exception& e) {
2899   - std::cerr << "exception: " << e.what() << std::endl;
  2897 + std::cerr << "exception: " << e.what() << '\n';
2900 2898 }
2901 2899 }
2902 2900  
... ... @@ -2905,7 +2903,7 @@ test_84(QPDF&amp; pdf, char const* arg2)
2905 2903 {
2906 2904 // Test QPDFJob API
2907 2905  
2908   - std::cout << "normal" << std::endl;
  2906 + std::cout << "normal" << '\n';
2909 2907 {
2910 2908 QPDFJob j;
2911 2909 j.config()
... ... @@ -2922,11 +2920,11 @@ test_84(QPDF&amp; pdf, char const* arg2)
2922 2920 assert(j.getEncryptionStatus() == 0);
2923 2921 }
2924 2922  
2925   - std::cout << "custom progress reporter" << std::endl;
  2923 + std::cout << "custom progress reporter" << '\n';
2926 2924 {
2927 2925 QPDFJob j;
2928 2926 j.registerProgressReporter(
2929   - [](int p) { std::cout << "custom write progress: " << p << "%" << std::endl; });
  2927 + [](int p) { std::cout << "custom write progress: " << p << "%" << '\n'; });
2930 2928 j.config()
2931 2929 ->inputFile("minimal.pdf")
2932 2930 ->outputFile("a.pdf")
... ... @@ -2941,29 +2939,29 @@ test_84(QPDF&amp; pdf, char const* arg2)
2941 2939 assert(j.getEncryptionStatus() == 0);
2942 2940 }
2943 2941  
2944   - std::cout << "error caught by check" << std::endl;
  2942 + std::cout << "error caught by check" << '\n';
2945 2943 try {
2946 2944 QPDFJob j;
2947 2945 j.config()->outputFile("a.pdf")->qdf();
2948   - std::cout << "finished config" << std::endl;
  2946 + std::cout << "finished config" << '\n';
2949 2947 j.checkConfiguration();
2950 2948 assert(false);
2951 2949 } catch (QPDFUsage& e) {
2952   - std::cout << "usage: " << e.what() << std::endl;
  2950 + std::cout << "usage: " << e.what() << '\n';
2953 2951 }
2954 2952  
2955   - std::cout << "error caught by run" << std::endl;
  2953 + std::cout << "error caught by run" << '\n';
2956 2954 try {
2957 2955 QPDFJob j;
2958 2956 j.config()->outputFile("a.pdf")->qdf();
2959   - std::cout << "finished config" << std::endl;
  2957 + std::cout << "finished config" << '\n';
2960 2958 j.run();
2961 2959 assert(false);
2962 2960 } catch (QPDFUsage& e) {
2963   - std::cout << "usage: " << e.what() << std::endl;
  2961 + std::cout << "usage: " << e.what() << '\n';
2964 2962 }
2965 2963  
2966   - std::cout << "output capture" << std::endl;
  2964 + std::cout << "output capture" << '\n';
2967 2965 std::ostringstream cout;
2968 2966 std::ostringstream cerr;
2969 2967 {
... ... @@ -2980,11 +2978,11 @@ test_84(QPDF&amp; pdf, char const* arg2)
2980 2978 # pragma GCC diagnostic pop
2981 2979 #endif
2982 2980 j.config()->inputFile("bad2.pdf")->showObject("4,0")->checkConfiguration();
2983   - std::cout << "calling run" << std::endl;
  2981 + std::cout << "calling run" << '\n';
2984 2982 j.run();
2985   - std::cout << "captured stdout" << std::endl;
  2983 + std::cout << "captured stdout" << '\n';
2986 2984 std::cout << cout.str();
2987   - std::cout << "captured stderr" << std::endl;
  2985 + std::cout << "captured stderr" << '\n';
2988 2986 std::cout << cerr.str();
2989 2987 }
2990 2988 }
... ... @@ -3478,7 +3476,7 @@ test_99(QPDF&amp; pdf, char const* arg2)
3478 3476 // Designed for no-space-compressed-object.pdf
3479 3477 QPDFObjectHandle qtest = pdf.getRoot().getKey("/QTest");
3480 3478 for (int i = 0; i < qtest.getArrayNItems(); ++i) {
3481   - std::cout << qtest.getArrayItem(i).unparseResolved() << std::endl;
  3479 + std::cout << qtest.getArrayItem(i).unparseResolved() << '\n';
3482 3480 }
3483 3481 }
3484 3482  
... ... @@ -3669,7 +3667,7 @@ runtest(int n, char const* filename1, char const* arg2)
3669 3667 if (filep) {
3670 3668 fclose(filep);
3671 3669 }
3672   - std::cout << "test " << n << " done" << std::endl;
  3670 + std::cout << "test " << n << " done" << '\n';
3673 3671 }
3674 3672  
3675 3673 int
... ... @@ -3692,7 +3690,7 @@ main(int argc, char* argv[])
3692 3690 char const* arg2 = argv[3];
3693 3691 runtest(n, filename1, arg2);
3694 3692 } catch (std::exception& e) {
3695   - std::cerr << e.what() << std::endl;
  3693 + std::cerr << e.what() << '\n';
3696 3694 exit(2);
3697 3695 }
3698 3696  
... ...
qpdf/test_large_file.cc
... ... @@ -94,7 +94,7 @@ void
94 94 ImageChecker::finish()
95 95 {
96 96 if (!okay) {
97   - std::cout << "errors found checking image data for page " << n << std::endl;
  97 + std::cout << "errors found checking image data for page " << n << '\n';
98 98 }
99 99 }
100 100  
... ... @@ -120,7 +120,7 @@ ImageProvider::provideStreamData(int objid, int generation, Pipeline* pipeline)
120 120 if (buf == nullptr) {
121 121 buf = new unsigned char[width * stripesize];
122 122 }
123   - std::cout << "page " << n << " of " << npages << std::endl;
  123 + std::cout << "page " << n << " of " << npages << '\n';
124 124 for (size_t y = 0; y < nstripes; ++y) {
125 125 unsigned char color = get_pixel_color(n, y);
126 126 memset(buf, color, width * stripesize);
... ... @@ -132,7 +132,7 @@ ImageProvider::provideStreamData(int objid, int generation, Pipeline* pipeline)
132 132 void
133 133 usage()
134 134 {
135   - std::cerr << "Usage: " << whoami << " {read|write} {large|small} outfile" << std::endl;
  135 + std::cerr << "Usage: " << whoami << " {read|write} {large|small} outfile" << '\n';
136 136 exit(2);
137 137 }
138 138  
... ... @@ -247,7 +247,7 @@ check_page_contents(size_t pageno, QPDFObjectHandle page)
247 247 std::string(reinterpret_cast<char*>(buf->getBuffer()), buf->getSize());
248 248 std::string expected_contents = generate_page_contents(pageno);
249 249 if (expected_contents != actual_contents) {
250   - std::cout << "page contents wrong for page " << pageno << std::endl
  250 + std::cout << "page contents wrong for page " << pageno << '\n'
251 251 << "ACTUAL: " << actual_contents << "EXPECTED: " << expected_contents << "----\n";
252 252 }
253 253 }
... ... @@ -269,7 +269,7 @@ check_pdf(char const* filename)
269 269 assert(pages.size() == QIntC::to_size(npages));
270 270 for (size_t i = 0; i < npages; ++i) {
271 271 size_t pageno = i + 1;
272   - std::cout << "page " << pageno << " of " << npages << std::endl;
  272 + std::cout << "page " << pageno << " of " << npages << '\n';
273 273 check_page_contents(pageno, pages.at(i));
274 274 check_image(pageno, pages.at(i));
275 275 }
... ... @@ -316,7 +316,7 @@ main(int argc, char* argv[])
316 316 check_pdf(filename);
317 317 }
318 318 } catch (std::exception& e) {
319   - std::cerr << e.what() << std::endl;
  319 + std::cerr << e.what() << '\n';
320 320 exit(2);
321 321 }
322 322  
... ...
qpdf/test_many_nulls.cc
... ... @@ -10,7 +10,7 @@ main(int argc, char* argv[])
10 10 {
11 11 auto whoami = QUtil::getWhoami(argv[0]);
12 12 if (argc != 2) {
13   - std::cerr << "Usage: " << whoami << " outfile.pdf" << std::endl;
  13 + std::cerr << "Usage: " << whoami << " outfile.pdf" << '\n';
14 14 exit(2);
15 15 }
16 16 char const* outfile = argv[1];
... ...
qpdf/test_parsedoffset.cc
... ... @@ -13,7 +13,7 @@
13 13 void
14 14 usage()
15 15 {
16   - std::cerr << "Usage: test_parsedoffset INPUT.pdf" << std::endl;
  16 + std::cerr << "Usage: test_parsedoffset INPUT.pdf" << '\n';
17 17 }
18 18  
19 19 std::string
... ... @@ -79,7 +79,7 @@ process(std::string fn, std::vector&lt;std::vector&lt;std::pair&lt;qpdf_offset_t, std::st
79 79 for (auto const& oh: qpdf.getAllObjects()) {
80 80 if (!xrefs.contains(oh.getObjGen())) {
81 81 std::cerr << oh.getObjectID() << "/" << oh.getGeneration()
82   - << " is not found in xref table" << std::endl;
  82 + << " is not found in xref table" << '\n';
83 83 std::exit(2);
84 84 }
85 85  
... ... @@ -89,7 +89,7 @@ process(std::string fn, std::vector&lt;std::vector&lt;std::pair&lt;qpdf_offset_t, std::st
89 89 switch (xref.getType()) {
90 90 case 0:
91 91 std::cerr << oh.getObjectID() << "/" << oh.getGeneration() << " xref entry is free"
92   - << std::endl;
  92 + << '\n';
93 93 std::exit(2);
94 94 case 1:
95 95 stream_number = 0;
... ... @@ -98,7 +98,7 @@ process(std::string fn, std::vector&lt;std::vector&lt;std::pair&lt;qpdf_offset_t, std::st
98 98 stream_number = static_cast<size_t>(xref.getObjStreamNumber());
99 99 break;
100 100 default:
101   - std::cerr << "unknown xref entry type" << std::endl;
  101 + std::cerr << "unknown xref entry type" << '\n';
102 102 std::exit(2);
103 103 }
104 104  
... ... @@ -126,19 +126,19 @@ main(int argc, char* argv[])
126 126  
127 127 std::sort(table[i].begin(), table[i].end());
128 128 if (i == 0) {
129   - std::cout << "--- objects not in streams ---" << std::endl;
  129 + std::cout << "--- objects not in streams ---" << '\n';
130 130 } else {
131   - std::cout << "--- objects in stream " << i << " ---" << std::endl;
  131 + std::cout << "--- objects in stream " << i << " ---" << '\n';
132 132 }
133 133  
134 134 for (auto const& iter: table[i]) {
135   - std::cout << iter.second << std::endl;
  135 + std::cout << iter.second << '\n';
136 136 }
137 137 }
138 138  
139   - std::cout << "succeeded" << std::endl;
  139 + std::cout << "succeeded" << '\n';
140 140 } catch (std::exception& e) {
141   - std::cerr << e.what() << std::endl;
  141 + std::cerr << e.what() << '\n';
142 142 std::exit(2);
143 143 }
144 144  
... ...
qpdf/test_pdf_doc_encoding.cc
... ... @@ -9,7 +9,7 @@ static char const* whoami = nullptr;
9 9 void
10 10 usage()
11 11 {
12   - std::cerr << "Usage: " << whoami << " infile" << std::endl;
  12 + std::cerr << "Usage: " << whoami << " infile" << '\n';
13 13 exit(2);
14 14 }
15 15  
... ... @@ -28,7 +28,7 @@ main(int argc, char* argv[])
28 28 char const* infilename = argv[1];
29 29 for (auto const& line: QUtil::read_lines_from_file(infilename)) {
30 30 QPDFObjectHandle str = QPDFObjectHandle::newString(line);
31   - std::cout << str.getUTF8Value() << std::endl;
  31 + std::cout << str.getUTF8Value() << '\n';
32 32 }
33 33 return 0;
34 34 }
... ...
qpdf/test_pdf_unicode.cc
... ... @@ -9,7 +9,7 @@ static char const* whoami = nullptr;
9 9 void
10 10 usage()
11 11 {
12   - std::cerr << "Usage: " << whoami << " infile" << std::endl;
  12 + std::cerr << "Usage: " << whoami << " infile" << '\n';
13 13 exit(2);
14 14 }
15 15  
... ... @@ -28,7 +28,7 @@ main(int argc, char* argv[])
28 28 char const* infilename = argv[1];
29 29 for (auto const& line: QUtil::read_lines_from_file(infilename)) {
30 30 QPDFObjectHandle str = QPDFObjectHandle::newUnicodeString(line);
31   - std::cout << str.getUTF8Value() << " // " << str.unparseBinary() << std::endl;
  31 + std::cout << str.getUTF8Value() << " // " << str.unparseBinary() << '\n';
32 32 }
33 33 return 0;
34 34 }
... ...
qpdf/test_renumber.cc
... ... @@ -14,11 +14,11 @@
14 14 void
15 15 usage()
16 16 {
17   - std::cerr << "Usage: test_renumber [OPTION] INPUT.pdf" << std::endl
18   - << "Option:" << std::endl
19   - << " --object-streams=preserve|disable|generate" << std::endl
20   - << " --linearize" << std::endl
21   - << " --preserve-unreferenced" << std::endl;
  17 + std::cerr << "Usage: test_renumber [OPTION] INPUT.pdf" << '\n'
  18 + << "Option:" << '\n'
  19 + << " --object-streams=preserve|disable|generate" << '\n'
  20 + << " --linearize" << '\n'
  21 + << " --preserve-unreferenced" << '\n';
22 22 }
23 23  
24 24 bool
... ... @@ -33,38 +33,38 @@ compare(QPDFObjectHandle a, QPDFObjectHandle b)
33 33 }
34 34  
35 35 if (a.getTypeCode() != b.getTypeCode()) {
36   - std::cerr << "different type code" << std::endl;
  36 + std::cerr << "different type code" << '\n';
37 37 return false;
38 38 }
39 39  
40 40 switch (a.getTypeCode()) {
41 41 case ::ot_boolean:
42 42 if (a.getBoolValue() != b.getBoolValue()) {
43   - std::cerr << "different boolean" << std::endl;
  43 + std::cerr << "different boolean" << '\n';
44 44 return false;
45 45 }
46 46 break;
47 47 case ::ot_integer:
48 48 if (a.getIntValue() != b.getIntValue()) {
49   - std::cerr << "different integer" << std::endl;
  49 + std::cerr << "different integer" << '\n';
50 50 return false;
51 51 }
52 52 break;
53 53 case ::ot_real:
54 54 if (a.getRealValue() != b.getRealValue()) {
55   - std::cerr << "different real" << std::endl;
  55 + std::cerr << "different real" << '\n';
56 56 return false;
57 57 }
58 58 break;
59 59 case ::ot_string:
60 60 if (a.getStringValue() != b.getStringValue()) {
61   - std::cerr << "different string" << std::endl;
  61 + std::cerr << "different string" << '\n';
62 62 return false;
63 63 }
64 64 break;
65 65 case ::ot_name:
66 66 if (a.getName() != b.getName()) {
67   - std::cerr << "different name" << std::endl;
  67 + std::cerr << "different name" << '\n';
68 68 return false;
69 69 }
70 70 break;
... ... @@ -74,13 +74,13 @@ compare(QPDFObjectHandle a, QPDFObjectHandle b)
74 74 std::vector<QPDFObjectHandle> objs_b = b.getArrayAsVector();
75 75 size_t items = objs_a.size();
76 76 if (items != objs_b.size()) {
77   - std::cerr << "different array size" << std::endl;
  77 + std::cerr << "different array size" << '\n';
78 78 return false;
79 79 }
80 80  
81 81 for (size_t i = 0; i < items; ++i) {
82 82 if (!compare(objs_a[i], objs_b[i])) {
83   - std::cerr << "different array item" << std::endl;
  83 + std::cerr << "different array item" << '\n';
84 84 return false;
85 85 }
86 86 }
... ... @@ -91,13 +91,13 @@ compare(QPDFObjectHandle a, QPDFObjectHandle b)
91 91 std::set<std::string> keys_a = a.getKeys();
92 92 std::set<std::string> keys_b = b.getKeys();
93 93 if (keys_a != keys_b) {
94   - std::cerr << "different dictionary keys" << std::endl;
  94 + std::cerr << "different dictionary keys" << '\n';
95 95 return false;
96 96 }
97 97  
98 98 for (auto const& key: keys_a) {
99 99 if (!compare(a.getKey(key), b.getKey(key))) {
100   - std::cerr << "different dictionary item" << std::endl;
  100 + std::cerr << "different dictionary item" << '\n';
101 101 return false;
102 102 }
103 103 }
... ... @@ -106,10 +106,10 @@ compare(QPDFObjectHandle a, QPDFObjectHandle b)
106 106 case ::ot_null:
107 107 break;
108 108 case ::ot_stream:
109   - std::cout << "stream objects are not compared" << std::endl;
  109 + std::cout << "stream objects are not compared" << '\n';
110 110 break;
111 111 default:
112   - std::cerr << "unknown object type" << std::endl;
  112 + std::cerr << "unknown object type" << '\n';
113 113 std::exit(2);
114 114 }
115 115  
... ... @@ -120,23 +120,22 @@ bool
120 120 compare_xref_table(std::map<QPDFObjGen, QPDFXRefEntry> a, std::map<QPDFObjGen, QPDFXRefEntry> b)
121 121 {
122 122 if (a.size() != b.size()) {
123   - std::cerr << "different size" << std::endl;
  123 + std::cerr << "different size" << '\n';
124 124 return false;
125 125 }
126 126  
127 127 for (auto const& iter: a) {
128   - std::cout << "xref entry for " << iter.first.getObj() << "/" << iter.first.getGen()
129   - << std::endl;
  128 + std::cout << "xref entry for " << iter.first.getObj() << "/" << iter.first.getGen() << '\n';
130 129  
131 130 if (!b.contains(iter.first)) {
132   - std::cerr << "not found" << std::endl;
  131 + std::cerr << "not found" << '\n';
133 132 return false;
134 133 }
135 134  
136 135 QPDFXRefEntry xref_a = iter.second;
137 136 QPDFXRefEntry xref_b = b[iter.first];
138 137 if (xref_a.getType() != xref_b.getType()) {
139   - std::cerr << "different xref entry type" << std::endl;
  138 + std::cerr << "different xref entry type" << '\n';
140 139 return false;
141 140 }
142 141  
... ... @@ -145,19 +144,19 @@ compare_xref_table(std::map&lt;QPDFObjGen, QPDFXRefEntry&gt; a, std::map&lt;QPDFObjGen, Q
145 144 break;
146 145 case 1:
147 146 if (xref_a.getOffset() != xref_a.getOffset()) {
148   - std::cerr << "different offset" << std::endl;
  147 + std::cerr << "different offset" << '\n';
149 148 return false;
150 149 }
151 150 break;
152 151 case 2:
153 152 if (xref_a.getObjStreamNumber() != xref_a.getObjStreamNumber() ||
154 153 xref_a.getObjStreamIndex() != xref_a.getObjStreamIndex()) {
155   - std::cerr << "different stream number or index" << std::endl;
  154 + std::cerr << "different stream number or index" << '\n';
156 155 return false;
157 156 }
158 157 break;
159 158 default:
160   - std::cerr << "unknown xref entry type" << std::endl;
  159 + std::cerr << "unknown xref entry type" << '\n';
161 160 std::exit(2);
162 161 }
163 162 }
... ... @@ -223,36 +222,36 @@ main(int argc, char* argv[])
223 222 "renumbered", reinterpret_cast<char*>(buf->getBuffer()), buf->getSize());
224 223 std::map<QPDFObjGen, QPDFXRefEntry> xrefs_ren = qpdf_ren.getXRefTable();
225 224  
226   - std::cout << "--- compare between input and renumbered objects ---" << std::endl;
  225 + std::cout << "--- compare between input and renumbered objects ---" << '\n';
227 226 for (auto const& iter: objs_in) {
228 227 QPDFObjGen og_in = iter.getObjGen();
229 228 QPDFObjGen og_ren = w.getRenumberedObjGen(og_in);
230 229  
231 230 std::cout << "input " << og_in.getObj() << "/" << og_in.getGen() << " -> renumbered "
232   - << og_ren.getObj() << "/" << og_ren.getGen() << std::endl;
  231 + << og_ren.getObj() << "/" << og_ren.getGen() << '\n';
233 232  
234 233 if (og_ren.getObj() == 0) {
235   - std::cout << "deleted" << std::endl;
  234 + std::cout << "deleted" << '\n';
236 235 continue;
237 236 }
238 237  
239 238 if (!compare(iter, qpdf_ren.getObjectByObjGen(og_ren))) {
240   - std::cerr << "different" << std::endl;
  239 + std::cerr << "different" << '\n';
241 240 std::exit(2);
242 241 }
243 242 }
244   - std::cout << "complete" << std::endl;
  243 + std::cout << "complete" << '\n';
245 244  
246   - std::cout << "--- compare between written and reloaded xref tables ---" << std::endl;
  245 + std::cout << "--- compare between written and reloaded xref tables ---" << '\n';
247 246 if (!compare_xref_table(xrefs_w, xrefs_ren)) {
248   - std::cerr << "different" << std::endl;
  247 + std::cerr << "different" << '\n';
249 248 std::exit(2);
250 249 }
251   - std::cout << "complete" << std::endl;
  250 + std::cout << "complete" << '\n';
252 251  
253   - std::cout << "succeeded" << std::endl;
  252 + std::cout << "succeeded" << '\n';
254 253 } catch (std::exception& e) {
255   - std::cerr << e.what() << std::endl;
  254 + std::cerr << e.what() << '\n';
256 255 std::exit(2);
257 256 }
258 257  
... ...
qpdf/test_shell_glob.cc
... ... @@ -32,11 +32,11 @@ realmain(int argc, char* argv[])
32 32 bool passed = (found_star && (argc == 2));
33 33 #endif
34 34 if (passed) {
35   - std::cout << "PASSED" << std::endl;
  35 + std::cout << "PASSED" << '\n';
36 36 } else {
37   - std::cout << "FAILED" << std::endl;
  37 + std::cout << "FAILED" << '\n';
38 38 for (int i = 1; i < argc; ++i) {
39   - std::cout << argv[i] << std::endl;
  39 + std::cout << argv[i] << '\n';
40 40 }
41 41 }
42 42 return 0;
... ...
qpdf/test_tokenizer.cc
... ... @@ -16,7 +16,7 @@ static char const* whoami = nullptr;
16 16 void
17 17 usage()
18 18 {
19   - std::cerr << "Usage: " << whoami << " [-maxlen len | -no-ignorable] filename" << std::endl;
  19 + std::cerr << "Usage: " << whoami << " [-maxlen len | -no-ignorable] filename" << '\n';
20 20 exit(2);
21 21 }
22 22  
... ... @@ -115,10 +115,10 @@ try_skipping(
115 115 char const* what,
116 116 Finder& f)
117 117 {
118   - std::cout << "skipping to " << what << std::endl;
  118 + std::cout << "skipping to " << what << '\n';
119 119 qpdf_offset_t offset = is->tell();
120 120 if (!is->findFirst(what, offset, 0, f)) {
121   - std::cout << what << " not found" << std::endl;
  121 + std::cout << what << " not found" << '\n';
122 122 is->seek(offset, SEEK_SET);
123 123 }
124 124 }
... ... @@ -133,7 +133,7 @@ dump_tokens(
133 133 bool skip_inline_images)
134 134 {
135 135 Finder f1(is, "endstream");
136   - std::cout << "--- BEGIN " << label << " ---" << std::endl;
  136 + std::cout << "--- BEGIN " << label << " ---" << '\n';
137 137 bool done = false;
138 138 QPDFTokenizer tokenizer;
139 139 tokenizer.allowEOF();
... ... @@ -145,7 +145,7 @@ dump_tokens(
145 145 QPDFTokenizer::Token token =
146 146 tokenizer.readToken(is, "test", true, inline_image_offset ? 0 : max_len);
147 147 if (inline_image_offset && (token.getType() == QPDFTokenizer::tt_bad)) {
148   - std::cout << "EI not found; resuming normal scanning" << std::endl;
  148 + std::cout << "EI not found; resuming normal scanning" << '\n';
149 149 is->seek(inline_image_offset, SEEK_SET);
150 150 inline_image_offset = 0;
151 151 continue;
... ... @@ -163,7 +163,7 @@ dump_tokens(
163 163 if (!token.getErrorMessage().empty()) {
164 164 std::cout << " (" << token.getErrorMessage() << ")";
165 165 }
166   - std::cout << std::endl;
  166 + std::cout << '\n';
167 167 if (skip_streams && (token == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "stream"))) {
168 168 try_skipping(tokenizer, is, max_len, "endstream", f1);
169 169 } else if (
... ... @@ -176,7 +176,7 @@ dump_tokens(
176 176 done = true;
177 177 }
178 178 }
179   - std::cout << "--- END " << label << " ---" << std::endl;
  179 + std::cout << "--- END " << label << " ---" << '\n';
180 180 }
181 181  
182 182 static void
... ...
qpdf/test_unicode_filenames.cc
... ... @@ -13,7 +13,7 @@ static void
13 13 do_copy(FILE* in, FILE* out)
14 14 {
15 15 if ((in == nullptr) || (out == nullptr)) {
16   - std::cerr << "errors opening files" << std::endl;
  16 + std::cerr << "errors opening files" << '\n';
17 17 exit(2);
18 18 }
19 19 char buf[10240];
... ... @@ -22,7 +22,7 @@ do_copy(FILE* in, FILE* out)
22 22 fwrite(buf, 1, len, out);
23 23 }
24 24 if (len != 0) {
25   - std::cerr << "errors reading or writing" << std::endl;
  25 + std::cerr << "errors reading or writing" << '\n';
26 26 exit(2);
27 27 }
28 28 fclose(in);
... ... @@ -76,7 +76,7 @@ main(int argc, char* argv[])
76 76 char const* f2 = "auto-\xc3\xb6\xcf\x80.pdf";
77 77 copy(f1);
78 78 copy(f2);
79   - std::cout << "created Unicode filenames" << std::endl;
  79 + std::cout << "created Unicode filenames" << '\n';
80 80 return 0;
81 81 }
82 82  
... ...
qpdf/test_xref.cc
... ... @@ -8,7 +8,7 @@ int
8 8 main(int argc, char* argv[])
9 9 {
10 10 if (argc != 2) {
11   - std::cerr << "usage: test_xref INPUT.pdf" << std::endl;
  11 + std::cerr << "usage: test_xref INPUT.pdf" << '\n';
12 12 std::exit(2);
13 13 }
14 14  
... ... @@ -20,23 +20,23 @@ main(int argc, char* argv[])
20 20 std::cout << iter.first.getObj() << "/" << iter.first.getGen() << ", ";
21 21 switch (iter.second.getType()) {
22 22 case 0:
23   - std::cout << "free entry" << std::endl;
  23 + std::cout << "free entry" << '\n';
24 24 break;
25 25 case 1:
26 26 std::cout << "uncompressed, offset = " << iter.second.getOffset() << " (0x"
27   - << std::hex << iter.second.getOffset() << std::dec << ")" << std::endl;
  27 + << std::hex << iter.second.getOffset() << std::dec << ")" << '\n';
28 28 break;
29 29 case 2:
30 30 std::cout << "compressed, stream number = " << iter.second.getObjStreamNumber()
31   - << ", stream index = " << iter.second.getObjStreamIndex() << std::endl;
  31 + << ", stream index = " << iter.second.getObjStreamIndex() << '\n';
32 32 break;
33 33 default:
34   - std::cerr << "unknown" << std::endl;
  34 + std::cerr << "unknown" << '\n';
35 35 std::exit(2);
36 36 }
37 37 }
38 38 } catch (std::exception& e) {
39   - std::cerr << e.what() << std::endl;
  39 + std::cerr << e.what() << '\n';
40 40 std::exit(2);
41 41 }
42 42  
... ...
zlib-flate/zlib-flate.cc
... ... @@ -13,11 +13,10 @@ static char const* whoami = nullptr;
13 13 void
14 14 usage()
15 15 {
16   - std::cerr << "Usage: " << whoami << " { -uncompress | -compress[=n] }" << std::endl
17   - << "If n is specified with -compress, it is a zlib compression level from"
18   - << std::endl
19   - << "1 to 9 where lower numbers are faster and less compressed and higher" << std::endl
20   - << "numbers are slower and more compressed" << std::endl;
  16 + std::cerr << "Usage: " << whoami << " { -uncompress | -compress[=n] }" << '\n'
  17 + << "If n is specified with -compress, it is a zlib compression level from" << '\n'
  18 + << "1 to 9 where lower numbers are faster and less compressed and higher" << '\n'
  19 + << "numbers are slower and more compressed" << '\n';
21 20 exit(2);
22 21 }
23 22  
... ... @@ -31,7 +30,7 @@ main(int argc, char* argv[])
31 30 }
32 31  
33 32 if ((argc == 2) && (strcmp(argv[1], "--version") == 0)) {
34   - std::cout << whoami << " from qpdf version " << QPDF::QPDFVersion() << std::endl;
  33 + std::cout << whoami << " from qpdf version " << QPDF::QPDFVersion() << '\n';
35 34 exit(0);
36 35 }
37 36  
... ... @@ -53,7 +52,7 @@ main(int argc, char* argv[])
53 52 // Undocumented option, but that doesn't mean someone doesn't use it...
54 53 // This is primarily here to support the test suite.
55 54 std::cout << (Pl_Flate::zopfli_supported() ? "1" : "0")
56   - << (Pl_Flate::zopfli_enabled() ? "1" : "0") << std::endl;
  55 + << (Pl_Flate::zopfli_enabled() ? "1" : "0") << '\n';
57 56 return 0;
58 57 } else {
59 58 usage();
... ... @@ -68,8 +67,7 @@ main(int argc, char* argv[])
68 67 auto flate = std::make_shared<Pl_Flate>("flate", out.get(), action);
69 68 flate->setWarnCallback([&warn](char const* msg, int code) {
70 69 warn = true;
71   - std::cerr << whoami << ": WARNING: zlib code " << code << ", msg = " << msg
72   - << std::endl;
  70 + std::cerr << whoami << ": WARNING: zlib code " << code << ", msg = " << msg << '\n';
73 71 });
74 72  
75 73 unsigned char buf[10000];
... ... @@ -84,7 +82,7 @@ main(int argc, char* argv[])
84 82 }
85 83 flate->finish();
86 84 } catch (std::exception& e) {
87   - std::cerr << whoami << ": " << e.what() << std::endl;
  85 + std::cerr << whoami << ": " << e.what() << '\n';
88 86 exit(2);
89 87 }
90 88  
... ...