#!/usr/bin/perl

# Perl-Skript, welches in regelmaessigen Zeitabstaenden die Dateien
# light1.dat, light2.dat und light3.dat ausliest und diese Dateien wieder
# zuruecksetzt.

#
# Eingabe:
# 1.Parameter: Pfad + Logdatei
# 2.Parameter: Zeit in Sekunden bis Auswertung
# ...
# n.Parameter: nyi
#

$timeToSleep = $ARGV[1];
$logfile = "./access.log";

$srchpat1 = "(lehre|/\ |/index)";
$srchpat2 = "/~";
$srchpat3 = "(huc|hcscw|chi2000)";

$pid = fork;
if ( $pid == 0 ) { # das ist der Child process
  exec("tail -f $ARGV[0] >> $logfile");
}

while(1) {
  print "Trafficlights-Control sleeps...\n";
  sleep($timeToSleep);
  print "Trafficlights-Control wake up and does something...\n";

  $hit = &count($logfile);
  system("> $logfile");

  print "HIT: $hit\n";

  system("./sersend /dev/ttyS1 9600 8N1 $hit &");
  $hit="";
}

sub count 
  {
    local($fname) = @_;
    local($feld, $line, $str);

    open(INFILE, "$fname");
    @feld = ;
    close(INFILE);
    
    foreach $line (@feld) {
      if ( ($srchpat1 ne "") && ($line =~/$srchpat1/) ) {
	$str .= 1;
      } 
      if ( ($srchpat2 ne "") && ($line =~/$srchpat2/) ) {
	$str .= 2;
      }
      if ( ($srchpat3 ne "") && ($line =~/$srchpat3/) ) {
	$str .= 3;
      }
    }
   
    return $str;
  }