6 print "Usage: parsedoc.pl <docfile.doc>\n";
12 sub add_option_to_manpage
21 $shortopt =~ s
|-|\\-|;
22 $params =~ s
|<(.*)>|\\fI\
1\\fR
|;
23 $longdoc =~ s/<([a-zA-Z0-9_-]+)>/\\fI\1\\fR/;
24 #$longdoc =~ s/%/%%$1/g;
25 print manpage
<< "EOF"
27 \\fB
\\-$shortopt\\fR
, \\fB
\\-\\-$longopt\\fR
$params
33 sub add_option_to_help
42 my $s1 = " "x
(2-length($shortopt));
43 my $s2 = " "x
(20-length($longopt." ".$params));
45 $paramhelp .= " printf(\"-$shortopt$s1, --$longopt $params$s2$doc\\n\");\n";
48 sub add_header_to_manpage
52 my $short_description = shift;
53 my $long_description = shift;
55 my $date = `date +"%B %Y"`;
59 $long_description =~ s/([^\\])-/\1\\-/g;
61 my @chunks = split(/\n/,$usage);
63 foreach my $u (@chunks) {
64 $u =~ s/%s/$progname/g;
65 $newusage .= "$p.B $u\n";
68 $newusage =~ s/([^\\])-/\1\\-/g;
69 print manpage
<< "EOF"
70 .TH
$progname "1" "$date" "$progname" "$package"
72 $progname \\- $short_description
81 open(fi
, "$file") or die "File not found";
83 my $package = "swftools";
85 $progname =~ s
|(^/?([^/]+/))*([^/]+).doc
|$3|;
88 open(manpage
, ">$path$progname.1") or die;
91 my $short_description = "";
92 my $long_description = "";
101 $short_description .= $_;
105 $long_description .= $_;
108 add_header_to_manpage
($package, $progname, $short_description, $long_description, $usage);
117 if(/^-([^\s,]+)[\s,]+--([^\s]+)(\s+(.*))?$/) {
132 $longdoc = $doc if(!$longdoc || ($longdoc =~ /^\s*$/));
134 $shortopts[$numopts] = $shortopt;
135 $longopts[$numopts] = $longopt;
138 add_option_to_manpage
($shortopt,$longopt,$params,$doc,$longdoc);
139 add_option_to_help
($shortopt,$longopt,$params,$doc,$longdoc);
152 $tail =~ s/([^\\])-/\1\\-/g;
158 my $filename = "$path$progname.c";
160 if(!open($cfile, "<$filename")) {
161 $filename = "$path$progname.cpp";
162 if(!open($cfile, "<$filename")) {
163 $filename = "$path$progname.cc";
164 if(!open($cfile, "<$filename")) {
165 $filename = "$path$progname.c++";
166 open($cfile, "<$filename") or die;
174 if(/void\s*args_callback_usage.*\(.*\*/) {
175 print "substituting usage in $filename\n";
177 $src .= "void args_callback_usage(char *name)\n";
179 $src .= " printf(\"\\n\");\n";
183 my @chunks = split(/\n/,$usage);
184 my $prefix = "Usage:";
186 foreach $u (@chunks) {
188 $src .= " printf(\"$prefix $u\\n\", name);\n";
190 $src .= " printf(\"$prefix $u\\n\");\n";
194 $src .= " printf(\"\\n\");\n";
196 $src .= "$paramhelp";
198 $src .= " printf(\"\\n\");\n";
203 if(/^\s*(static\s+)?(struct\s+)?options_t.*=/) {
204 print "substituting options_t in $filename\n";
209 $src .= "static struct options_t options[] = {\n";
210 for(my $t=0;$t<$numopts;$t++) {
211 my $s = $shortopts[$t];
212 my $l = $longopts[$t];
213 $src .= "{\"$s\", \"$l\"},\n";
215 $src .= "{0,0}\n};\n";
222 open($cfile, ">$filename") or die;