#!/bin/sh
eval 'if [ -x /usr/local/cpanel/3rdparty/bin/perl ]; then exec /usr/local/cpanel/3rdparty/bin/perl -x -- $0 ${1+"$@"}; else exec /usr/bin/perl -x $0 ${1+"$@"}; fi;'
if 0;

#!/usr/bin/perl
# Game Server Module, Installer   Copyright(c) cPanel, Inc.
#                                 All rights Reserved.
# darren@cpanel.net               http://cpgs.cpanel.net

use strict;
use Time::HiRes qw(usleep ualarm gettimeofday tv_interval);

$|=1;

$ENV{'PATH'} = "/bin:/usr/bin";

my $package = $ARGV[0];
chomp $package if $package;

if((!$package) or (! -f $package) or ($package !~ m/\w+\.cpgs$/)) {
	exit_with_usage();
}

my ( $dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks ) = stat($package);
my $div = int( ( $size / 100 ) );

my $sz=0;
my $trans=0;
my $ttltrans=0;
my $remaining_time=0;
my $lasttime=gettimeofday();
my $starttime=time;

if(open(my $pkg,'<', $package)) {
	select($pkg);
	$|=1;
	while(<$pkg>) {
			my $sz = length($_);
			$trans += $sz;
			$ttltrans += $sz;
			my $perc = int(($ttltrans/$size)*100);
			my $timenow = gettimeofday();
			my $curtime = time;
			my $time_elapsed = $timenow-$lasttime;
			my $time_spent=$curtime-$starttime;
			my $arate = $time_spent ? int($ttltrans/$time_spent) : 0;
			my $remaining_time = $arate ? int( ($size-$ttltrans)/$arate) : 0;
			$arate = sprintf("%0.2f",(($arate/1024)/1024));
			$lasttime = gettimeofday();
			print STDOUT;
			if($trans > $div) {
					print STDERR "perc($perc) ttltrans($ttltrans) size($size) arate($arate) remaining_time($remaining_time) time_spent($time_spent)\n";
					$trans = 0;
			}
	}
	close($pkg);
} else {
	print "Could not open $package for reading: $!\n";
	exit(1);
}

sub exit_with_usage {
	print "\nUsage : pv /path/to/gamepkg.cpgs | tar -Rxzvf -\n\n";
	exit(0);
}
