3 # JF ¤Î Berkeley DB ¥Õ¥¡¥¤¥ë¤òÆɤó¤Ç¡¢¥ê¥¹¥È¤ò½ÐÎϤ¹¤ë¤¿¤á¤Î
5 # Fujiwara ¤µ¤ó¤Î½ñ¤¤¤¿¥¹¥¯¥ê¥×¥È¤ò¥Ù¡¼¥¹¤Ë¤·¤Æ¤¤¤ë¡£
7 # -d: ·ë¹ç¤¹¤ë Berkeley DB file ¤Î̾Á°
8 # -t: output format type (HTML or TEXT)
9 # -w: jf.css ¤ò»²¾È¤¹¤ë HTML ¤ò½ÐÎÏ (JF ¤Î Web Page ÍÑ INDEX ¤ò½ÐÎϤ¹¤ë¤È¤)
18 use jfadmlib qw(:DEFAULT :LOCKS);
21 getopts('t:d:c:p:w', \%opts);
22 die unless ($opts{'d'} || $opts{'t'});
23 my $database = $opts{'d'} if $opts{'d'};
24 my $type = $opts{'t'} if $opts{'t'};
26 ###############################################
27 # my @project = ('LILO-doc', 'LTGP');
28 my @project = ('LILO-doc');
30 'LILO-doc' => "Linux Install Learning Osaka",
31 'LTGP' => "Linux Total Guide Project",
33 ###############################################
36 $www = 1 if $opts{'w'};
41 my @t = &get_timelist(time);
45 # tie database object to hash, and lock it.
48 $H = tie(%index, 'DB_File', "$database", O_RDONLY, 0644, $DB_BTREE) or die;
53 if ($type eq "HTML") {
54 &print_html_header($www);
55 print "<H2><A NAME=\"JFLIST\">JF ¤Ë´ó£¤µ¤ì¤¿¥É¥¥å¥á¥ó¥È¤Î¥ê¥¹¥È</A></H2>\n";
57 print "JF ¤Ë´ó£¤µ¤ì¤¿¥É¥¥å¥á¥ó¥È¤Î¥ê¥¹¥È\n\n";
63 foreach my $p (@project) {
64 if ($type eq "HTML") {
65 print "<H3><A NAME=\"$p\">$p ($description->{$p}) ¤Îʸ½ñ</A></H3>\n";
68 print "\n== $p ($description->{$p}) ¤Îʸ½ñ == \n\n";
71 &pickup($p, \%index, $H, $type);
72 print "</DL>\n" if $type eq "HTML";
75 &print_html_footer($www,\@t) if $type eq "HTML";
84 # end of main procedure
89 my ($proj, $index, $H, $type) = @_;
90 foreach my $key (keys %$index) {
91 next unless $key =~ /\@\@ITEM$/;
92 my ($name, $dummy) = split("\@\@", $key);
93 my $KIND = get_ent($H, $name, "KIND");
94 next unless $KIND eq $proj;
95 my $CONT = get_ent($H, $name, "CONT");
96 my $JDAT = get_ent($H, $name, "JDAT");
97 my $TITL = get_ent($H, $name, "TITL");
99 $AUT[0] = get_ent($H, $name, "AUTH");
100 $AUT[1] = get_ent($H, $name, "AUT2");
101 $AUT[2] = get_ent($H, $name, "AUT3");
102 $TRN[0] = get_ent($H, $name, "TRNS");
103 $TRN[1] = get_ent($H, $name, "TRN2");
104 $TRN[2] = get_ent($H, $name, "TRN3");
105 foreach (@AUT, @TRN) {
109 $CONT = "unrecorded" unless $CONT;
110 $JDAT = "unrecorded" unless $JDAT;
111 if ($type eq "HTML") {
112 &print_html_data($name, $KIND, $CONT, $JDAT, $TITL, \@AUT, \@TRN);
114 &print_text_data($name, $KIND, $CONT, $JDAT, $TITL, \@AUT, \@TRN);
119 sub print_html_data {
120 my ($name, $KIND, $CONT, $JDAT, $TITL, $AUT, $TRN) = @_;
121 if (-f "$KIND/$name.html") {
122 print "<DT><A HREF=\"$KIND/$name.html\"><STRONG>$TITL</STRONG></A>\n";
124 print "<DT><STRONG>$TITL</STRONG>\n";
126 print " <SMALL>($JDAT)</SMALL>\n";
127 print " <DD>$CONT\n <SMALL>\n";
128 print " [<A HREF=\"$KIND/$name.txt\">¥Æ¥¥¹¥ÈÈÇ</A>]\n" if (-f "$KIND/$name.txt");
130 print " Ãø¼Ô: $AUT->[0]\n" if $AUT->[0];
131 print " , $AUT->[1]\n" if $AUT->[1];
132 print " , $AUT->[2]\n" if $AUT->[2];
133 print " ËÝÌõ: $TRN->[0]\n" if $TRN->[0];
134 print " , $TRN->[1]\n" if $TRN->[1];
135 print " , $TRN->[2]\n" if $TRN->[2];
136 print " </SMALL></DD>\n";
140 sub print_text_data {
141 my ($name, $KIND, $CONT, $JDAT, $TITL, $AUT, $TRN) = @_;
143 if (-f "$KIND/$name.txt") {
144 $filename = $name . ".txt";
145 } elsif (-f "$KIND/$name.sgml") {
146 $filename = $name . ".sgml";
150 Filename: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Updated: @<<<<<<<<<
152 Title: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
154 Description: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
159 print " Author: $AUT->[0]" if $AUT->[0];
160 print ", $AUT->[1]" if $AUT->[1];
161 print ", $AUT->[2]" if $AUT->[2];
162 print "\n" if $AUT->[0];
163 print " Translator: $TRN->[0]" if $TRN->[0];
164 print ", $TRN->[1]" if $TRN->[1];
165 print ", $TRN->[2]" if $TRN->[2];
166 print "\n" if $TRN->[0];
172 sub print_html_header {
174 print <<"-HEADER-ONE-";
175 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
176 "http://www.w3.org/TR/html4/loose.dtd">
177 <html lang="ja" dir="ltr">
179 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
180 <title>JF-INDEX: ³°Éô Project ¤«¤é¤Î´ó£ʸ½ñ</title>
181 <meta name="author" lang="en" content="JF Project Members">
182 <meta name="copyright" content="(C) 1998-2014 JF Project.">
183 <meta name="description" content="Linux ¤Ë´Ø¤¹¤ë²òÀâʸ½ñ¡¦FAQ ¤Ê¤É¤òºîÀ®¡¦¼ý½¸¡¦ÇÛÉÛ¤¹¤ë JF Project ¤Îʸ½ñ°ìÍ÷¤Ç¤¹¡£">
184 <meta name="keywords" content="JF,Linux,Japanese,ʸ½ñ,¥É¥¥å¥á¥ó¥È,ËÝÌõ,HOWTO,FAQ">
185 <link rev="made" href="mailto:jf\@listserv.linux.or.jp">
188 print " <LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"../jf.css\">\n"
191 print <<"-HEADER-TWO-";
199 print "<h1><a href=\"../index.html\">JF</a>: Index</h1>";
201 print "<h1>JF-INDEX</h1>";
206 sub print_html_footer {
208 print <<"-FOOTER-ONE-";
211 JF Project Á´È̤˴ؤï¤ë¤´°Õ¸«¤´Í×˾¤Ï
212 jf\@listserv.linux.or.jp ¤Þ¤Ç¤ª¤Í¤¬¤¤¤·¤Þ¤¹¡£
216 print <<"-FOOTER-WWW-" if $www;
217 <DIV CLASS="copyright">
218 <A HREF="../index.html">JF Project ¥á¥¤¥ó¥Ú¡¼¥¸¤Ø</A></BR>
222 print " <DIV CLASS=\"copyright\">\n" if $www;
223 print "¥ê¥¹¥È¹¹¿·Æü»þ: $t->[0]/$t->[1]/$t->[2] $t->[4]:$t->[5]:$t->[6]<BR>\n";
224 print " </DIV>\n" if $www;
225 print "\n</BODY>\n</HTML>\n";
230 my ($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst) = localtime($_[0]);
231 my @dow = ("Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat");
232 my $dow = $dow[$wday];
234 $month = 1 if $month == 13;
235 $month = "0" . $month if $month < 10;
236 $day = "0" . $day if $day < 10;
237 $hour = "0" . $hour if $hour < 10;
238 $min = "0" . $min if $min < 10;
239 $sec = "0" . $sec if $sec < 10;
241 return ($year, $month, $day, $dow, $hour, $min, $sec);
244 # cperl-indent-level: 4