123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #!/usr/bin/perl -w
- use strict;
- my %options = ();
- my %descOptions = ();
- my %torrcSampleOptions = ();
- my %torrcCompleteOptions = ();
- my %manPageOptions = ();
- # Load the canonical list as actually accepted by Tor.
- my $mostRecentOption;
- open(F, "./src/or/tor --list-torrc-options |") or die;
- while (<F>) {
- next if m!\[notice\] Tor v0\.!;
- if (m!^([A-Za-z0-9_]+)!) {
- $mostRecentOption = lc $1;
- $options{$mostRecentOption} = 1;
- } elsif (m!^ !) {
- $descOptions{$mostRecentOption} = 1;
- if (m!\{DEPRECATED\}!) {
- delete $descOptions{$mostRecentOption};
- delete $options{$mostRecentOption};
- }
- } else {
- print "Unrecognized output> ";
- print;
- }
- }
- close F;
- # Load the contents of torrc.sample and torrc.complete
- sub loadTorrc {
- my ($fname, $options) = @_;
- local *F;
- open(F, "$fname") or die;
- while (<F>) {
- next if (m!##+!);
- if (m!#([A-Za-z0-9_]+)!) {
- $options->{lc $1} = 1;
- }
- }
- close F;
- 0;
- }
- loadTorrc("./src/config/torrc.sample.in", \%torrcSampleOptions);
- loadTorrc("./src/config/torrc.complete.in", \%torrcCompleteOptions);
- # Try to figure out what's in the man page.
- my $considerNextLine = 0;
- open(F, "./doc/tor.1.in") or die;
- while (<F>) {
- if ($considerNextLine and
- m!^\\fB([A-Za-z0-9_]+)!) {
- $manPageOptions{lc $1} = 1;
- next;
- }
- if (m!^\.(?:SH|TP|PP)!) {
- $considerNextLine = 1; next;
- } else {
- $considerNextLine = 0;
- }
- }
- close F;
- # Now, display differences:
- sub subtractHashes {
- my ($s, $a, $b) = @_;
- my @lst = ();
- for my $k (keys %$a) {
- push @lst, $k unless (exists $b->{$k});
- }
- print "$s: ", join(' ', sort @lst), "\n\n";
- 0;
- }
- subtractHashes("No online docs", \%options, \%descOptions);
- # subtractHashes("Orphaned online docs", \%descOptions, \%options);
- subtractHashes("Not in torrc.complete.in", \%options, \%torrcCompleteOptions);
- subtractHashes("Orphaned in torrc.complete.in", \%torrcCompleteOptions, \%options);
- subtractHashes("Orphaned in torrc.sample.in", \%torrcSampleOptions, \%options);
- subtractHashes("Not in man page", \%options, \%manPageOptions);
- subtractHashes("Orphaned in man page", \%manPageOptions, \%options);
|