mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-30 07:54:42 +08:00
6251188c9d
1999-06-14 Zack Weinberg <zack@rabi.columbia.edu> * cpp.texi: Minor update. * cpp.1: Regenerate from cpp.texi, using... * contrib/texi2pod.pl: ...this (new file) plus some hand tweaks. From-SVN: r27525
152 lines
2.8 KiB
Perl
Executable File
152 lines
2.8 KiB
Perl
Executable File
#! /usr/bin/perl -w
|
|
|
|
# This does trivial (and I mean _trivial_) conversion of Texinfo
|
|
# markup to Perl POD format. It's intended to be used to extract
|
|
# something suitable for a manpage from a Texinfo document.
|
|
|
|
$in = $ARGV[0];
|
|
$out = "x";
|
|
die "usage: $0 infile outfile\n" unless defined $in && defined $out;
|
|
|
|
close STDIN;
|
|
open(IN,$in);
|
|
|
|
$output = 0;
|
|
$ignore = 0;
|
|
%sects = ();
|
|
$section = "";
|
|
@icstack = ();
|
|
@endwstack = ();
|
|
$shift = "";
|
|
|
|
while(<IN>)
|
|
{
|
|
chomp;
|
|
/^\@end ignore/ and $ignore = 0, next;
|
|
next if $ignore;
|
|
/^\@c man begin ([A-Z]+)/ and $sect = $1, $output = 1, next;
|
|
/^\@c man end/ and do {
|
|
$_ = $section;
|
|
s/</</g;
|
|
s/>/>/g;
|
|
|
|
s/\@(?:dfn|var|emph|cite)\{([^\}]*)\}/I<$1>/g;
|
|
s/\@(?:code|kbd)\{([^\}]*)\}/C<$1>/g;
|
|
s/\@(?:samp|strong|key)\{([^\}]*)\}/B<$1>/g;
|
|
s/\@file\{([^\}]*)\}/F<$1>/g;
|
|
s/\@(?:url|email)\{([^\}]*)\}/E<lt>C<$1>E<rt>/g;
|
|
s/\@[a-z]?ref\{(?:[^\}]*)\}.?//g;
|
|
s/\(\@p[a-z]?ref\{(?:[^\}]*)\}\).?//g;
|
|
s/\@copyright\{\}//g;
|
|
s/\@noindent\s*//g;
|
|
s/\@refill//g;
|
|
s/\@\././g;
|
|
|
|
s/</E<lt>/g;
|
|
s/>/E<gt>/g;
|
|
s/</</g;
|
|
s/>/>/g;
|
|
|
|
$sects{$sect} = $_;
|
|
$section = "";
|
|
$output = 0;
|
|
next;
|
|
};
|
|
|
|
/^\@(c|[a-z]+index)\b/ and next;
|
|
|
|
/^\@setfilename\s+([^.]+)/ and $fn = $1, next;
|
|
/^\@settitle\s+([^.]+)/ and $tl = $1, next;
|
|
|
|
next unless $output;
|
|
|
|
/^\@ignore/ and $ignore = 1, next;
|
|
|
|
/^\@itemize (\@[a-z]+)/ and do {
|
|
push @endwstack, $endw;
|
|
push @icstack, $ic;
|
|
$ic = $1;
|
|
$ic =~ s/\@bullet/*/;
|
|
$ic =~ s/\@minus/-/;
|
|
$_ = "\n=over 4\n";
|
|
$endw = "itemize";
|
|
};
|
|
|
|
/^\@enumerate\s+([A-Z0-9]+)/ and do {
|
|
push @endwstack, $endw;
|
|
push @icstack, $ic;
|
|
$ic = $1 . ".";
|
|
$_ = "\n=over 4\n";
|
|
$endw = "enumerate";
|
|
};
|
|
|
|
/^\@table\s+(\@[a-z]+)/ and do {
|
|
push @endwstack, $endw;
|
|
push @icstack, $ic;
|
|
$ic = $1;
|
|
$ic =~ s/\@(?:samp|strong|key)/B/;
|
|
$ic =~ s/\@(?:code|kbd)/C/;
|
|
$ic =~ s/\@(?:dfn|var|emph|cite)/I/;
|
|
$ic =~ s/\@(?:file)/F/;
|
|
$_ = "\n=over 4\n";
|
|
$endw = "table";
|
|
};
|
|
|
|
/^\@((?:small)?example)/ and do {
|
|
push @endwstack, $endw;
|
|
$endw = $1;
|
|
$shift = "\t";
|
|
next;
|
|
};
|
|
|
|
/^\@end\s+([a-z]+)/ and do {
|
|
if(defined $endw)
|
|
{
|
|
die "\@$endw ended by \@end $1 at line $.\n"
|
|
unless $1 eq $endw;
|
|
|
|
if($endw =~ /example$/)
|
|
{
|
|
$shift = "";
|
|
$_ = "";
|
|
}
|
|
else
|
|
{
|
|
$_ = "\n=back\n";
|
|
undef $endw;
|
|
$ic = pop @icstack;
|
|
}
|
|
$endw = pop @endwstack;
|
|
}
|
|
};
|
|
|
|
/^\@itemx?\s*(.+)?$/ and do {
|
|
if(defined $1)
|
|
{
|
|
$_ = "=item $ic\<$1\>\n";
|
|
}
|
|
else
|
|
{
|
|
$_ = "=item $ic\n";
|
|
$ic =~ y/A-Ya-y1-8/B-Zb-z2-9/;
|
|
}
|
|
};
|
|
|
|
$section .= $shift.$_."\n";
|
|
}
|
|
|
|
$sects{NAME} = "$fn \- $tl\n";
|
|
|
|
for $sect (qw(NAME SYNOPSIS DESCRIPTION OPTIONS ENVIRONMENT FILES
|
|
BUGS NOTES SEEALSO AUTHOR COPYRIGHT))
|
|
{
|
|
if(exists $sects{$sect})
|
|
{
|
|
$head = $sect;
|
|
$head =~ s/SEEALSO/SEE ALSO/;
|
|
print "=head1 $head\n\n";
|
|
print $sects{$sect};
|
|
print "\n";
|
|
}
|
|
}
|