| #!/usr/bin/perl | 
 | # | 
 | # fixprogs  - run through the list of entropy commands and | 
 | #             score out the losers | 
 | # | 
 |  | 
 | $entscale = 50; # divisor for optional entropy measurement | 
 |  | 
 | sub usage { | 
 |   return("Usage: $0 <command file>\n"); | 
 | } | 
 |  | 
 | if (($#ARGV == -1) || ($#ARGV>1)) { | 
 |   die(&usage); | 
 | } | 
 |  | 
 | # 'undocumented' option - run ent (in second param) on the output | 
 | if ($#ARGV==1) { | 
 |   $entcmd=$ARGV[1] | 
 | } else { | 
 |   $entcmd = "" | 
 | }; | 
 |  | 
 | $infilename = $ARGV[0]; | 
 |  | 
 | if (!open(IN, "<".$infilename)) { | 
 |   die("Couldn't open input file"); | 
 | } | 
 | $outfilename=$infilename.".out"; | 
 | if (!open(OUT, ">$outfilename")) { | 
 |   die("Couldn't open output file $outfilename"); | 
 | } | 
 | @infile=<IN>; | 
 |  | 
 | select(OUT); $|=1; select(STDOUT); | 
 |  | 
 | foreach (@infile) { | 
 |   if (/^\s*\#/ || /^\s*$/) { | 
 |     print OUT; | 
 |     next; | 
 |   } | 
 |   ($cmd, $path, $est) = /^\"([^\"]+)\"\s+([\w\/_-]+)\s+([\d\.\-]+)/o; | 
 |   @args = split(/ /, $cmd); | 
 |    if (! ($pid = fork())) { | 
 |      # child | 
 |      close STDIN; close STDOUT; close STDERR; | 
 |      open (STDIN,  "</dev/null"); | 
 |      open (STDOUT, ">/dev/null"); | 
 |      open (STDERR, ">/dev/null"); | 
 |      exec $path @args; | 
 |      exit 1; # shouldn't be here | 
 |    } | 
 |    # parent | 
 |    waitpid ($pid, 0); $ret=$? >> 8; | 
 |  | 
 |   if ($ret != 0) { | 
 |     $path = "undef"; | 
 |   } else { | 
 |     if ($entcmd ne "") { | 
 |       # now try to run ent on the command | 
 |       $mostargs=join(" ", splice(@args,1)); | 
 |       print "Evaluating '$path $mostargs'\n"; | 
 |       @ent = qx{$path $mostargs | $entcmd -b -t}; | 
 |       @ent = grep(/^1,/, @ent); | 
 |       ($null, $null, $rate) = split(/,/, $ent[0]); | 
 |       $est = $rate / $entscale;		# scale the estimate back | 
 |     } | 
 |   }     | 
 |   print OUT "\"$cmd\" $path $est\n"; | 
 | } | 
 |  | 
 | close(IN); |