#!/usr/bin/perl

use Cwd 'abs_path';
use File::Basename;

$prefix = abs_path(dirname($0) . "/..");
$datadir = "${prefix}/share";
$debugger = "avr-gdb";

@argcmds = ( "-b", "--cd", "--command", "--core", "--pid", "--directory",
	     "--exec", "--interpreter", "--se", "--symbols", "--tty",
	     "-s", "-e", "-se", "-x", "-d" );

for ($i = 0; $i <= $#ARGV; $i++) {
    $arg = $ARGV[$i];

    if ($arg =~ /^-/ &&
	(grep $_ eq $arg, @argcmds || grep /^-$arg$/, @argcmds)) {
	$i++;
    }
    elsif ($arg eq "--debugger" && $i < $#ARGV) {
	$debugger = $ARGV[$i + 1];
	splice @ARGV, $i, 2;
	$i--;
    }
    elsif ($arg eq "--capture" || $arg eq "--ignore-intr") {
	$ENV{AVARICE_ARGS} = "$ENV{AVARICE_ARGS} $arg";
	splice @ARGV, $i, 1;
	# Don't load an executable
	$capture = 1 if $arg eq "--capture";
	$i--;
    }
    elsif ($arg eq "--external") {
	$avarice_running = 1;
	splice @ARGV, $i, 1;
	$i--;
    }
    elsif (!($arg =~ /^-/)) {
	$exe = $arg;
	break;
    }
}

$exe = "" if $capture;

if ($avarice_running)
{
	print "executing: start-avarice $exe"; 
	system "start-avarice $exe";
}
unshift @ARGV, ($debugger, "-x", "$datadir/avarice/gdb-avarice-script" );

print "executing: @ARGV";
exec @ARGV;
