47 lines
1.1 KiB
Perl
Executable file
47 lines
1.1 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
$srcdir = $ARGV[0];
|
|
|
|
open(OUT, ">prog.sgml") || die "Cannot create output file";
|
|
include("prog-head.sgml");
|
|
process("");
|
|
include("prog-foot.sgml");
|
|
close OUT;
|
|
exit 0;
|
|
|
|
sub include {
|
|
my $f = shift @_;
|
|
open(IN, "$srcdir/doc/$f") || die "Unable to find $f";
|
|
while (<IN>) {
|
|
print OUT;
|
|
}
|
|
close IN;
|
|
}
|
|
|
|
sub process {
|
|
my $dir = shift @_;
|
|
print "$dir/Doc\n";
|
|
open(IN, "$srcdir/$dir/Doc") || die "Unable to read $dir/Doc";
|
|
my @docfile = <IN>;
|
|
close IN;
|
|
foreach $_ (@docfile) {
|
|
chomp;
|
|
/^#/ && next;
|
|
/^([A-Z]+)\s*(.*)/ || die "Parse error: $_";
|
|
$cmd = $1;
|
|
$arg = $2;
|
|
if ($cmd eq "C") { process("$dir/$arg"); }
|
|
elsif ($cmd eq "H") {
|
|
push @stack, "H";
|
|
print OUT "<chapt>$arg\n";
|
|
} elsif ($cmd eq "S") {
|
|
print " $arg\n";
|
|
open(DOC, "cd $srcdir/$dir ; $srcdir/doc/kernel-doc -bird $arg |") || die "Unable to start kernel-doc";
|
|
while (<DOC>) { print OUT; }
|
|
close DOC;
|
|
} elsif ($cmd eq "D") {
|
|
print " $arg\n";
|
|
include($arg);
|
|
} else { die "Unknown command: $cmd"; }
|
|
}
|
|
}
|