#
# Subroutine for NOD32
#

sub nod32 {
  &debug("NOD32: starting scan of directory \"$scandir/$file_id\"...");
  my ($nod32_verbose)="" if ($DEBUG);
  my ($nod32_options)="-log- -list- -heur+ -heurstd -all";
  my ($start_nod32_time)=[gettimeofday];
  my ($DD,$nod32_status,$stop_nod32_time,$nod32_time);
#
  &debug("run $nod32_binary $nod32_verbose $nod32_options $scandir/$file_id 2>&1");
  $DD=`$nod32_binary $nod32_verbose $nod32_options $scandir/$file_id 2>&1`;
  $nod32_status=($? >> 8);
  &debug("--output of NOD32 was:\n$DD--");
  if ( $nod32_status > 0 ) {
    if ( $nod32_status < 10 ) {
      $DD =~ s/\r/\n/sg;
      $DD =~ s/.*scanning path $scandir\/$file_id\n(.*)\n.........\nnumber of diagnosed files.*/\n$1\n/s;
      $DD =~ s/\n$scandir\/$file_id.*\/\s+\n/\n/sg;
      $DD =~ /^$scandir\/$file_id\/(.+)\s\-\s(.+)$/m;
      $quarantine_description="$2";
      $description = $DD;
      $description =~ s/$scandir\/$file_id\/(.+)\s\-\s(.+)/ ...\/$1 :  $2/mg;
      &debug("There be a virus! ($quarantine_description)");
      &debug("Scanner results:\n---\n$description\n---\n");
      ($quarantine_event=$quarantine_description)=~s/\s/_/g;
      $quarantine_event="NOD32:".substr($quarantine_event,0,$QE_LEN);
    } else {
        &tempfail("corrupt or unknown NOD32 scanner/resource problems - exit status $nod32_status");
    }
  }
  $stop_nod32_time=[gettimeofday];
  $nod32_time = tv_interval ($start_nod32_time, $stop_nod32_time);
  &debug("NOD32: finished scan of dir \"$scandir/$file_id\" in $nod32_time secs");
}


