1 # $Id: ldp.pm,v 1.12 2009/05/18 13:32:00 mdk Exp $
4 #################################################################
5 # LDP ¤Î "sorted_howtos.dat" ¤òÆɤ߹þ¤ó¤Ç¡¢¤¤¤¯¤Ä¤«¤Î¥ê¥¹¥È/¥Ï¥Ã¥·¥å¤Ø¤Î
6 # ¥ê¥Õ¥¡¥ì¥ó¥¹¤òÊÖ¤¹¡£"sorted_howtos.dat" ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë°Í¸¤·¤Æ¤¤¤ë¤Î¤Ç
7 # "sorted_howtos.dat" ¤¬ÂçÉý¤Ë½ñ¤´¹¤¨¤é¤ì¤ë¤è¤¦¤Ê¤³¤È¤Ë¤Ê¤Ã¤¿¤é¡¢¤³¤Î script
8 # ¤Î¤³¤Î´Ø¿ô¤Ï½ñ¤´¹¤¨¤ëɬÍפ¬¤¢¤ë¡£
12 # [0]: "sorted_howtos.dat" ¤Î¥Õ¥¡¥¤¥ë¤Î½êºß
14 # ÊÖ¤êÃͤȤʤë¤â¤Î¤Î¥ê¥¹¥È
16 # 1 : LDP ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ëʸ½ñ¤Î BASENAME (ʸ½ñ̾)¤Î¥ê¥¹¥È
17 # 2 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ãø¼Ô¥Ç¡¼¥¿¤Ø¤Î¥Ï¥Ã¥·¥å
18 # 3 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤ÎºÇ½ª¹¹¿·Æü»þ (YYYY/MM/DD)¤Ø¤Î¥Ï¥Ã¥·¥å
19 # 4 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î´Êñ¤ÊÀâÌÀʸ¤Ø¤Î¥Ï¥Ã¥·¥å
20 # 5 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î¼ïÎà¡£HOWTO or MINI
22 # ¤³¤Î¤¦¤Á¡¢¤³¤Î script ¤Ç¼ÂºÝ¤Ë¤Ä¤«¤Ã¤Æ¤¤¤ë¤Î¤Ï 1, 3, 5 ¤À¤±¤Ç¤¢¤ë¡£
23 # ¤È¤¤¤¦¤«¡¢4 ¤Ï¤â¤È¤â¤È¤Î¥Ç¡¼¥¿ (sorted_howtos.dat) ¤Ë̵¤¤¤«¤é
25 sub read_sorted_howtos{
28 my (@NAMES, %title, %update, %type, %docbook, %authors, %desc);
32 # @NAMES: ʸ½ñ̾¤ò³ÊǼ¤¹¤ë¥ê¥¹¥È
33 # %title: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î¥¿¥¤¥È¥ë¤Î¥Ï¥Ã¥·¥å (̤»ÈÍÑ)
34 # %update: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤ÎºÇ½ª¹¹¿·Æü»þ
35 # %type: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î¥¿¥¤¥× (HOWTO or MINI)
36 # %docbook: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¼ïÎà (d or l)
37 # %authors: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤ÎÃø¼Ô̾ (̤»ÈÍÑ & ¶õ)
38 # %desc: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î²òÀâ (̤»ÈÍÑ & ¶õ)
39 # $bn: ³Æ¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ëºÝ¤Ë¥¡¼¤È¤Ê¤ëʸ½ñ̾¤¬Æþ¤ë¥¹¥«¥é¡¼ÊÑ¿ô
41 open(LDP, $DATAFILE) or die "can't open $DATAFILE";
48 # sorted_howto.dat ¤Ç SUBTITLE ¤ò¸¡º÷¤¹¤ë¤È¤ï¤«¤ë¤±¤É¡¢
49 # ÊÑ¤Ê record ¤¬º®¤¸¤Ã¤Æ¤¤¤ë¡£¤³¤Î¤¿¤á¤Ë¥¨¥é¡¼¤Ë¤Ê¤ë ;_;
50 # ²óÈò¤¹¤ë¤¿¤á¤ËÉղä·¤¿Éôʬ¤¬¤³¤³¤«¤é ----
56 s/<SUBTITLE>.*<\/SUBTITLE>//;
58 # ---------------------------------------- ¤³¤³¤Þ¤Ç
60 my($update, $dummy, $title, $url) = split("\t");
62 my $docbook = "l"; # linuxdoc
63 if ($url =~ /\/index\.html$/ or $url =~ /\/$/) {
64 $docbook = "d"; # docbook
66 $url =~ s/\/index\.html$//;
69 my($bn) = ($url =~ m|([^/]+)$|);
72 next unless length $bn;
75 if ($url =~ /^HOWTO\/mini\//) {
79 ### These documents have been renamed. ############
81 $bn = 'Cipe+Masq' if $bn =~ /Cipe\+Masq/;
82 # $bn = 'Partition_LONGNAME'
83 # if $bn eq 'Partition-Mass-Storage-Dummies-Linux-HOWTO';
85 ################################################
90 $docbook{$bn} = $docbook;
92 # ¤¤¤Á¤ª¤¦¥Ì¥ëʸ»úÎó¤òÆþ¤ì¤Æ¤ª¤¯
97 $update{$bn} = $update;
100 return (\@NAMES, \%authors, \%update, \%desc, \%type, \%docbook);
104 # °Ê²¼¤Ï ¤¿¤Ö¤ó ¤â¤¦ »È¤ï¤Ê¤¤
109 # LDP ¤Î "HOWTO-INDEX.sgml" ¤òÆɤ߹þ¤ó¤Ç¡¢¤¤¤¯¤Ä¤«¤Î¥ê¥¹¥È/¥Ï¥Ã¥·¥å¤Ø¤Î
110 # ¥ê¥Õ¥¡¥ì¥ó¥¹¤òÊÖ¤¹¡£"HOWTO-INDEX.sgml" ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë°Í¸¤·¤Æ¤¤¤ë¤Î¤Ç
111 # "HOWTO-INDEX.sgml" ¤¬ÂçÉý¤Ë½ñ¤´¹¤¨¤é¤ì¤ë¤è¤¦¤Ê¤³¤È¤Ë¤Ê¤Ã¤¿¤é¡¢¤³¤Î script
112 # ¤Î¤³¤Î´Ø¿ô¤Ï½ñ¤´¹¤¨¤ëɬÍפ¬¤¢¤ë¡£
116 # [0]: "HOWTO-INDEX.sgml" ¤Î¥Õ¥¡¥¤¥ë¤Î½êºß
117 # [1]: "HOWTO-INDEX.sgml" ¤Ë¤Ï¡¢·î¤Î̾Á°¤Ë´ö¤Ä¤« typo ¤¬¤¢¤ë¡£³°Éô¤ÇÄêµÁ¤·¤¿
118 # ¥Ï¥Ã¥·¥å¤Ç¤½¤ì¤é¤Î̾Á°¤«¤é ·î¤Î¿ô»úÎó¤ËÊÑ´¹¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£
120 # ÊÖ¤êÃͤȤʤë¤â¤Î¤Î¥ê¥¹¥È
122 # 1 : LDP ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ëʸ½ñ¤Î BASENAME (ʸ½ñ̾)¤Î¥ê¥¹¥È
123 # 2 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ãø¼Ô¥Ç¡¼¥¿¤Ø¤Î¥Ï¥Ã¥·¥å
124 # 3 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤ÎºÇ½ª¹¹¿·Æü»þ (YYYY/MM/DD)¤Ø¤Î¥Ï¥Ã¥·¥å
125 # 4 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î´Êñ¤ÊÀâÌÀʸ¤Ø¤Î¥Ï¥Ã¥·¥å
126 # 5 : ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î¼ïÎà¡£HOWTO or MINI
128 # ¤³¤Î¤¦¤Á¡¢¤³¤Î script ¤Ç¼ÂºÝ¤Ë¤Ä¤«¤Ã¤Æ¤¤¤ë¤Î¤Ï 1, 3 ¤À¤±¤Ç¤¢¤ë¡£»Ä¤ê¤Ï
129 # Ê̤γÈÄ¥¤ËÌò¤ËΩ¤Ä¤³¤È¤â¤¢¤ë¤«¤â(?)
136 # LDP ¤Î HOWTO-INDEX.sgml ¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤Î typo ¤¬Â¸ºß¤·¤Æ¤¤¤ë¤Î¤Ç¡¢
137 # Ä̾ï¤Î·î/¿ô»úÊÑ´¹¥Ï¥Ã¥·¥å¤Ë¤½¤ì¤é¤ò²Ã¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
139 # sorted_howtos.dat ¤Ë°Ü¹Ô¤¬ºÑ¤ó¤À¤é¡¢¤³¤Î¥Æ¡¼¥Ö¥ë¤ÏÉÔÍ×
143 "Dececember" => "12",
157 my @categ = ("", "HOWTO", "MINI", "SPEC", "");
159 my (@NAMES, %titl, %url, %authors, %desc, %update, %type, $bn) = ();
163 # @NAMES: ʸ½ñ̾¤ò³ÊǼ¤¹¤ë¥ê¥¹¥È
164 # %titl: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î¥¿¥¤¥È¥ë¤Î¥Ï¥Ã¥·¥å
165 # %url: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î URL ¤Ø¤Î¥Ï¥Ã¥·¥å (̤»ÈÍÑ)
166 # %authors: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤ÎÃø¼Ô̾
167 # %desc: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤Î²òÀâ
168 # %update: ʸ½ñ̾¤ò¥¡¼¤È¤·¤¿Ê¸½ñ¤ÎºÇ½ª¹¹¿·Æü»þ
169 # $bn: ³Æ¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ëºÝ¤Ë¥¡¼¤È¤Ê¤ëʸ½ñ̾¤¬Æþ¤ë¥¹¥«¥é¡¼ÊÑ¿ô
171 open(LDP, $LDPINDEX) or die "can't open $LDPINDEX";
173 $class = 1 if /^<sect1>HOWTOs$/i;
174 $class = 2 if /^<sect1>mini-HOWTOs$/i;
175 $class = 3 if /^<sect1>Special HOWTOs$/i;
176 $class = 4 if /^<SECT1>Unmaintained HOWTOs and mini-HOWTOs$/i;
184 if (/^<item><htmlurl\s+url=\"(.*)\"\s*name=\"(.*)\">/) {
189 ### This document has been renamed. ############
190 $bn = "Visible-bell" if $bn eq "Visual-Bell";
191 $bn = "Cipe+Masq" if $bn =~ /Cipe\+Masq/;
192 ################################################
195 $type{$bn} = $categ[$class];
202 if ((($class == 1) && /^\s+(.*)[\.\s]+$/) ||
203 (($class == 2) && /^by\s+(.*)[\.\s]+$/)) {
209 if ($bn && /(.*)\s+Updated*\s+(.*[12]\d\d\d).*$/) {
213 my ($day, $month, $year);
214 my @p = split(" ", $2);
216 shift @p if /dosemu/;
218 if ($p[0] =~ /\d+/) {
220 $month = $monthref->{$p[1]};
222 } elsif ($p[1] =~ /^\d{1,2},$/) {
225 $month = $monthref->{$p[0]};
229 $month = $monthref->{$p[0]};
232 ################################
233 if ($bn eq "Printing-HOWTO") {
238 ################################
243 $update{$bn} = "$year/$month/$day";
244 } elsif ($bn && /\w+/) {
248 } elsif ($bn && /^$/) {
249 $update{$bn} = "(unknown)";
250 #####################################
251 if ($bn eq "Emacs-Beginner-HOWTO") {
252 $update{$bn} = "1999/10/14";
254 #####################################
256 if ($bn && $desc{$bn} && $update{$bn}) {
263 return (\@NAMES, \%authors, \%update, \%desc, \%type);