git-svn-id: svn+q:///qpdf/trunk@634 71b93d88-0707-0410-a8cf-f5a4172ac649
This commit is contained in:
Jay Berkenbilt 2008-06-30 14:48:16 +00:00
parent 31dbfc0ef9
commit 212ca68f4f
7 changed files with 106 additions and 28 deletions

View File

@ -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

View File

@ -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.

View File

@ -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])

View File

@ -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>
@ -1964,6 +1964,21 @@ print "\n";
<appendix id="ref.release-notes">
<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>

View File

@ -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"

View File

@ -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'))

View File

@ -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;