| #!/usr/bin/env perl |
| |
| use strict; |
| use Getopt::Long; |
| |
| my $output; |
| my $version; |
| my $docbook; |
| my $html; |
| my $xml; |
| my $plaintext; |
| my $no_split; |
| my $no_headers; |
| |
| Getopt::Long::Configure('pass_through'); |
| Getopt::Long::GetOptions( |
| 'output=s' => \$output, |
| 'version' => \$version, |
| 'no-split' => \$no_split, |
| 'no-headers' => \$no_headers, |
| 'docbook' => \$docbook, |
| 'html' => \$html, |
| 'xml' => \$xml, |
| 'plaintext' => \$plaintext |
| ); |
| |
| if ($version) |
| { |
| print "makeinfo (OpenWrt stub) 9.99\n"; |
| exit 0; |
| } |
| |
| |
| sub output_filename |
| { |
| my $path = shift || return; |
| my $name = $path; |
| my $setfile; |
| |
| if (open F, "< $path") |
| { |
| while (defined(my $line = readline F)) |
| { |
| if ($line =~ /\@setfilename\s+(\S+)/) |
| { |
| $setfile = $1; |
| $setfile =~ s!^.+/!!; |
| last; |
| } |
| } |
| |
| close F; |
| } |
| |
| $name =~ s!^.+/!!; |
| $name =~ s!\.[^.]+$!!; |
| |
| if ($html) |
| { |
| $setfile =~ s!\.[^.]+$!! if $setfile; |
| |
| if ($no_split) |
| { |
| return $setfile ? "$setfile.html" : "$name.html" unless $output; |
| return $output; |
| } |
| |
| return $setfile ? "$setfile/index.html" : "$name/index.html" unless $output; |
| return "$output/index.html"; |
| } |
| elsif ($xml || $docbook) |
| { |
| $setfile =~ s!\.[^.]+$!! if $setfile; |
| |
| return $setfile ? "$setfile.xml" : "$name.info" unless $output; |
| return $output; |
| } |
| elsif ($plaintext) |
| { |
| return ($output || "-"); |
| } |
| |
| return ($output || $setfile || "$name.info"); |
| } |
| |
| foreach my $arg (@ARGV) |
| { |
| next unless -f $arg; |
| |
| my $out = output_filename($arg); |
| if ($out =~ m!^(.+/)[^/]+$!) |
| { |
| system("mkdir", "-p", $1); |
| } |
| |
| my $fd = \*STDOUT; |
| if ($out ne "-" && !$no_headers) |
| { |
| open $fd, "> $out" || die "Can't open $out: $!\n"; |
| } |
| |
| if ($html || $xml || $docbook) |
| { |
| print $fd "<!-- Dummy output for $arg -->\n"; |
| } |
| else |
| { |
| print $fd "Dummy output for $arg\n"; |
| } |
| |
| close $fd; |
| } |