7 my %torrcSampleOptions = ();
8 my %torrcCompleteOptions = ();
9 my %manPageOptions = ();
11 # Load the canonical list as actually accepted by Tor.
13 open(F
, "./src/or/tor --list-torrc-options |") or die;
15 next if m!\[notice\] Tor v0\.!;
16 if (m!^([A-Za-z0-9_]+)!) {
17 $mostRecentOption = lc $1;
18 $options{$mostRecentOption} = 1;
20 $descOptions{$mostRecentOption} = 1;
21 if (m!\{DEPRECATED\}!) {
22 delete $descOptions{$mostRecentOption};
23 delete $options{$mostRecentOption};
26 print "Unrecognized output> ";
32 # Load the contents of torrc.sample and torrc.complete
34 my ($fname, $options) = @_;
36 open(F
, "$fname") or die;
39 if (m!#([A-Za-z0-9_]+)!) {
40 $options->{lc $1} = 1;
47 loadTorrc
("./src/config/torrc.sample.in", \
%torrcSampleOptions);
48 loadTorrc
("./src/config/torrc.complete.in", \
%torrcCompleteOptions);
50 # Try to figure out what's in the man page.
52 my $considerNextLine = 0;
53 open(F
, "./doc/tor.1.in") or die;
55 if ($considerNextLine and
56 m!^\\fB([A-Za-z0-9_]+)!) {
57 $manPageOptions{lc $1} = 1;
61 if (m!^\.(?:SH|TP|PP)!) {
62 $considerNextLine = 1; next;
64 $considerNextLine = 0;
69 # Now, display differences:
74 for my $k (keys %$a) {
75 push @lst, $k unless (exists $b->{$k});
77 print "$s: ", join(' ', sort @lst), "\n\n";
81 subtractHashes
("No online docs", \
%options, \
%descOptions);
82 # subtractHashes("Orphaned online docs", \%descOptions, \%options);
84 subtractHashes
("Not in torrc.complete.in", \
%options, \
%torrcCompleteOptions);
85 subtractHashes
("Orphaned in torrc.complete.in", \
%torrcCompleteOptions, \
%options);
86 subtractHashes
("Orphaned in torrc.sample.in", \
%torrcSampleOptions, \
%options);
88 subtractHashes
("Not in man page", \
%options, \
%manPageOptions);
89 subtractHashes
("Orphaned in man page", \
%manPageOptions, \
%options);