aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--README.maintainer2
-rw-r--r--configure.ac2
-rw-r--r--manual/qpdf-manual.xml19
-rw-r--r--qpdf/qpdf.cc2
-rwxr-xr-xqtest/bin/qtest-driver2
-rw-r--r--qtest/module/TestDriver.pm100
7 files changed, 106 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index bcde7f52..deb9ee43 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-06-30 Jay Berkenbilt <ejb@ql.org>
+
+ * 2.0.2: release
+
+ * updated embedded qtest to version 1.2 (includes previous
+ changes)
+
2008-06-07 Jay Berkenbilt <ejb@ql.org>
* qpdf/qtest/qpdf/diff-encrypted: change == to = so that the test
diff --git a/README.maintainer b/README.maintainer
index 2f79e9d2..9e51a3b8 100644
--- a/README.maintainer
+++ b/README.maintainer
@@ -13,7 +13,7 @@ Release Reminders
qpdf/qpdf.cc
manual/qpdf-manual.xml
- make_dist does this automatically.
+ make_dist verifies this consistency.
* Each year, update copyright notices. Just search for Copyright.
Last updated: 2008.
diff --git a/configure.ac b/configure.ac
index efdcfd1b..0122f107 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl This config.in requires autoconf 2.5 or greater.
AC_PREREQ(2.60)
-AC_INIT(qpdf,2.0.1)
+AC_INIT(qpdf,2.0.2)
dnl No AC_CONFIG_HEADERS. If this changes, update README.maintainer.
AC_CONFIG_FILES([autoconf.mk])
diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml
index d9b3b2ee..dd126f14 100644
--- a/manual/qpdf-manual.xml
+++ b/manual/qpdf-manual.xml
@@ -5,8 +5,8 @@
<!ENTITY mdash "&#x2014;">
<!ENTITY ndash "&#x2013;">
<!ENTITY nbsp "&#xA0;">
-<!ENTITY swversion "2.0.1">
-<!ENTITY lastreleased "May 6, 2008">
+<!ENTITY swversion "2.0.2">
+<!ENTITY lastreleased "June 30, 2008">
]>
<book>
<bookinfo>
@@ -1965,6 +1965,21 @@ print "\n";
<title>Release Notes</title>
<variablelist>
<varlistentry>
+ <term>2.0.2: June 30, 2008</term>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Update test suite to work properly with a
+ non-<comamnd>bash</comamnd> <filename>/bin/sh</filename> and
+ with Perl 5.10. No changes were made to the actual qpdf
+ source code itself for this release.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term>2.0.1: May 6, 2008</term>
<listitem>
<itemizedlist>
diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc
index bfd27d55..b95b9ca8 100644
--- a/qpdf/qpdf.cc
+++ b/qpdf/qpdf.cc
@@ -447,7 +447,7 @@ int main(int argc, char* argv[])
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
std::cout
- << whoami << " version 2.0.1" << std::endl
+ << whoami << " version 2.0.2" << std::endl
<< "Copyright (c) 2005-2008 Jay Berkenbilt"
<< std::endl
<< "This software may be distributed under the terms of version 2 of the"
diff --git a/qtest/bin/qtest-driver b/qtest/bin/qtest-driver
index 1af99291..723a3e3f 100755
--- a/qtest/bin/qtest-driver
+++ b/qtest/bin/qtest-driver
@@ -33,7 +33,7 @@ require TestDriver;
if ((@ARGV == 1) && ($ARGV[0] eq '--version'))
{
- print "$whoami version 1.1\n";
+ print "$whoami version 1.2\n";
exit 0;
}
if ((@ARGV == 1) && ($ARGV[0] eq '--print-path'))
diff --git a/qtest/module/TestDriver.pm b/qtest/module/TestDriver.pm
index 6e1fa313..ea421702 100644
--- a/qtest/module/TestDriver.pm
+++ b/qtest/module/TestDriver.pm
@@ -139,7 +139,10 @@ sub get_tty_features
no strict;
local $^W = 0;
local *X;
- require 'sys/ioctl.ph';
+ {
+ local $SIG{'__WARN__'} = sub {};
+ require 'sys/ioctl.ph';
+ }
if ((defined &TIOCGWINSZ) && open(X, "+</dev/tty"))
{
my $winsize = "";
@@ -671,6 +674,8 @@ sub runtest
my $pid = undef;
my $pid_killer = new TestDriver::PidKiller(\$pid);
my $in = new IO::Handle;
+ my $use_tempfile = ($^O eq 'MSWin32');
+ my $tempout_status = undef;
if (defined $in_string)
{
&QTC::TC("testdriver", "TestDriver input string");
@@ -687,11 +692,30 @@ sub runtest
}
elsif (defined $in_command)
{
- $pid = open($in, "-|");
- croak +__PACKAGE__, "->runtest: fork failed: $!\n" unless defined $pid;
+ my $tempfilename = "$tempdir/tempout";
+ my $tempfile = undef;
+ if ($use_tempfile)
+ {
+ $tempfile = new IO::File(">$tempfilename") or
+ die +(+__PACKAGE__,
+ "->runtest: unable to create $tempfilename: $!\n");
+ $pid = fork;
+ croak +__PACKAGE__, "->runtest: fork failed: $!\n"
+ unless defined $pid;
+ }
+ else
+ {
+ $pid = open($in, "-|");
+ croak +__PACKAGE__, "->runtest: fork failed: $!\n"
+ unless defined $pid;
+ }
if ($pid == 0)
{
# child
+ if (defined $tempfile)
+ {
+ open(STDOUT, ">&", $tempfile);
+ }
open(STDERR, ">&STDOUT");
open(STDIN, '<', \ "");
if (ref($in_command) eq 'ARRAY')
@@ -711,6 +735,19 @@ sub runtest
$in_command, "\n");
}
}
+ else
+ {
+ if (defined $tempfile)
+ {
+ waitpid($pid, 0);
+ $tempout_status = $?;
+ $pid = undef;
+ open($in, "<$tempfilename") or
+ croak +(+__PACKAGE__,
+ "->runtest: unable to read from" .
+ " input file $tempfilename: $!\n");
+ }
+ }
}
else
{
@@ -768,22 +805,25 @@ sub runtest
last if defined $exit_status;
}
$in->close();
+ if (defined $tempout_status)
+ {
+ $exit_status = $tempout_status;
+ }
if (defined $in_command)
{
if (! defined $exit_status)
{
$exit_status = $?;
}
- if (($exit_status > 0) && ($exit_status < 256))
+ if (WIFSIGNALED($exit_status))
{
&QTC::TC("testdriver", "TestDriver exit status signal");
- $exit_status &= 127; # clear core dump flag
- $exit_status = "SIG:$exit_status";
+ $exit_status = "SIG:" . WTERMSIG($exit_status);
}
- else
+ elsif (WIFEXITED($exit_status))
{
&QTC::TC("testdriver", "TestDriver exit status number");
- $exit_status >>= 8;
+ $exit_status = WEXITSTATUS($exit_status);
}
}
$? = 0;
@@ -1533,28 +1573,44 @@ sub rmrf
sub safe_pipe
{
my ($cmd, $outfile) = @_;
- my $pid = open(C, "-|");
my $result = 0;
- if ($pid)
+ if ($^O eq 'MSWin32')
{
- # parent
- my $out = new IO::File(">$outfile") or
- die +__PACKAGE__, ": can't open $outfile: $!\n";
- binmode C;
- while (<C>)
+ my @cmd = @$cmd;
+ my $cmd_str = shift(@cmd);
+ while (@cmd)
{
- $out->print($_);
+ my $arg = shift(@cmd);
+ $cmd_str .= " \"$arg\"";
}
- close(C);
- $result = $?;
- $out->close();
+ $cmd_str .= " > $outfile 2>&1";
+ $result = system($cmd_str);
}
else
{
- # child
- open(STDERR, ">&STDOUT");
- exec(@$cmd) || die +__PACKAGE__, ": $cmd->[0] failed: $!\n";
+ my $pid = open(C, "-|");
+
+ if ($pid)
+ {
+ # parent
+ my $out = new IO::File(">$outfile") or
+ die +__PACKAGE__, ": can't open $outfile: $!\n";
+ binmode C;
+ while (<C>)
+ {
+ $out->print($_);
+ }
+ close(C);
+ $result = $?;
+ $out->close();
+ }
+ else
+ {
+ # child
+ open(STDERR, ">&STDOUT");
+ exec(@$cmd) || die +__PACKAGE__, ": $cmd->[0] failed: $!\n";
+ }
}
$result;