openwrt/tools/missing-macros/src/bin/makeinfo

113 lines
1.8 KiB
Perl
Executable File

#!/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;
}