#! /usr/bin/suidperl -w

$DISPLAY = $ENV{"DISPLAY"};

if (!$DISPLAY)
{
	die "\$DISPLAY not set";
}

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

delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'}; 

$PID_FILE = "/var/run/imwheel-$DISPLAY.pid";
if ($PID_FILE =~ /^([-\@\w.:\/]*)$/) {
	$PID_FILE = $1;
} else {
	die "Bad characters in $PID_FILE";
}

$OLD_PID = `cat $PID_FILE`;
if ($OLD_PID =~ /^([\d]*)$/) {
	$OLD_PID = $1;
} else {
	die "Bad characters in $OLD_PID";
}

$PID = fork();

if ($PID == 0)
{
	if (length($OLD_PID) != 0) {	
		kill 15, $OLD_PID;
	}
	exec {"/usr/X11R6/bin/imwheel"} "imwheel", "-p", "-d"|| die "Couldnt execute imwheel: $!";
}
else
{
	unlink ($PID_FILE);	
	open (PID_FILE, ">$PID_FILE") || die "Couldnt write PID-file: $!";
	print PID_FILE $PID;
	close (PID_FILE);
}
