1#!/usr/bin/env perl 2 3use strict; 4use Getopt::Long; 5 6my $output; 7my $version; 8my $docbook; 9my $html; 10my $xml; 11my $plaintext; 12my $no_split; 13my $no_headers; 14 15Getopt::Long::Configure('pass_through'); 16Getopt::Long::GetOptions( 17 'output=s' => \$output, 18 'version' => \$version, 19 'no-split' => \$no_split, 20 'no-headers' => \$no_headers, 21 'docbook' => \$docbook, 22 'html' => \$html, 23 'xml' => \$xml, 24 'plaintext' => \$plaintext 25); 26 27if ($version) 28{ 29 print "makeinfo (OpenWrt stub) 4.13\n"; 30 exit 0; 31} 32 33 34sub output_filename 35{ 36 my $path = shift || return; 37 my $name = $path; 38 my $setfile; 39 40 if (open F, "< $path") 41 { 42 while (defined(my $line = readline F)) 43 { 44 if ($line =~ /\@setfilename\s+(\S+)/) 45 { 46 $setfile = $1; 47 $setfile =~ s!^.+/!!; 48 last; 49 } 50 } 51 52 close F; 53 } 54 55 $name =~ s!^.+/!!; 56 $name =~ s!\.[^.]+$!!; 57 58 if ($html) 59 { 60 $setfile =~ s!\.[^.]+$!! if $setfile; 61 62 if ($no_split) 63 { 64 return $setfile ? "$setfile.html" : "$name.html" unless $output; 65 return $output; 66 } 67 68 return $setfile ? "$setfile/index.html" : "$name/index.html" unless $output; 69 return "$output/index.html"; 70 } 71 elsif ($xml || $docbook) 72 { 73 $setfile =~ s!\.[^.]+$!! if $setfile; 74 75 return $setfile ? "$setfile.xml" : "$name.info" unless $output; 76 return $output; 77 } 78 elsif ($plaintext) 79 { 80 return ($output || "-"); 81 } 82 83 return ($output || $setfile || "$name.info"); 84} 85 86foreach my $arg (@ARGV) 87{ 88 next unless -f $arg; 89 90 my $out = output_filename($arg); 91 if ($out =~ m!^(.+/)[^/]+$!) 92 { 93 system("mkdir", "-p", $1); 94 } 95 96 my $fd = \*STDOUT; 97 if ($out ne "-" && !$no_headers) 98 { 99 open $fd, "> $out" || die "Can't open $out: $!\n"; 100 } 101 102 if ($html || $xml || $docbook) 103 { 104 print $fd "<!-- Dummy output for $arg -->\n"; 105 } 106 else 107 { 108 print $fd "Dummy output for $arg\n"; 109 } 110 111 close $fd; 112} 113