From 478c05fcab6cb4137b9cbaf55fdcdb6ff74107c0 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Fri, 29 Nov 2013 22:08:25 -0500 Subject: [PATCH] Allow -DNO_GET_ENVIRONMENT to avoid GetEnvironmentVariable --- ChangeLog | 7 +++++++ examples/pdf-double-page-size.cc | 11 ++++++++++- examples/pdf-invert-images.cc | 11 ++++++++++- examples/qtest/double-page-size.test | 3 ++- examples/qtest/invert-images.test | 3 ++- libqpdf/QUtil.cc | 5 +++++ 6 files changed, 36 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 888f359..3503744 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2013-11-29 Jay Berkenbilt + * 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 8a1867a..2236265 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 f4a4e4a..867c89c 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 0c4a08b..780a8f0 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 0dc15a2..0f5a2f1 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 cf45506..01e0b6e 100644 --- a/libqpdf/QUtil.cc +++ b/libqpdf/QUtil.cc @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -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) -- libgit2 0.21.4