summaryrefslogtreecommitdiff
path: root/tools/missing-macros/src/bin/makeinfo
blob: d698f7b79c5d589b7e98fbfeb151fc917c5310cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/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;
}