Commit 8b073eed280abcd926a37100ea740efb1cdc85c4
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 | } |