#!/sw/bin/perl5 -w use strict; my $TMPDIR; my $version = ""; sub usage { print STDERR "$0: usage\n"; print STDERR "$0 [-v version] result1.tar[.gz] ...\n"; } sub make_tempdir() { my $dirno = 1; $TMPDIR = "TMP$dirno"; while ( -f $TMPDIR or -d $TMPDIR ) { ++$dirno; $TMPDIR = "TMP$dirno"; } mkdir($TMPDIR,0770) or die "Cannot create temporary directory $TMPDIR\n"; } sub reformat_results($) { $_ = shift; s/\.tar//; my $platform = $_; system("dos2unix ${platform}.txt ${platform}.txt"); open (PLATFORM_RESULTS,"<${platform}.txt") or return; while (/^\s*$/) { $_= ; } open (PLATFORM_INFO,">$platform.info") or return; open (PLATFORM_NEW_RESULTS,">${platform}.new_results") or return; my ($CGAL_VERSION,$LEDA_VERSION,$TESTER,$GMP,$CLN,$QT) = ("-","-","-","-","-","-"); while (! /^------/) { if (/^CGAL_VERSION\s+([\w\.-]+)/) { $CGAL_VERSION = $1; } if (/^LEDA\s+version\s+([\w\.-]+)/) { $LEDA_VERSION = $1; } if (/^TESTER\s+([\w\.-]+)/) { $TESTER = $1; } if (/GMP_SUPPORT\s*=\s*\'_GMP\'/) { $GMP="+"; } if (/CLN_SUPPORT\s*=\s*\'_CLN\'/) { $CLN="+"; } if (/QT_SUPPORT\s*=\s*\'_QT\'/) { $QT="+"; } if (/LEDA_SUPPORT\s*=\s*\'_LEDA\'/ && $LEDA_VERSION eq "-") { $LEDA_VERSION="+"; } $_= ; } while () { print PLATFORM_NEW_RESULTS $_; } rename("${platform}.new_results","${platform}.txt"); print PLATFORM_INFO <<"EOF"; $CGAL_VERSION $TESTER $LEDA_VERSION $GMP $CLN $QT EOF close(PLATFORM_INFO); close(PLATFORM_RESULTS); close(PLATFORM_NEW_RESULTS); if ($version && $version ne "CGAL-$CGAL_VERSION" && ($version !~ /^CGAL-${CGAL_VERSION}-I-[\d]+$/)) { die "Wrong version in $platform: $CGAL_VERSION instead of $version.\n"; } } sub one_archive($) { my $archive = shift; if (! -f $archive) { print STDERR "$archive is not a valid filename\n"; return 0; } if ( $archive =~ m/\.gz$/ ) { system("/sw/bin/gunzip", "$archive") == 0 or return 0; $archive =~ s/\.gz$//; } if ( $archive =~ m/.*\.tgz$/ ) { system("gunzip", "$archive") == 0 or return 0; $archive =~ s/\.tgz$/.tar/; } if ( $archive !~ /\.tar$/) { print STDERR "$0: $archive not a tar file\n"; return 0; } make_tempdir(); rename("$archive","$TMPDIR/$archive") or die; chdir("$TMPDIR") or die; system("gtar", "xf", "$archive") == 0 or die; unlink($archive); reformat_results($archive); system('gzip',glob("*/*")); system('chmod','-R','a+r,og+w','.'); system('tar', 'cf', "../$archive", glob("*")) == 0 or die; chdir('..') or die; system('rm', '-rf', "$TMPDIR")== 0 or die; return 1; } sub all_archives() { my $archive; foreach $archive (@ARGV) { if (one_archive($archive)) { print STDERR "$archive succesfully reformatted.\n"; } else { print STDERR "Could not reformat $archive\n"; } } } if ($#ARGV < 0) { usage; exit 1; } if ($ARGV[0] eq "-v") { shift; $version = shift; } if ($#ARGV < 0) { usage; exit 1; } all_archives(); exit 0;