198937Sdes#!/usr/bin/perl 298937Sdes# 398937Sdes# fixprogs - run through the list of entropy commands and 498937Sdes# score out the losers 598937Sdes# 698937Sdes 798937Sdes$entscale = 50; # divisor for optional entropy measurement 898937Sdes 998937Sdessub usage { 1098937Sdes return("Usage: $0 <command file>\n"); 1198937Sdes} 1298937Sdes 1398937Sdesif (($#ARGV == -1) || ($#ARGV>1)) { 1498937Sdes die(&usage); 1598937Sdes} 1698937Sdes 1798937Sdes# 'undocumented' option - run ent (in second param) on the output 1898937Sdesif ($#ARGV==1) { 1998937Sdes $entcmd=$ARGV[1] 2098937Sdes} else { 2198937Sdes $entcmd = "" 2298937Sdes}; 2398937Sdes 2498937Sdes$infilename = $ARGV[0]; 2598937Sdes 2698937Sdesif (!open(IN, "<".$infilename)) { 2798937Sdes die("Couldn't open input file"); 2898937Sdes} 2998937Sdes$outfilename=$infilename.".out"; 3098937Sdesif (!open(OUT, ">$outfilename")) { 3198937Sdes die("Couldn't open output file $outfilename"); 3298937Sdes} 3398937Sdes@infile=<IN>; 3498937Sdes 3598937Sdesselect(OUT); $|=1; select(STDOUT); 3698937Sdes 3798937Sdesforeach (@infile) { 3898937Sdes if (/^\s*\#/ || /^\s*$/) { 3998937Sdes print OUT; 4098937Sdes next; 4198937Sdes } 4298937Sdes ($cmd, $path, $est) = /^\"([^\"]+)\"\s+([\w\/_-]+)\s+([\d\.\-]+)/o; 4398937Sdes @args = split(/ /, $cmd); 4498937Sdes if (! ($pid = fork())) { 4598937Sdes # child 4698937Sdes close STDIN; close STDOUT; close STDERR; 4798937Sdes open (STDIN, "</dev/null"); 4898937Sdes open (STDOUT, ">/dev/null"); 4998937Sdes open (STDERR, ">/dev/null"); 5098937Sdes exec $path @args; 5198937Sdes exit 1; # shouldn't be here 5298937Sdes } 5398937Sdes # parent 5498937Sdes waitpid ($pid, 0); $ret=$? >> 8; 5598937Sdes 5698937Sdes if ($ret != 0) { 5798937Sdes $path = "undef"; 5898937Sdes } else { 5998937Sdes if ($entcmd ne "") { 6098937Sdes # now try to run ent on the command 6198937Sdes $mostargs=join(" ", splice(@args,1)); 6298937Sdes print "Evaluating '$path $mostargs'\n"; 6398937Sdes @ent = qx{$path $mostargs | $entcmd -b -t}; 6498937Sdes @ent = grep(/^1,/, @ent); 6598937Sdes ($null, $null, $rate) = split(/,/, $ent[0]); 6698937Sdes $est = $rate / $entscale; # scale the estimate back 6798937Sdes } 68126274Sdes } 6998937Sdes print OUT "\"$cmd\" $path $est\n"; 7098937Sdes} 7198937Sdes 7298937Sdesclose(IN); 73