#!/usr/bin/perl

use v5.10;
use strict;
use warnings;

my $to = 600;
my $i = "$ENV{HOME}/incoming";

# XXX
#$| = 1;

my $s = time;

if ($ARGV[0] =~ m,^(\Q$i\E/)?repair_.*\.changes$,) {
    my $d = "$i/$&";
    $d =~ s/\.changes$/.deb/;
    my $p = qr/^\Q$d\E:( [0-9]+[cefFrm]*)+$/;

    { # 'last' needs this in a 'do ... while' loop? see 'man perlsyn'
	do {

	    if (-e $d) {

		$_ = qx(fuser $d);

		die "output from 'fuser' expected but got none - is it in \$PATH?" unless defined;
		last if $_ eq '';
		die "unexpected output - please check" unless /$p/;

	    }

	    die "timeout exceeded while waiting for package file '$d'" if time - $s > $to;

	} while (sleep 10);

    }

}

exec "$ENV{HOME}/bin/rpi";
