-#! /usr/bin/perl -w
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use Getopt::Std;
###############################################################################
# This is an auxiliary script that is part of the Exim test suite. It must be #
# #
# The only argument to this script is the name of the Exim binary that is to #
# be copied. The script must be run in the correct current directory. #
+# #
+# One option, -o <outfile> can be given. Default is "eximdir/exim" #
###############################################################################
-open(IN, "$ARGV[0]") || die "** Failed to open $ARGV[0]: $!\n";
-open(OUT, ">eximdir/exim") || die "** Failed to open eximdir/exim: $!\n";
+our ($opt_o);
+getopts('o:');
+
+my $outfile = defined($opt_o) ? $opt_o : 'eximdir/exim';
+
+open(IN, $ARGV[0]) || die "** Failed to open $ARGV[0]: $!\n";
+open(OUT, ">$outfile") || die "** Failed to open $outfile: $!\n";
while(<IN>)
{
s/>>>running<<</<<<testing>>>/;
- s/(\d+\.\d+(?:[_.]\d+)?([_-]RC\d+|[_-]dev)?(?:[0-9a-fA-F-]*)(?:-XX)?\0<<eximversion>>)/"x.yz\0" . ("*" x (length($1) - 5))/e;
+ s{
+ (\d+[_.]\d+ # major.minor
+ (?:[_.]\d+)? # optional security-patchlevel
+ (?:[_.]\d+)? # optional patchlevel
+ (?:[_-]RC\d+|[_-]?dev(?:start)?)? # optional RC or dev(start)
+ (?:(?:[_-]\d+)? # git tag distance
+ [-_][[:xdigit:]]+)? # git id
+ (?:[-_]XX)?\0 # git dirty bit
+ <<eximversion>> # marker
+ )
+ }
+ {"x.yz\0" . ("*" x (length($1) - 5))}xe;
print OUT;
}
close(IN);
close(OUT);
-chmod 04755, "eximdir/exim";
+chmod 04755, $outfile;
# End of patchexim script