3 # $Id: kdoc-in-progress.pl,v 1.16 2008/10/28 14:01:52 mdk Exp $
5 # kernel docs ¤ÎͽÌóɽ¤òºî¤ë¥¹¥¯¥ê¥×¥È¡£¤À¤µ¤¤(¾Ð)
9 ##########################################################
13 if (@ARGV != 3) {die "Wrong argument count.\n"};
15 my $VER_LIST = $ARGV[0];
16 my $RSV_LIST = $ARGV[1];
17 my $KDOC_DIR = $ARGV[2];
32 my @exclusion_list = (
36 'DocBook/dvb/.gitignore',
37 'DocBook/v4l/.gitignore',
38 'accounting/.gitignore',
39 'auxdisplay/.gitignore',
40 'connector/.gitignore',
43 'networking/.gitignore',
44 'networking/timestamping/.gitignore',
47 'video4linux/.gitignore',
49 'watchdog/src/.gitignore',
51 'DocBook/stylesheet.xsl',
52 'DocBook/parport-multi.fig',
53 'DocBook/parport-share.fig',
54 'DocBook/parport-structure.fig',
55 'DocBook/procfs_example.c',
56 'input/interactive.fig',
60 'networking/ip_masq/ip_masq-API-ex.c');
62 ##########################################################
64 my %kdoc = &get_version_status($VER_LIST);
66 my %rl = &get_reserved_status($RSV_LIST);
68 open IL, "find $KDOC_DIR -name \"*.info\" |";
71 my @info = &get_info_status($_);
76 ${$kdoc{$name}}{t_ver} = $bver;
77 ${$kdoc{$name}}{tdate} = $tdat;
80 foreach my $n (sort keys %kdoc) {
81 foreach my $e (@exclusion_dir) {
88 foreach my $n (@exclusion_list) {
92 print " ̾Á° ºÇ¿·ÈÇ ¸½ËÝÌõ ËÝÌõÆüÉÕ ¾õ¶·\n";
93 print "---------------------------------------------- ------ -------- ---------- --\n";
94 foreach my $n (sort keys %kdoc){
95 my $o_ver = ${$kdoc{$n}}{o_ver};
96 my $t_ver = ${$kdoc{$n}}{t_ver};
97 my $date = ${$kdoc{$n}}{tdate};
99 my $wdate = ${$rl{$n}}{date};
100 my $wstat = lc(${$rl{$n}}{stat});
101 my $trans = ${$rl{$n}}{trans};
103 my $smark = $status_mark{ng};
105 if ($t_ver ne undef) {
106 if (&cmp_version($o_ver, $t_ver) <= 0) {
107 $smark = $status_mark{good};
109 $smark = $status_mark{ok};
113 if ($smark ne $status_mark{good}){
114 if ($wstat =~ /^reserved/) {
115 $smark = $status_mark{reserved};
117 } elsif ($wstat =~ /^draft/) {
118 $smark = $status_mark{draft};
123 printf("%-48s%-8s%-10s%-11s%2s\n", $n, $o_ver, $t_ver, $date, $smark);
124 # if ($trans ne undef){printf("%63s\n", $trans);}
129 ##########################################################
132 sub get_version_status {
134 # ¥Ð¡¼¥¸¥ç¥ó¥ê¥¹¥È¤òÆɤ߹þ¤ó¤Ç¥Ï¥Ã¥·¥å¤Ø¤Î¥Ï¥Ã¥·¥å¤òºî¤Ã¤ÆÊÖ¤¹¡£
136 my $VER_LIST = $_[0];
137 my (%kdoc, $version, $name);
138 open VL, $VER_LIST or die "cannot open $VER_LIST\n";
142 ($version, $name) = split;
143 ${$kdoc{$name}}{o_ver} = $version;
149 sub get_reserved_status {
151 # ͽÌó¥ê¥¹¥È¤òÆɤ߹þ¤ó¤Ç¡¢¥Ï¥Ã¥·¥å¤Ø¤Î¥Ï¥Ã¥·¥å¤òÊÖ¤¹¡£
153 my $RESERVE_INDEX = $_[0];
156 open RES, $RESERVE_INDEX or die "cant open $RESERVE_INDEX";
163 if (/^NAME:\s*(.*)$/) {
165 $name =~ s/\s*$//; next;
167 if ($name && /^TRNS:\s*(.*)$/) {
168 ${$rl{$name}}{trans} = $1;
169 ${$rl{$name}}{trans} =~ s/\s*$//; next;
171 if ($name && /^PDAT:\s*(.*)$/) {
172 ${$rl{$name}}{date} = $1;
173 ${$rl{$name}}{date} =~ s/\s*$//; next;
175 if ($name && /^NOTE:\s*(.*)$/) {
176 ${$rl{$name}}{note} = $1;
177 ${$rl{$name}}{note} =~ s/\s*$//; next;
179 if ($name && /^STAT:\s*(.*)\s*$/) {
180 ${$rl{$name}}{stat} = $1;
181 ${$rl{$name}}{stat} =~ s/\s*$//; next;
190 # info ¥Õ¥¡¥¤¥ë¤ò¤Ê¤á¤Æ (¥Õ¥¡¥¤¥ë̾, ¥Ð¡¼¥¸¥ç¥ó, ÆüÉÕ) ¤òÊÖ¤¹¡£
192 my $INFOFILE = $_[0];
193 my ($name, $bver, $tdat);
195 open INFO, $INFOFILE or die "cannot open $INFOFILE\n";
198 if (/^NAME:\s*(.*)$/) {
200 $name =~ s/\s*$//; next;
202 if (/^BVER:\s*(.*)$/) {
204 $bver =~ s/\s*$//; next;
206 if (/^JDAT:\s*(.*)$/) {
208 $tdat =~ s/\s*$//; next;
212 return ($name, $bver, $tdat);
217 # ¥Ð¡¼¥¸¥ç¥ó¤ÎÈæ³Ó´Ø¿ô¡£ $_[0] <=> $_[1] ¤Ë¤è¤Ã¤Æ -1,0,1
219 (my $a_major, my $a_minor, my $a_patch) = split /\./, $_[0];
220 (my $b_major, my $b_minor, my $b_patch) = split /\./, $_[1];
221 $a_major <=> $b_major || $a_minor <=> $b_minor || $a_patch <=> $b_patch;