Commit ac4deac1873ca1bb570ffd479ed2cc1010762f89

Authored by Jay Berkenbilt
1 parent 7ccc9bd9

Call QUtil::safe_fopen in place of fopen

fopen was previuosly called wrapped by QUtil::fopen_wrapper, but
QUtil::safe_fopen does this itself, which is less cumbersome.
ChangeLog
1 2013-02-28 Jay Berkenbilt <ejb@ql.org> 1 2013-02-28 Jay Berkenbilt <ejb@ql.org>
2 2
  3 + * New method QUtil::safe_fopen to wrap calls to fopen. This is
  4 + less cumbersome than calling QUtil::fopen_wrapper.
  5 +
3 * Remove all calls to sprintf 6 * Remove all calls to sprintf
4 7
5 * New method QUtil::int_to_string_base to convert to octal or 8 * New method QUtil::int_to_string_base to convert to octal or
include/qpdf/QUtil.hh
@@ -54,6 +54,11 @@ namespace QUtil @@ -54,6 +54,11 @@ namespace QUtil
54 QPDF_DLL 54 QPDF_DLL
55 int os_wrapper(std::string const& description, int status); 55 int os_wrapper(std::string const& description, int status);
56 56
  57 + // If the open fails, throws std::runtime_error. Otherwise, the
  58 + // FILE* is returned.
  59 + QPDF_DLL
  60 + FILE* safe_fopen(char const* filename, char const* mode);
  61 +
57 // The FILE* argument is assumed to be the return of fopen. If 62 // The FILE* argument is assumed to be the return of fopen. If
58 // null, throw std::runtime_error. Otherwise, return the FILE* 63 // null, throw std::runtime_error. Otherwise, return the FILE*
59 // argument. 64 // argument.
libqpdf/FileInputSource.cc
@@ -15,8 +15,7 @@ FileInputSource::setFilename(char const* filename) @@ -15,8 +15,7 @@ FileInputSource::setFilename(char const* filename)
15 destroy(); 15 destroy();
16 this->filename = filename; 16 this->filename = filename;
17 this->close_file = true; 17 this->close_file = true;
18 - this->file = QUtil::fopen_wrapper(std::string("open ") + this->filename,  
19 - fopen(this->filename.c_str(), "rb")); // XXXX 18 + this->file = QUtil::safe_fopen(this->filename.c_str(), "rb");
20 } 19 }
21 20
22 void 21 void
libqpdf/MD5.cc
@@ -328,10 +328,7 @@ void MD5::encodeFile(char const *filename, int up_to_size) @@ -328,10 +328,7 @@ void MD5::encodeFile(char const *filename, int up_to_size)
328 { 328 {
329 unsigned char buffer[1024]; 329 unsigned char buffer[1024];
330 330
331 - FILE *file = QUtil::fopen_wrapper(  
332 - std::string("MD5: open ") + filename,  
333 - fopen(filename, "rb")); // XXXX  
334 - 331 + FILE *file = QUtil::safe_fopen(filename, "rb");
335 size_t len; 332 size_t len;
336 int so_far = 0; 333 int so_far = 0;
337 int to_try = 1024; 334 int to_try = 1024;
libqpdf/QPDFWriter.cc
@@ -104,8 +104,7 @@ QPDFWriter::setOutputFilename(char const* filename) @@ -104,8 +104,7 @@ QPDFWriter::setOutputFilename(char const* filename)
104 else 104 else
105 { 105 {
106 QTC::TC("qpdf", "QPDFWriter write to file"); 106 QTC::TC("qpdf", "QPDFWriter write to file");
107 - f = QUtil::fopen_wrapper(std::string("open ") + filename,  
108 - fopen(filename, "wb+")); // XXXX 107 + f = QUtil::safe_fopen(filename, "wb+");
109 close_file = true; 108 close_file = true;
110 } 109 }
111 setOutputFile(description, f, close_file); 110 setOutputFile(description, f, close_file);
libqpdf/QTC.cc
@@ -37,9 +37,7 @@ void QTC::TC(char const* const scope, char const* const ccase, int n) @@ -37,9 +37,7 @@ void QTC::TC(char const* const scope, char const* const ccase, int n)
37 } 37 }
38 cache.insert(std::make_pair(ccase, n)); 38 cache.insert(std::make_pair(ccase, n));
39 39
40 - FILE* tc =  
41 - QUtil::fopen_wrapper("open test coverage file (" + filename + ")",  
42 - fopen(filename.c_str(), "ab")); // XXXX 40 + FILE* tc = QUtil::safe_fopen(filename.c_str(), "ab");
43 fprintf(tc, "%s %d\n", ccase, n); 41 fprintf(tc, "%s %d\n", ccase, n);
44 fclose(tc); 42 fclose(tc);
45 } 43 }
libqpdf/QUtil.cc
@@ -110,6 +110,13 @@ QUtil::os_wrapper(std::string const&amp; description, int status) @@ -110,6 +110,13 @@ QUtil::os_wrapper(std::string const&amp; description, int status)
110 } 110 }
111 111
112 FILE* 112 FILE*
  113 +QUtil::safe_fopen(char const* filename, char const* mode)
  114 +{
  115 + return fopen_wrapper(std::string("open ") + filename,
  116 + fopen(filename, mode)); // XXXX
  117 +}
  118 +
  119 +FILE*
