OpenWrt – Rev 4

Subversion Repositories:
Rev:
#!/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) 4.13\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;
}