refs.c::do_for_each_ref(): Finish error message lines with "\n"
[git/gitweb-caching.git] / Documentation / build-docdep.perl
blob489389c32af57d39bb843e2b0621144b38006fa3
1 #!/usr/bin/perl
3 my %include = ();
4 my %included = ();
6 for my $text (<*.txt>) {
7 open I, '<', $text || die "cannot read: $text";
8 while (<I>) {
9 if (/^include::/) {
10 chomp;
11 s/^include::\s*//;
12 s/\[\]//;
13 $include{$text}{$_} = 1;
14 $included{$_} = 1;
17 close I;
20 # Do we care about chained includes???
21 my $changed = 1;
22 while ($changed) {
23 $changed = 0;
24 while (my ($text, $included) = each %include) {
25 for my $i (keys %$included) {
26 # $text has include::$i; if $i includes $j
27 # $text indirectly includes $j.
28 if (exists $include{$i}) {
29 for my $j (keys %{$include{$i}}) {
30 if (!exists $include{$text}{$j}) {
31 $include{$text}{$j} = 1;
32 $included{$j} = 1;
33 $changed = 1;
41 while (my ($text, $included) = each %include) {
42 if (! exists $included{$text} &&
43 (my $base = $text) =~ s/\.txt$//) {
44 my ($suffix) = '1';
45 if ($base eq 'git') {
46 $suffix = '7'; # yuck...
48 print "$base.html $base.$suffix : ", join(" ", keys %$included), "\n";