Commit a80d9d176d069a5b70427fa0154b7c333550a047

Authored by Jay Berkenbilt
1 parent 9cc43c6e

add C interface for getting software version

git-svn-id: svn+q:///qpdf/trunk@903 71b93d88-0707-0410-a8cf-f5a4172ac649
ChangeLog
@@ -2,7 +2,11 @@ @@ -2,7 +2,11 @@
2 2
3 * 2.1.rc1: release 3 * 2.1.rc1: release
4 4
5 -2009-10-19 Jay Berkenbilt <jberkenb@argonst.com> 5 +2009-10-24 Jay Berkenbilt <ejb@ql.org>
  6 +
  7 + * Provide interfaces for getting qpdf's own version number
  8 +
  9 +2009-10-19 Jay Berkenbilt <ejb@ql.org>
6 10
7 * include/qpdf/QPDF.hh (QPDF): getWarnings now returns a list of 11 * include/qpdf/QPDF.hh (QPDF): getWarnings now returns a list of
8 QPDFExc rather than a list of strings. This way, warnings may be 12 QPDFExc rather than a list of strings. This way, warnings may be
include/qpdf/qpdf-c.h
@@ -92,6 +92,10 @@ extern &quot;C&quot; { @@ -92,6 +92,10 @@ extern &quot;C&quot; {
92 # define QPDF_TRUE 1 92 # define QPDF_TRUE 1
93 # define QPDF_FALSE 0 93 # define QPDF_FALSE 0
94 94
  95 + /* Returns the version of the qpdf software */
  96 + QPDF_DLL
  97 + char const* qpdf_get_qpdf_version();
  98 +
95 /* Returns dynamically allocated qpdf_data pointer; must be freed 99 /* Returns dynamically allocated qpdf_data pointer; must be freed
96 * by calling qpdf_cleanup. 100 * by calling qpdf_cleanup.
97 */ 101 */
libqpdf/qpdf-c.cc
@@ -91,6 +91,12 @@ static QPDF_ERROR_CODE trap_errors(qpdf_data qpdf, void (*fn)(qpdf_data)) @@ -91,6 +91,12 @@ static QPDF_ERROR_CODE trap_errors(qpdf_data qpdf, void (*fn)(qpdf_data))
91 return status; 91 return status;
92 } 92 }
93 93
  94 +char const* qpdf_get_qpdf_version()
  95 +{
  96 + QTC::TC("qpdf", "qpdf-c called qpdf_get_qpdf_version");
  97 + return QPDF::QPDFVersion().c_str();
  98 +}
  99 +
94 qpdf_data qpdf_init() 100 qpdf_data qpdf_init()
95 { 101 {
96 QTC::TC("qpdf", "qpdf-c called qpdf_init"); 102 QTC::TC("qpdf", "qpdf-c called qpdf_init");
qpdf/qpdf-ctest.c
@@ -292,6 +292,12 @@ int main(int argc, char* argv[]) @@ -292,6 +292,12 @@ int main(int argc, char* argv[])
292 { 292 {
293 whoami = argv[0]; 293 whoami = argv[0];
294 } 294 }
  295 + if ((argc == 2) && (strcmp(argv[1], "--version") == 0))
  296 + {
  297 + printf("qpdf-ctest version %s\n", qpdf_get_qpdf_version());
  298 + return 0;
  299 + }
  300 +
295 if (argc < 5) 301 if (argc < 5)
296 { 302 {
297 fprintf(stderr, "usage: %s n infile password outfile\n", whoami); 303 fprintf(stderr, "usage: %s n infile password outfile\n", whoami);
qpdf/qpdf.testcov
@@ -173,3 +173,4 @@ QPDF_encryption stream crypt filter 0 @@ -173,3 +173,4 @@ QPDF_encryption stream crypt filter 0
173 QPDF ERR object stream with wrong type 0 173 QPDF ERR object stream with wrong type 0
174 QPDF object gone after xref reconstruction 0 174 QPDF object gone after xref reconstruction 0
175 qpdf-c called qpdf_has_error 0 175 qpdf-c called qpdf_has_error 0
  176 +qpdf-c called qpdf_get_qpdf_version 0
qpdf/qtest/qpdf.test
@@ -81,12 +81,17 @@ flush_tiff_cache(); @@ -81,12 +81,17 @@ flush_tiff_cache();
81 show_ntests(); 81 show_ntests();
82 # ---------- 82 # ----------
83 $td->notify("--- Miscellaneous Tests ---"); 83 $td->notify("--- Miscellaneous Tests ---");
84 -$n_tests += 15; 84 +$n_tests += 16;
85 85
86 $td->runtest("qpdf version", 86 $td->runtest("qpdf version",
87 {$td->COMMAND => "qpdf --version"}, 87 {$td->COMMAND => "qpdf --version"},
88 {$td->REGEXP => "qpdf version \\S+\n.*", $td->EXIT_STATUS => 0}, 88 {$td->REGEXP => "qpdf version \\S+\n.*", $td->EXIT_STATUS => 0},
89 $td->NORMALIZE_NEWLINES); 89 $td->NORMALIZE_NEWLINES);
  90 +$td->runtest("C API: qpdf version",
  91 + {$td->COMMAND => "qpdf-ctest --version"},
  92 + {$td->REGEXP => "qpdf-ctest version \\S+\n",
  93 + $td->EXIT_STATUS => 0},
  94 + $td->NORMALIZE_NEWLINES);
90 95
91 foreach (my $i = 1; $i <= 3; ++$i) 96 foreach (my $i = 1; $i <= 3; ++$i)
92 { 97 {