#!/usr/bin/perl -w
$lastring = 0;
$numrings = 0;
$num = "";
$name = "";
while(1)
{
    $rfds = "";
    vec($rfds, fileno(STDIN), 1) = 1;
    select($rfds, "", "", 1);
    if(vec($rfds, fileno(STDIN), 1))
    {
	exit() if !($line = <STDIN>);
    } else {
	$line = "";
    }
    chomp($line);
    if(((time() - $lastring) > 10) && (($numrings > 0) || ($name ne "")))
    {
	$name = "Someone" if $name eq "";
	open(LOG, ">>" . $ENV{"HOME"} . "/phone/log") || die("$!\n");
	if($numrings > 0)
	{
	    print LOG (scalar(localtime(time())) . ": $name rang $numrings times\n");
	} else {
	    print LOG (scalar(localtime(time())) . ": $name rang\n");
	}
	close(LOG);
	unlink($ENV{"HOME"} . "/phone/lastname");
	$name = "";
	$numrings = 0;
    }
    if($line eq "R")
    {
	$numrings++;
	$lastring = time();
    }
    if(substr($line, 0, 1) eq "N")
    {
	if($name ne "")
	{
	    open(LOG, ">>" . $ENV{"HOME"} . "/phone/log") || die("$!\n");
	    if($numrings > 0)
	    {
		print LOG (scalar(localtime(time())) . ": $name rang $numrings times\n");
	    } else {
		print LOG (scalar(localtime(time())) . ": $name rang\n");
	    }
	    close(LOG);
	    $numrings = 0;
	}
	$name = $num = substr($line, 1);
	open(PT, $ENV{"HOME"} . "/phone/nametab");
	while($tabline = <PT>)
	{
	    chomp($tabline);
	    $pos = index($tabline, " ");
	    $tabnum = substr($tabline, 0, $pos);
	    $tabname = substr($tabline, $pos + 1);
	    if($tabnum eq $num)
	    {
		$name = $tabname;
	    }
	}
	close(PT);
        print("$name\n");
	system("echo '$name' | text2wave | sox -v 5 -t .wav - -t ossdsp /dev/dsp &");
	open(LN, ">" . $ENV{"HOME"} . "/phone/lastname") || die("$!\n");
	print LN "$name\n";
	close(LN);
    }
}
