969440c420
Fix portindex command to refer comments.ja. Reviewed by: Motoyuki Konno <motoyuki@snipe.rim.or.jp> Submitted by: Jun Kuriyama <kuriyama@opt.phys.waseda.ac.jp>
205 lines
5.8 KiB
Perl
Executable file
205 lines
5.8 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# convert a ports INDEX file to HTML
|
|
#
|
|
# by John Fieber <jfieber@freebsd.org>
|
|
# Mon May 13 10:31:58 EST 1996
|
|
# $Id: portindex,v 1.4 1998-02-12 02:32:52 hanai Exp $
|
|
# The FreeBSD Japanese Documentation Project
|
|
# Original revision: 1.11
|
|
|
|
############################################################
|
|
|
|
# This is the base of where we ftp stuff from
|
|
$base = "ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current";
|
|
$baseHTTP = "http://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current";
|
|
|
|
$today = &getdate;
|
|
|
|
&main;
|
|
|
|
sub getdate {
|
|
# @months = ("January", "February", "March", "April", "May","June",
|
|
# "July", "August", "September", "October", "November", "December");
|
|
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
|
|
$year += 1900;
|
|
# return "Updated $months[$mon] $mday, $year";
|
|
$mon++;
|
|
return "$year 年 $mon 月 $mday 日に更新されました.";
|
|
}
|
|
|
|
sub header {
|
|
local ($fh, $htext) = @_;
|
|
print $fh "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2//EN\" [\n";
|
|
print $fh "<!ENTITY base CDATA '..'>";
|
|
print $fh "<!ENTITY date \"<em>$today</em>\">\n";
|
|
print $fh "<!ENTITY title '$htext'>";
|
|
print $fh "<!ENTITY blurb SYSTEM \"ports.inc\">\n";
|
|
print $fh "<!ENTITY % includes SYSTEM \"../includes.sgml\">\n";
|
|
print $fh "%includes;\n";
|
|
print $fh "]>\n";
|
|
print $fh "<html>&header;\n";
|
|
}
|
|
|
|
sub footer {
|
|
local ($fh, $ftext) = @_;
|
|
print $fh "\n$ftext\n";
|
|
print $fh "&footer;\n";
|
|
print $fh "</BODY>\n</HTML>\n";
|
|
}
|
|
|
|
sub main {
|
|
|
|
$sep = "<B>:</B>";
|
|
|
|
# 'category' translation database
|
|
if (open(CATF, "categories.ja_JP.EUC")) {
|
|
while (<CATF>) {
|
|
($a, $b) = split('\|');
|
|
next if !defined($b);
|
|
chop($b);
|
|
$catsLANG{$a} = $b;
|
|
}
|
|
}
|
|
# 'COMMENT' translation database
|
|
if (open(COMF, "comments.ja")) {
|
|
while (<COMF>) {
|
|
($a, $b) = split('\|');
|
|
next if !defined($b);
|
|
chop($b);
|
|
$b =~ s/&/&/g;
|
|
$b =~ s/</</g;
|
|
$b =~ s/>/>/g;
|
|
$descLANG{$a} = $b;
|
|
}
|
|
}
|
|
|
|
while (<>) {
|
|
chop;
|
|
s/&/&/g;
|
|
s/</</g;
|
|
s/>/>/g;
|
|
|
|
# Read a record
|
|
($name, $loc, $prefix, $desc, $ldesc, $owner, $cats,
|
|
$keys, $bdep, $rdep) = split('\|');
|
|
|
|
# Check for double hyphens in the name (--).
|
|
$name =~ s/--/-/g;
|
|
|
|
# Split the categories into an array
|
|
@cat = split("[ \t]+", $cats);
|
|
|
|
$catkey{$name} = $cat[0];
|
|
|
|
# desc translation
|
|
($lloc = $loc) =~ s@^/usr/ports/@@;
|
|
$desc = $descLANG{$lloc}
|
|
if ($descLANG{$lloc} ne '');
|
|
|
|
foreach $i (@cat) {
|
|
|
|
$stats{$i}++;
|
|
|
|
# figure out the FTP url
|
|
$loc =~ s/\/usr/$base/;
|
|
$ldesc =~ s/\/usr/$baseHTTP/;
|
|
|
|
# The name description and maintainer
|
|
$data{$i} .= "<DT><B><A NAME=\"$name\"></A><A HREF=\"$loc.tar\">$name</A></B> ";
|
|
$data{$i} .= "<DD>$desc<BR><I><A HREF=\"$ldesc\">詳しい説明</A></I>";
|
|
$ownerurl = $owner;
|
|
$ownerurl =~ s/</</g;
|
|
$owenrurl =~ s/>/>/g;
|
|
$data{$i} .=
|
|
"<BR><I>保守担当者:</I> <A HREF=\"mailto:$ownerurl\">$owner</A>";
|
|
|
|
# If there are any dependencies, list them
|
|
if ($bdep ne "" || $rdep ne "") {
|
|
$data{$i} .= "<BR><I>必要なもの:</I> ";
|
|
@dep = split(/ /, "$bdep $rdep");
|
|
foreach $j (@dep) {
|
|
$data{$i} .= " <A HREF=\"##$j##.html#$j\">$j</A>,";
|
|
}
|
|
# remove the trailing comma
|
|
chop $data{$i};
|
|
}
|
|
|
|
# If the port is listed in more than one category, throw
|
|
# in some cross references
|
|
if ($#cat > 0) {
|
|
$data{$i} .= "<BR><EM>ここにも含まれています:</EM> ";
|
|
foreach $j (@cat) {
|
|
if ($j ne $i) {
|
|
if ($j eq $cat[0]) {
|
|
$data{$i} .= " <STRONG><A HREF=\"$j.html#$name\">\u$j</A></STRONG>,";
|
|
}
|
|
else {
|
|
$data{$i} .= " <A HREF=\"$j.html#$name\">\u$j</A>,";
|
|
}
|
|
}
|
|
}
|
|
# remove the trailing comma
|
|
chop($data{$i});
|
|
}
|
|
$data{$i} .= "<P></P></DD>\n"
|
|
}
|
|
|
|
# Add an entry to the master index
|
|
$master[$portnumber] =
|
|
"<!-- $name --><STRONG><A HREF=\"$cat[0].html#$name\">$name</A></STRONG> " .
|
|
" -- <EM>$desc</EM><BR>\n";
|
|
$portnumber++;
|
|
}
|
|
|
|
open(MOUTF, ">index.sgml");
|
|
|
|
&header(MOUTF, "FreeBSD Ports");
|
|
# print MOUTF "<!--#include virtual=\"./ports.inc\" -->\n";
|
|
print MOUTF "&blurb;";
|
|
print MOUTF "<hr><P>FreeBSD Ports コレクションには, 現時点で $portnumber 個の ports が提供されています. <br> <A HREF=\"$base/ports.tar.gz\">全ての $portnumber 個の ports を tar でまとめて gzip したもの</A> (およそ 4 メガバイト) をダウンロードするか, 以下の分類からたどってください:\n";
|
|
|
|
print MOUTF "<UL>\n";
|
|
|
|
@foos = sort(keys %stats);
|
|
foreach $key (@foos) {
|
|
# For translation
|
|
$subkey = "";
|
|
$subkey = " ($catsLANG{$key})"
|
|
if ($catsLANG{$key} ne '');
|
|
# For the master file...
|
|
print MOUTF
|
|
"<LI><A HREF=\"$key.html\">\u$key$subkey</A> <em>($stats{$key})</em></LI>";
|
|
|
|
# Create the category file
|
|
open(OUTF, ">$key.sgml");
|
|
$subkey = "";
|
|
$subkey = " / $catsLANG{$key}"
|
|
if ($catsLANG{$key} ne '');
|
|
&header(OUTF, "FreeBSD Ports: \u$key$subkey");
|
|
print OUTF "<DL>\n";
|
|
$d = join("\n", sort(split(/\n/, $data{$key})));
|
|
$d =~ s/##([^#]*)##/$catkey{$1}/g;
|
|
print OUTF $d;
|
|
print OUTF "</DL>\n";
|
|
&footer(OUTF, "<HR><A HREF=\"index.html\">Port の分類</A>" .
|
|
" -- <A HREF=\"master-index.html\">一覧</A><HR>");
|
|
close(OUTF);
|
|
|
|
}
|
|
print MOUTF "</UL>\n";
|
|
print MOUTF
|
|
"<UL><LI><A HREF=\"master-index.html\">$portnumber 個の ports 全てをアルファベット順に並べた一覧</A></LI></UL>\n";
|
|
&footer(MOUTF, "");
|
|
close(MOUTF);
|
|
|
|
# Create the master index file
|
|
open(MINDEX, ">master-index.sgml");
|
|
&header(MINDEX, "FreeBSD Ports コレクション 一覧");
|
|
print MINDEX "<P>\n";
|
|
print MINDEX sort @master;
|
|
print MINDEX "</P>";
|
|
&footer(MINDEX, "<HR><A HREF=\"index.html\">Port の分類</A><HR>");
|
|
close(MINDEX);
|
|
|
|
}
|