Listing 2. /etc/ppp/runchat.pl
#!/usr/bin/perl -w
use strict;
$ENV{PATH} = "/usr/sbin";
my $retval;
my $SCRIPT = $ARGV[0];
my $REPORT = '/tmp/runchat.fox';
my $MODEM = $ENV{MODEM};
my $FIFO = $ENV{FIFO};
$| = 1;
if (-e $REPORT) {
unlink $REPORT;
}
`/usr/sbin/chat -f $SCRIPT -r $REPORT <$MODEM >\
$MODEM 2>$FIFO`;
$retval = ($? >> 8);
open STDOUT, ">$FIFO";
# print "\nmessage We ran chat and got retval of
# $retval...\n";
if (!(-z $REPORT)) {
open (REPORT, "< $REPORT") or
die "message can't open $REPORT: $!\n";
while (<REPORT>)
{
if (!(m/$REPORT/)) {
print "\nmessage $_\n";
}
}
close REPORT;
# print "\nmessage now closing $REPORT\n";
}
if (-e $REPORT) {
unlink $REPORT;
}
if ($retval == 3) { print "message TIMEOUT\n"; }
if ($retval == 4) { print "message NO CARRIER\n"; }
if ($retval == 5) { print "message BUSY\n"; }
if ($retval == 7) { print "message NO DIALTONE\n"; }
if ($retval == 8) { print "message WAITING\n"; }
$! = $retval;