releasing 5.18.2-7 to unstable
[perl/perl.git] / debian / splitdoc
1 #!./perl.static -w
2
3 #
4 # Split POD documentation out of base modules and remove auto-loaded
5 # subroutines
6 #
7
8 BEGIN { unshift @INC, 'lib' }
9 use strict;
10 use File::Find;
11 use File::Path;
12 use IO::File;
13
14 my @args = @ARGV;
15 @ARGV = ();
16 find sub { push @ARGV, $File::Find::name if -f and /\.pm$/ }, @args;
17 die "$0: no modules under @args?\n" unless @ARGV;
18
19 $^I = '';
20 $/ = '';
21
22 my %auto;
23 my $in_pod;
24 my $pod;
25
26 while (<>)
27 {
28     if ($in_pod ||= /^=\w/)
29     {
30         unless ($pod)
31         {
32             my $file = $ARGV;
33             my $dir;
34             for ($file)
35             {
36                 s/\.pm$/.pod/;
37                 s/perl-base/perl-doc/;
38                 s!/usr/lib/!/usr/share/!;
39                 ($dir) = m!(.*)/!;
40             }
41
42             mkpath $dir unless -d $dir;
43             $pod = IO::File->new(">$file")
44                 or die "$0: can't create $file ($!)\n";
45         }
46
47         if (/^=cut\n/)
48         {
49             $in_pod = 0;
50         }
51         else
52         {
53             $pod->print($_);
54         }
55     }
56     else
57     {
58         $auto{$ARGV}++ if /(use|require)\s+AutoLoader\b/;
59         print;
60     }
61 }
62 continue
63 {
64     if (eof)
65     {
66         close ARGV;
67         if ($pod)
68         {
69             $pod->print("=cut\n");
70             $pod->close;
71             undef $pod;
72         }
73
74         $in_pod = 0;
75     }
76 }
77
78 # strip everyting following __END__ in modules which use AutoLoader
79 $/ = "\n";
80 my $end;
81
82 exit unless @ARGV = keys %auto;
83
84 while (<>)
85 {
86     print unless $end ||= /^__END__$/;
87 }
88 continue
89 {
90     if (eof)
91     {
92         close ARGV;
93         $end = 0;
94     }
95 }
96
97 exit