summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-11-30 04:08:25 +0100
committerJay Berkenbilt <ejb@ql.org>2013-11-30 21:58:32 +0100
commit478c05fcab6cb4137b9cbaf55fdcdb6ff74107c0 (patch)
treeb3861bf4962f0509a7ccf2ec58f794d7a54b23f2
parent88c29873e56e69c83aa0d0798188cd792368059b (diff)
downloadqpdf-478c05fcab6cb4137b9cbaf55fdcdb6ff74107c0.tar.zst
Allow -DNO_GET_ENVIRONMENT to avoid GetEnvironmentVariable
If NO_GET_ENVIRONMENT is #defined at compile time on Windows, do not call GetEnvironmentVariable. QUtil::get_env will always return false. This option is not available through configure. This was added to support a specific user's requirements to avoid calling GetEnvironmentVariable from the Windows API. Nothing in qpdf outside the test coverage system in qtest relies on QUtil::get_env.
-rw-r--r--ChangeLog7
-rw-r--r--examples/pdf-double-page-size.cc11
-rw-r--r--examples/pdf-invert-images.cc11
-rw-r--r--examples/qtest/double-page-size.test3
-rw-r--r--examples/qtest/invert-images.test3
-rw-r--r--libqpdf/QUtil.cc5
6 files changed, 36 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 888f359f..35037447 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2013-11-29 Jay Berkenbilt <ejb@ql.org>
+ * If NO_GET_ENVIRONMENT is #defined, for Windows only,
+ QUtil::get_env will always return false. This was added to
+ support a user who needs to avoid calling GetEnvironmentVariable
+ from the Windows API. QUtil::get_env is not used for any
+ functionality in qpdf and exists only to support the test suite
+ including test coverage support with QTC (part of qtest).
+
* Add /FS to msvc builds to allow parallel builds to work with
Visual C++ 2013.
diff --git a/examples/pdf-double-page-size.cc b/examples/pdf-double-page-size.cc
index 8a1867aa..2236265b 100644
--- a/examples/pdf-double-page-size.cc
+++ b/examples/pdf-double-page-size.cc
@@ -51,6 +51,15 @@ int main(int argc, char* argv[])
whoami += 3;
}
+ // For test suite
+ bool static_id = false;
+ if ((argc > 1) && (strcmp(argv[1], " --static-id") == 0))
+ {
+ static_id = true;
+ --argc;
+ ++argv;
+ }
+
if (! ((argc == 3) || (argc == 4)))
{
usage();
@@ -88,7 +97,7 @@ int main(int argc, char* argv[])
// Write out a new file
QPDFWriter w(qpdf, outfilename);
- if (QUtil::get_env("IN_TESTSUITE"))
+ if (static_id)
{
// For the test suite, uncompress streams and use static
// IDs.
diff --git a/examples/pdf-invert-images.cc b/examples/pdf-invert-images.cc
index f4a4e4ab..867c89c7 100644
--- a/examples/pdf-invert-images.cc
+++ b/examples/pdf-invert-images.cc
@@ -70,6 +70,15 @@ int main(int argc, char* argv[])
whoami += 3;
}
+ // For test suite
+ bool static_id = false;
+ if ((argc > 1) && (strcmp(argv[1], " --static-id") == 0))
+ {
+ static_id = true;
+ --argc;
+ ++argv;
+ }
+
if (! ((argc == 3) || (argc == 4)))
{
usage();
@@ -149,7 +158,7 @@ int main(int argc, char* argv[])
// Write out a new file
QPDFWriter w(qpdf, outfilename);
- if (QUtil::get_env("IN_TESTSUITE"))
+ if (static_id)
{
// For the test suite, uncompress streams and use static
// IDs.
diff --git a/examples/qtest/double-page-size.test b/examples/qtest/double-page-size.test
index 0c4a08bd..780a8f0d 100644
--- a/examples/qtest/double-page-size.test
+++ b/examples/qtest/double-page-size.test
@@ -12,7 +12,8 @@ my $td = new TestDriver('double-page-size');
cleanup();
$td->runtest("double page size",
- {$td->COMMAND => "pdf-double-page-size in.pdf a.pdf"},
+ {$td->COMMAND => ['pdf-double-page-size', ' --static-id',
+ 'in.pdf', 'a.pdf']},
{$td->STRING =>
"pdf-double-page-size: new file written to a.pdf\n",
$td->EXIT_STATUS => 0},
diff --git a/examples/qtest/invert-images.test b/examples/qtest/invert-images.test
index 0dc15a28..0f5a2f1e 100644
--- a/examples/qtest/invert-images.test
+++ b/examples/qtest/invert-images.test
@@ -12,7 +12,8 @@ my $td = new TestDriver('invert-images');
cleanup();
$td->runtest("double page size",
- {$td->COMMAND => "pdf-invert-images in.pdf a.pdf"},
+ {$td->COMMAND => ['pdf-invert-images', ' --static-id',
+ 'in.pdf', 'a.pdf']},
{$td->STRING =>
"pdf-invert-images: new file written to a.pdf\n",
$td->EXIT_STATUS => 0},
diff --git a/libqpdf/QUtil.cc b/libqpdf/QUtil.cc
index cf455061..01e0b6e7 100644
--- a/libqpdf/QUtil.cc
+++ b/libqpdf/QUtil.cc
@@ -7,6 +7,7 @@
#include <cmath>
#include <iomanip>
#include <sstream>
+#include <stdexcept>
#include <stdio.h>
#include <errno.h>
#include <ctype.h>
@@ -262,6 +263,9 @@ QUtil::get_env(std::string const& var, std::string* value)
{
// This was basically ripped out of wxWindows.
#ifdef _WIN32
+# ifdef NO_GET_ENVIRONMENT
+ return false;
+# else
// first get the size of the buffer
DWORD len = ::GetEnvironmentVariable(var.c_str(), NULL, 0);
if (len == 0)
@@ -279,6 +283,7 @@ QUtil::get_env(std::string const& var, std::string* value)
}
return true;
+# endif
#else
char* p = getenv(var.c_str());
if (p == 0)