Commit 8b073eed280abcd926a37100ea740efb1cdc85c4

Authored by Jay Berkenbilt
1 parent 398354b6

checkpoint


git-svn-id: svn+q:///qpdf/trunk@831 71b93d88-0707-0410-a8cf-f5a4172ac649
Showing 1 changed file with 19 additions and 35 deletions
libqpdf/qpdf-c.cc
@@ -30,14 +30,6 @@ struct _qpdf_data @@ -30,14 +30,6 @@ struct _qpdf_data
30 // Parameters for functions we call 30 // Parameters for functions we call
31 char const* filename; 31 char const* filename;
32 char const* password; 32 char const* password;
33 -  
34 - // must set filename and password  
35 - void call_read();  
36 -  
37 - // must set filename  
38 - void call_init_write();  
39 -  
40 - void call_write();  
41 }; 33 };
42 34
43 _qpdf_data::_qpdf_data() : 35 _qpdf_data::_qpdf_data() :
@@ -52,43 +44,29 @@ _qpdf_data::~_qpdf_data() @@ -52,43 +44,29 @@ _qpdf_data::~_qpdf_data()
52 delete qpdf; 44 delete qpdf;
53 } 45 }
54 46
55 -void  
56 -_qpdf_data::call_read() 47 +// must set qpdf->filename and qpdf->password
  48 +static void call_read(qpdf_data qpdf)
57 { 49 {
58 - qpdf->processFile(filename, password); 50 + qpdf->qpdf->processFile(qpdf->filename, qpdf->password);
59 } 51 }
60 52
61 -void  
62 -_qpdf_data::call_init_write() 53 +// must set qpdf->filename
  54 +static void call_init_write(qpdf_data qpdf)
63 { 55 {
64 - if (qpdf_writer)  
65 - {  
66 - QTC::TC("qpdf", "qpdf-c called qpdf_init_write multiple times");  
67 - delete qpdf_writer;  
68 - qpdf_writer = 0;  
69 - }  
70 - try  
71 - {  
72 - qpdf_writer = new QPDFWriter(*qpdf, filename);  
73 - }  
74 - catch (...)  
75 - {  
76 - throw;  
77 - } 56 + qpdf->qpdf_writer = new QPDFWriter(*(qpdf->qpdf), qpdf->filename);
78 } 57 }
79 58
80 -void  
81 -_qpdf_data::call_write() 59 +static void call_write(qpdf_data qpdf)
82 { 60 {
83 - qpdf_writer->write(); 61 + qpdf->qpdf_writer->write();
84 } 62 }
85 63
86 -static QPDF_ERROR_CODE trap_errors(qpdf_data qpdf, void (_qpdf_data::*fn)()) 64 +static QPDF_ERROR_CODE trap_errors(qpdf_data qpdf, void (*fn)(qpdf_data))
87 { 65 {
88 QPDF_ERROR_CODE status = QPDF_SUCCESS; 66 QPDF_ERROR_CODE status = QPDF_SUCCESS;
89 try 67 try
90 { 68 {
91 - (qpdf->*fn)(); 69 + fn(qpdf);
92 } 70 }
93 catch (QPDFExc& e) 71 catch (QPDFExc& e)
94 { 72 {
@@ -227,7 +205,7 @@ QPDF_ERROR_CODE qpdf_read(qpdf_data qpdf, char const* filename, @@ -227,7 +205,7 @@ QPDF_ERROR_CODE qpdf_read(qpdf_data qpdf, char const* filename,
227 QPDF_ERROR_CODE status = QPDF_SUCCESS; 205 QPDF_ERROR_CODE status = QPDF_SUCCESS;
228 qpdf->filename = filename; 206 qpdf->filename = filename;
229 qpdf->password = password; 207 qpdf->password = password;
230 - status = trap_errors(qpdf, &_qpdf_data::call_read); 208 + status = trap_errors(qpdf, &call_read);
231 QTC::TC("qpdf", "qpdf-c called qpdf_read", status); 209 QTC::TC("qpdf", "qpdf-c called qpdf_read", status);
232 return status; 210 return status;
233 } 211 }
@@ -315,8 +293,14 @@ QPDF_BOOL qpdf_allow_modify_all(qpdf_data qpdf) @@ -315,8 +293,14 @@ QPDF_BOOL qpdf_allow_modify_all(qpdf_data qpdf)
315 QPDF_ERROR_CODE qpdf_init_write(qpdf_data qpdf, char const* filename) 293 QPDF_ERROR_CODE qpdf_init_write(qpdf_data qpdf, char const* filename)
316 { 294 {
317 QPDF_ERROR_CODE status = QPDF_SUCCESS; 295 QPDF_ERROR_CODE status = QPDF_SUCCESS;
  296 + if (qpdf->qpdf_writer)
  297 + {
  298 + QTC::TC("qpdf", "qpdf-c called qpdf_init_write multiple times");
  299 + delete qpdf->qpdf_writer;
  300 + qpdf->qpdf_writer = 0;
  301 + }
318 qpdf->filename = filename; 302 qpdf->filename = filename;
319 - status = trap_errors(qpdf, &_qpdf_data::call_init_write); 303 + status = trap_errors(qpdf, &call_init_write);
320 QTC::TC("qpdf", "qpdf-c called qpdf_init_write", status); 304 QTC::TC("qpdf", "qpdf-c called qpdf_init_write", status);
321 return status; 305 return status;
322 } 306 }
@@ -426,7 +410,7 @@ void qpdf_force_pdf_version(qpdf_data qpdf, char const* version) @@ -426,7 +410,7 @@ void qpdf_force_pdf_version(qpdf_data qpdf, char const* version)
426 QPDF_ERROR_CODE qpdf_write(qpdf_data qpdf) 410 QPDF_ERROR_CODE qpdf_write(qpdf_data qpdf)
427 { 411 {
428 QPDF_ERROR_CODE status = QPDF_SUCCESS; 412 QPDF_ERROR_CODE status = QPDF_SUCCESS;
429 - status = trap_errors(qpdf, &_qpdf_data::call_write); 413 + status = trap_errors(qpdf, &call_write);
430 QTC::TC("qpdf", "qpdf-c called qpdf_write", status); 414 QTC::TC("qpdf", "qpdf-c called qpdf_write", status);
431 return status; 415 return status;
432 } 416 }