113 QUtil::fopen_wrapper(std::string const& description, FILE* f) 120 QUtil::fopen_wrapper(std::string const& description, FILE* f)
114 { 121 {
115 if (f == 0) 122 if (f == 0)
libtests/aes.cc
1 #include <qpdf/Pl_AES_PDF.hh> 1 #include <qpdf/Pl_AES_PDF.hh>
2 #include <qpdf/Pl_StdioFile.hh> 2 #include <qpdf/Pl_StdioFile.hh>
  3 +#include <qpdf/QUtil.hh>
3 4
4 #include <stdio.h> 5 #include <stdio.h>
5 #include <string.h> 6 #include <string.h>
@@ -89,20 +90,8 @@ int main(int argc, char* argv[]) @@ -89,20 +90,8 @@ int main(int argc, char* argv[])
89 unsigned int hexkeylen = strlen(hexkey); 90 unsigned int hexkeylen = strlen(hexkey);
90 unsigned int keylen = hexkeylen / 2; 91 unsigned int keylen = hexkeylen / 2;
91 92
92 - FILE* infile = fopen(infilename, "rb"); // XXXX  
93 - if (infile == 0)  
94 - {  
95 - std::cerr << "can't open " << infilename << std::endl;  
96 - exit(2);  
97 - }  
98 -  
99 - FILE* outfile = fopen(outfilename, "wb"); // XXXX  
100 - if (outfile == 0)  
101 - {  
102 - std::cerr << "can't open " << outfilename << std::endl;  
103 - exit(2);  
104 - }  
105 - 93 + FILE* infile = QUtil::safe_fopen(infilename, "rb");
  94 + FILE* outfile = QUtil::safe_fopen(outfilename, "wb");
106 unsigned char* key = new unsigned char[keylen]; 95 unsigned char* key = new unsigned char[keylen];
107 for (unsigned int i = 0; i < strlen(hexkey); i += 2) 96 for (unsigned int i = 0; i < strlen(hexkey); i += 2)
108 { 97 {
libtests/flate.cc
@@ -2,33 +2,22 @@ @@ -2,33 +2,22 @@
2 #include <qpdf/Pl_Flate.hh> 2 #include <qpdf/Pl_Flate.hh>
3 #include <qpdf/Pl_StdioFile.hh> 3 #include <qpdf/Pl_StdioFile.hh>
4 #include <qpdf/Pl_Count.hh> 4 #include <qpdf/Pl_Count.hh>
  5 +#include <qpdf/QUtil.hh>
5 6
6 #include <iostream> 7 #include <iostream>
7 #include <errno.h> 8 #include <errno.h>
8 #include <string.h> 9 #include <string.h>
9 #include <stdlib.h> 10 #include <stdlib.h>
10 11
11 -FILE* safe_fopen(char const* filename, char const* mode)  
12 -{  
13 - FILE* result = fopen(filename, mode); // XXXX  
14 - if (result == 0)  
15 - {  
16 - std::cerr << "fopen " << filename << " failed: " << strerror(errno) // XXXX  
17 - << std::endl;  
18 - exit(2);  
19 - }  
20 - return result;  
21 -}  
22 -  
23 void run(char const* filename) 12 void run(char const* filename)
24 { 13 {
25 std::string n1 = std::string(filename) + ".1"; 14 std::string n1 = std::string(filename) + ".1";
26 std::string n2 = std::string(filename) + ".2"; 15 std::string n2 = std::string(filename) + ".2";
27 std::string n3 = std::string(filename) + ".3"; 16 std::string n3 = std::string(filename) + ".3";
28 17
29 - FILE* o1 = safe_fopen(n1.c_str(), "wb");  
30 - FILE* o2 = safe_fopen(n2.c_str(), "wb");  
31 - FILE* o3 = safe_fopen(n3.c_str(), "wb"); 18 + FILE* o1 = QUtil::safe_fopen(n1.c_str(), "wb");
  19 + FILE* o2 = QUtil::safe_fopen(n2.c_str(), "wb");
  20 + FILE* o3 = QUtil::safe_fopen(n3.c_str(), "wb");
32 Pipeline* out1 = new Pl_StdioFile("o1", o1); 21 Pipeline* out1 = new Pl_StdioFile("o1", o1);
33 Pipeline* out2 = new Pl_StdioFile("o2", o2); 22 Pipeline* out2 = new Pl_StdioFile("o2", o2);
34 Pipeline* out3 = new Pl_StdioFile("o3", o3); 23 Pipeline* out3 = new Pl_StdioFile("o3", o3);
@@ -46,7 +35,7 @@ void run(char const* filename) @@ -46,7 +35,7 @@ void run(char const* filename)
46 Pipeline* inf3 = new Pl_Flate("inf3", count3, Pl_Flate::a_inflate); 35 Pipeline* inf3 = new Pl_Flate("inf3", count3, Pl_Flate::a_inflate);
47 Pipeline* def3 = new Pl_Flate("def3", inf3, Pl_Flate::a_deflate); 36 Pipeline* def3 = new Pl_Flate("def3", inf3, Pl_Flate::a_deflate);
48 37
49 - FILE* in1 = safe_fopen(filename, "rb"); 38 + FILE* in1 = QUtil::safe_fopen(filename, "rb");
50 unsigned char buf[1024]; 39 unsigned char buf[1024];
51 size_t len; 40 size_t len;
52 while ((len = fread(buf, 1, sizeof(buf), in1)) > 0) 41 while ((len = fread(buf, 1, sizeof(buf), in1)) > 0)
@@ -75,7 +64,7 @@ void run(char const* filename) @@ -75,7 +64,7 @@ void run(char const* filename)
75 fclose(o3); 64 fclose(o3);
76 65
77 // Now read the compressed data and write to the output uncompress pipeline 66 // Now read the compressed data and write to the output uncompress pipeline
78 - FILE* in2 = safe_fopen(n1.c_str(), "rb"); 67 + FILE* in2 = QUtil::safe_fopen(n1.c_str(), "rb");
79 while ((len = fread(buf, 1, sizeof(buf), in2)) > 0) 68 while ((len = fread(buf, 1, sizeof(buf), in2)) > 0)
80 { 69 {
81 inf2->write(buf, len); 70 inf2->write(buf, len);
libtests/lzw.cc
@@ -26,10 +26,8 @@ int main(int argc, char* argv[]) @@ -26,10 +26,8 @@ int main(int argc, char* argv[])
26 char* infilename = argv[1]; 26 char* infilename = argv[1];
27 char* outfilename = argv[2]; 27 char* outfilename = argv[2];
28 28
29 - FILE* infile = QUtil::fopen_wrapper("open input file",  
30 - fopen(infilename, "rb")); // XXXX  
31 - FILE* outfile = QUtil::fopen_wrapper("open output file",  
32 - fopen(outfilename, "wb")); // XXXX 29 + FILE* infile = QUtil::safe_fopen(infilename, "rb");
  30 + FILE* outfile = QUtil::safe_fopen(outfilename, "wb");
33 31
34 Pl_StdioFile out("output", outfile); 32 Pl_StdioFile out("output", outfile);
35 Pl_LZWDecoder decode("decode", &out, early_code_change); 33 Pl_LZWDecoder decode("decode", &out, early_code_change);
libtests/md5.cc
1 #include <qpdf/MD5.hh> 1 #include <qpdf/MD5.hh>
2 #include <qpdf/Pl_MD5.hh> 2 #include <qpdf/Pl_MD5.hh>
3 #include <qpdf/Pl_Discard.hh> 3 #include <qpdf/Pl_Discard.hh>
  4 +#include <qpdf/QUtil.hh>
4 #include <iostream> 5 #include <iostream>
5 #include <stdio.h> 6 #include <stdio.h>
6 7
@@ -46,28 +47,25 @@ int main(int, char*[]) @@ -46,28 +47,25 @@ int main(int, char*[])
46 Pl_MD5 p("MD5", &d); 47 Pl_MD5 p("MD5", &d);
47 for (int i = 0; i < 2; ++i) 48 for (int i = 0; i < 2; ++i)
48 { 49 {
49 - FILE* f = fopen("md5.in", "rb"); // XXXX  
50 - if (f)  
51 - {  
52 - // buffer size < size of md5.in  
53 - unsigned char buf[50];  
54 - bool done = false;  
55 - while (! done)  
56 - {  
57 - size_t len = fread(buf, 1, sizeof(buf), f);  
58 - if (len <= 0)  
59 - {  
60 - done = true;  
61 - }  
62 - else  
63 - {  
64 - p.write(buf, len);  
65 - }  
66 - }  
67 - fclose(f);  
68 - p.finish();  
69 - std::cout << p.getHexDigest() << std::endl;  
70 - } 50 + FILE* f = QUtil::safe_fopen("md5.in", "rb");
  51 + // buffer size < size of md5.in
  52 + unsigned char buf[50];
  53 + bool done = false;
  54 + while (! done)
  55 + {
  56 + size_t len = fread(buf, 1, sizeof(buf), f);
  57 + if (len <= 0)
  58 + {
  59 + done = true;
  60 + }
  61 + else
  62 + {
  63 + p.write(buf, len);
  64 + }
  65 + }
  66 + fclose(f);
  67 + p.finish();
  68 + std::cout << p.getHexDigest() << std::endl;
71 } 69 }
72 70
73 return 0; 71 return 0;
libtests/png_filter.cc
1 #include <qpdf/Pl_PNGFilter.hh> 1 #include <qpdf/Pl_PNGFilter.hh>
2 #include <qpdf/Pl_StdioFile.hh> 2 #include <qpdf/Pl_StdioFile.hh>
  3 +#include <qpdf/QUtil.hh>
3 4
4 #include <iostream> 5 #include <iostream>
5 #include <errno.h> 6 #include <errno.h>
@@ -7,23 +8,11 @@ @@ -7,23 +8,11 @@
7 #include <string.h> 8 #include <string.h>
8 #include <stdlib.h> 9 #include <stdlib.h>
9 10
10 -FILE* safe_fopen(char const* filename, char const* mode)  
11 -{  
12 - FILE* result = fopen(filename, mode); // XXXX  
13 - if (result == 0)  
14 - {  
15 - std::cerr << "fopen " << filename << " failed: " << strerror(errno) // XXXX  
16 - << std::endl;  
17 - exit(2);  
18 - }  
19 - return result;  
20 -}  
21 -  
22 void run(char const* filename, bool encode, unsigned int columns) 11 void run(char const* filename, bool encode, unsigned int columns)
23 { 12 {
24 // Decode the file 13 // Decode the file
25 - FILE* in = safe_fopen(filename, "rb");  
26 - FILE* o1 = safe_fopen("out", "wb"); 14 + FILE* in = QUtil::safe_fopen(filename, "rb");
  15 + FILE* o1 = QUtil::safe_fopen("out", "wb");
27 Pipeline* out = new Pl_StdioFile("out", o1); 16 Pipeline* out = new Pl_StdioFile("out", o1);
28 Pipeline* pl = new Pl_PNGFilter( 17 Pipeline* pl = new Pl_PNGFilter(
29 "png", out, 18 "png", out,
libtests/qtest/qutil/qutil.out
@@ -19,7 +19,7 @@ before remove @@ -19,7 +19,7 @@ before remove
19 exception: remove file: No such file or directory 19 exception: remove file: No such file or directory
20 ---- 20 ----
21 before fopen 21 before fopen
22 -exception: fopen file: No such file or directory 22 +exception: open /this/file/does/not/exist: No such file or directory
23 ---- 23 ----
24 IN_TESTSUITE: 1: 1 24 IN_TESTSUITE: 1: 1
25 HAGOOGAMAGOOGLE: 0 25 HAGOOGAMAGOOGLE: 0
libtests/qutil.cc
@@ -62,12 +62,10 @@ void os_wrapper_test() @@ -62,12 +62,10 @@ void os_wrapper_test()
62 62
63 void fopen_wrapper_test() 63 void fopen_wrapper_test()
64 { 64 {
65 - FILE* f = 0;  
66 try 65 try
67 { 66 {
68 std::cout << "before fopen" << std::endl; 67 std::cout << "before fopen" << std::endl;
69 - f = QUtil::fopen_wrapper("fopen file",  
70 - fopen("/this/file/does/not/exist", "r")); // XXXX 68 + FILE* f = QUtil::safe_fopen("/this/file/does/not/exist", "r");
71 std::cout << "after fopen" << std::endl; 69 std::cout << "after fopen" << std::endl;
72 (void) fclose(f); 70 (void) fclose(f);
73 } 71 }
libtests/rc4.cc
1 #include <qpdf/Pl_RC4.hh> 1 #include <qpdf/Pl_RC4.hh>
2 #include <qpdf/Pl_StdioFile.hh> 2 #include <qpdf/Pl_StdioFile.hh>
  3 +#include <qpdf/QUtil.hh>
3 4
4 #include <stdio.h> 5 #include <stdio.h>
5 #include <string.h> 6 #include <string.h>
@@ -22,13 +23,7 @@ int main(int argc, char* argv[]) @@ -22,13 +23,7 @@ int main(int argc, char* argv[])
22 unsigned char* key = new unsigned char[keylen + 1]; 23 unsigned char* key = new unsigned char[keylen + 1];
23 key[keylen] = '\0'; 24 key[keylen] = '\0';
24 25
25 - FILE* infile = fopen(infilename, "rb"); // XXXX  
26 - if (infile == 0)  
27 - {  
28 - std::cerr << "can't open " << infilename << std::endl;  
29 - exit(2);  
30 - }  
31 - 26 + FILE* infile = QUtil::safe_fopen(infilename, "rb");
32 for (unsigned int i = 0; i < strlen(hexkey); i += 2) 27 for (unsigned int i = 0; i < strlen(hexkey); i += 2)
33 { 28 {
34 char t[3]; 29 char t[3];
@@ -40,12 +35,7 @@ int main(int argc, char* argv[]) @@ -40,12 +35,7 @@ int main(int argc, char* argv[])
40 key[i/2] = static_cast<unsigned char>(val); 35 key[i/2] = static_cast<unsigned char>(val);
41 } 36 }
42 37
43 - FILE* outfile = fopen(outfilename, "wb"); // XXXX  
44 - if (outfile == 0)  
45 - {  
46 - std::cerr << "can't open " << outfilename << std::endl;  
47 - exit(2);  
48 - } 38 + FILE* outfile = QUtil::safe_fopen(outfilename, "wb");
49 Pl_StdioFile* out = new Pl_StdioFile("stdout", outfile); 39 Pl_StdioFile* out = new Pl_StdioFile("stdout", outfile);
50 // Use a small buffer size (64) for testing 40 // Use a small buffer size (64) for testing
51 Pl_RC4* rc4 = new Pl_RC4("rc4", out, key, keylen, 64); 41 Pl_RC4* rc4 = new Pl_RC4("rc4", out, key, keylen, 64);
qpdf/qpdf-ctest.c
@@ -8,6 +8,18 @@ @@ -8,6 +8,18 @@
8 static char* whoami = 0; 8 static char* whoami = 0;
9 static qpdf_data qpdf = 0; 9 static qpdf_data qpdf = 0;
10 10
  11 +static FILE* safe_fopen(char const* filename, char const* mode)
  12 +{
  13 + FILE* f = fopen(filename, mode); /* XXXX */
  14 + if (f == NULL)
  15 + {
  16 + fprintf(stderr, "%s: unable to open %s: %s\n",
  17 + whoami, filename, strerror(errno)); /* XXXX */
  18 + exit(2);
  19 + }
  20 + return f;
  21 +}
  22 +
11 static void report_errors() 23 static void report_errors()
12 { 24 {
13 qpdf_error e = 0; 25 qpdf_error e = 0;
@@ -56,13 +68,7 @@ static void read_file_into_memory(char const* filename, @@ -56,13 +68,7 @@ static void read_file_into_memory(char const* filename,
56 size_t bytes_read = 0; 68 size_t bytes_read = 0;
57 size_t len = 0; 69 size_t len = 0;
58 70
59 - f = fopen(filename, "rb"); /* XXXX */  
60 - if (f == NULL)  
61 - {  
62 - fprintf(stderr, "%s: unable to open %s: %s\n",  
63 - whoami, filename, strerror(errno)); /* XXXX */  
64 - exit(2);  
65 - } 71 + f = safe_fopen(filename, "rb");
66 fseek(f, 0, SEEK_END); 72 fseek(f, 0, SEEK_END);
67 *size = (unsigned long) ftell(f); 73 *size = (unsigned long) ftell(f);
68 fseek(f, 0, SEEK_SET); 74 fseek(f, 0, SEEK_SET);
@@ -364,13 +370,7 @@ static void test16(char const* infile, @@ -364,13 +370,7 @@ static void test16(char const* infile,
364 qpdf_set_static_aes_IV(qpdf, QPDF_TRUE); 370 qpdf_set_static_aes_IV(qpdf, QPDF_TRUE);
365 qpdf_set_stream_data_mode(qpdf, qpdf_s_uncompress); 371 qpdf_set_stream_data_mode(qpdf, qpdf_s_uncompress);
366 qpdf_write(qpdf); 372 qpdf_write(qpdf);
367 - f = fopen(outfile, "wb"); /* XXXX */  
368 - if (f == NULL)  
369 - {  
370 - fprintf(stderr, "%s: unable to open %s: %s\n",  
371 - whoami, outfile, strerror(errno)); /* XXXX */  
372 - exit(2);  
373 - } 373 + f = safe_fopen(outfile, "wb");
374 buflen = qpdf_get_buffer_length(qpdf); 374 buflen = qpdf_get_buffer_length(qpdf);
375 buf = qpdf_get_buffer(qpdf); 375 buf = qpdf_get_buffer(qpdf);
376 fwrite(buf, 1, buflen, f); 376 fwrite(buf, 1, buflen, f);
qpdf/test_driver.cc
@@ -165,16 +165,14 @@ void runtest(int n, char const* filename1, char const* arg2) @@ -165,16 +165,14 @@ void runtest(int n, char const* filename1, char const* arg2)
165 else 165 else
166 { 166 {
167 QTC::TC("qpdf", "exercise processFile(FILE*)"); 167 QTC::TC("qpdf", "exercise processFile(FILE*)");
168 - filep = QUtil::fopen_wrapper(std::string("open ") + filename1,  
169 - fopen(filename1, "rb")); // XXXX 168 + filep = QUtil::safe_fopen(filename1, "rb");
170 pdf.processFile(filename1, filep, false); 169 pdf.processFile(filename1, filep, false);
171 } 170 }
172 } 171 }
173 else 172 else
174 { 173 {
175 QTC::TC("qpdf", "exercise processMemoryFile"); 174 QTC::TC("qpdf", "exercise processMemoryFile");
176 - FILE* f = QUtil::fopen_wrapper(std::string("open ") + filename1,  
177 - fopen(filename1, "rb")); // XXXX 175 + FILE* f = QUtil::safe_fopen(filename1, "rb");
178 fseek(f, 0, SEEK_END); 176 fseek(f, 0, SEEK_END);
179 size_t size = QUtil::tell(f); 177 size_t size = QUtil::tell(f);
180 fseek(f, 0, SEEK_SET); 178 fseek(f, 0, SEEK_SET);
@@ -718,8 +716,7 @@ void runtest(int n, char const* filename1, char const* arg2) @@ -718,8 +716,7 @@ void runtest(int n, char const* filename1, char const* arg2)
718 w.write(); 716 w.write();
719 Buffer* b = w.getBuffer(); 717 Buffer* b = w.getBuffer();
720 std::string const filename = (i == 0 ? "a.pdf" : "b.pdf"); 718 std::string const filename = (i == 0 ? "a.pdf" : "b.pdf");
721 - FILE* f = QUtil::fopen_wrapper("open " + filename,  
722 - fopen(filename.c_str(), "wb")); // XXXX 719 + FILE* f = QUtil::safe_fopen(filename.c_str(), "wb");
723 fwrite(b->getBuffer(), b->getSize(), 1, f); 720 fwrite(b->getBuffer(), b->getSize(), 1, f);
724 fclose(f); 721 fclose(f);
725 delete b; 722 delete b;
@@ -802,8 +799,7 @@ void runtest(int n, char const* filename1, char const* arg2) @@ -802,8 +799,7 @@ void runtest(int n, char const* filename1, char const* arg2)
802 checkPageContents(pages[12], "New page 12"); 799 checkPageContents(pages[12], "New page 12");
803 800
804 // Exercise writing to FILE* 801 // Exercise writing to FILE*
805 - FILE* out = QUtil::fopen_wrapper(std::string("open a.pdf"),  
806 - fopen("a.pdf", "wb")); // XXXX 802 + FILE* out = QUtil::safe_fopen("a.pdf", "wb");
807 QPDFWriter w(pdf, "FILE* a.pdf", out, true); 803 QPDFWriter w(pdf, "FILE* a.pdf", out, true);
808 w.setStaticID(true); 804 w.setStaticID(true);
809 w.setStreamDataMode(qpdf_s_preserve); 805 w.setStreamDataMode(qpdf_s_preserve);
@@ -1183,8 +1179,7 @@ void runtest(int n, char const* filename1, char const* arg2) @@ -1183,8 +1179,7 @@ void runtest(int n, char const* filename1, char const* arg2)
1183 w.setOutputPipeline(&p); 1179 w.setOutputPipeline(&p);
1184 w.write(); 1180 w.write();
1185 PointerHolder<Buffer> b = p.getBuffer(); 1181 PointerHolder<Buffer> b = p.getBuffer();
1186 - FILE* f = QUtil::fopen_wrapper("open a.pdf",  
1187 - fopen("a.pdf", "wb")); // XXXX 1182 + FILE* f = QUtil::safe_fopen("a.pdf", "wb");
1188 fwrite(b->getBuffer(), b->getSize(), 1, f); 1183 fwrite(b->getBuffer(), b->getSize(), 1, f);
1189 fclose(f); 1184 fclose(f);
1190 } 1185 }