#!/usr/bin/perl -w # # The FreeBSD Japanese Documentation Project # # This is a preprocessor for HTML docs. # # usage: prehtml [-revcheck ] # (ex. % prehtml -revcheck ../.. news/1996 index.sgml) # # $FreeBSD: www/ja/prehtml,v 1.1 2000/10/02 09:16:04 kuriyama Exp $ my $revcheck; my $topdir; my $reldir; my %file; my %rev; ### parse options .................................................... ### sub sOPT {1}; sub sARG {2}; my $opt_state = sOPT; my $argv; while(defined($_ = $ARGV[0])) { if ($opt_state eq sOPT) { # option expected if(/^-(.+)/) { shift @ARGV; # discard option itself; local $_ = $1; /revcheck/ and do { $topdir = shift @ARGV; $reldir = shift @ARGV; if($reldir ne '' and $reldir !~ /\/$/) { $reldir .= "/"; } $revcheck = 1; next; }; } else { # this is not a option but an argument $opt_state = sARG; next; } } elsif ($opt_state eq sARG) { $file{target} = $_; if($revcheck) { s/.sgml$//; my $basename = $_; $file{cvsweb} = "www/en/${reldir}${basename}.sgml"; $file{orgbase} = "${topdir}/../en/${reldir}${basename}"; $rev{org} = get_rev_org($file{orgbase}.".sgml"); } last; } die "internal error: option parsing abnormally terminated.\n"; } ### add and replace entities ......................................... ### open TARGET,"<$file{target}" or die "cannot open a target file: $!\n"; my $pos_date; ### first, get date string and rev_target while(defined($_ = )) { if(/"; } else { $date = ""; } } if(/)) { if(tell(TARGET) == $pos_date) { print $date,"\n"; if($revcheck) { #print STDERR "$rev{org} -> $rev{target}\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; printf "\n", ($rev{org} eq $rev{target}) ? "IGNORE" : "INCLUDE"; } } else { # for backward compatibility s/ \%rev.incl;//; print; } } close TARGET; exit 0; sub get_rev_org { my $infile = shift @_; my $rev_org; open ORG,"<$infile" or return undef; while(defined($_ = )) { if(/\$Free[B]SD: [^\s]+ ([.0-9]+) [\/0-9]+[^\$]*\$/) { $rev_org = $1; last; } } close ORG; return $rev_org; } __END__