blob: d698f7b79c5d589b7e98fbfeb151fc917c5310cd [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/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) 9.99\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}