|  | #!/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); |