source: trunk/third/openssh/fixprogs @ 16801

Revision 16801, 1.6 KB checked in by ghudson, 23 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r16800, which included commits to RCS files with non-trunk default branches.
  • Property svn:executable set to *
Line 
1#!/usr/bin/perl
2#
3# fixprogs  - run through the list of entropy commands and
4#             score out the losers
5#
6
7$entscale = 50; # divisor for optional entropy measurement
8
9sub usage {
10  return("Usage: $0 <command file>\n");
11}
12
13if (($#ARGV == -1) || ($#ARGV>1)) {
14  die(&usage);
15}
16
17# 'undocumented' option - run ent (in second param) on the output
18if ($#ARGV==1) {
19  $entcmd=$ARGV[1]
20} else {
21  $entcmd = ""
22};
23
24$infilename = $ARGV[0];
25
26if (!open(IN, "<".$infilename)) {
27  die("Couldn't open input file");
28}
29$outfilename=$infilename.".out";
30if (!open(OUT, ">$outfilename")) {
31  die("Couldn't open output file $outfilename");
32}
33@infile=<IN>;
34
35select(OUT); $|=1; select(STDOUT);
36
37foreach (@infile) {
38  if (/^\s*\#/ || /^\s*$/) {
39    print OUT;
40    next;
41  }
42  ($cmd, $path, $est) = /^\"([^\"]+)\"\s+([\w\/_-]+)\s+([\d\.\-]+)/o;
43  @args = split(/ /, $cmd);
44   if (! ($pid = fork())) {
45     # child
46     close STDIN; close STDOUT; close STDERR;
47     open (STDIN,  "</dev/null");
48     open (STDOUT, ">/dev/null");
49     open (STDERR, ">/dev/null");
50     exec $path @args;
51     exit 1; # shouldn't be here
52   }
53   # parent
54   waitpid ($pid, 0); $ret=$? >> 8;
55
56  if ($ret != 0) {
57    $path = "undef";
58  } else {
59    if ($entcmd ne "") {
60      # now try to run ent on the command
61      $mostargs=join(" ", splice(@args,1));
62      print "Evaluating '$path $mostargs'\n";
63      @ent = qx{$path $mostargs | $entcmd -b -t};
64      @ent = grep(/^1,/, @ent);
65      ($null, $null, $rate) = split(/,/, $ent[0]);
66      $est = $rate / $entscale;         # scale the estimate back
67    }
68  }   
69  print OUT "\"$cmd\" $path $est\n";
70}
71
72close(IN);
Note: See TracBrowser for help on using the repository browser.