diff options
author | Damien Miller <djm@mindrot.org> | 2000-05-18 23:12:50 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2000-05-18 23:12:50 +1000 |
commit | 912d9752c29b8d39c59a164da26fccc28636f951 (patch) | |
tree | 171eebbcaa50b3677bbca7a6b1eb50a271697304 | |
parent | cce494a4c881c2964429e398a4da5c7c964b0f2a (diff) |
Doh - forgot to import fixprogs
-rwxr-xr-x | fixprogs | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/fixprogs b/fixprogs new file mode 100755 index 00000000..4a70d2f9 --- /dev/null +++ b/fixprogs @@ -0,0 +1,72 @@ +#!/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); |