OSDN Git Service

1bf3cde07f0518031bd81523028dfa55571665d5
[linuxjf/JF.git] / www / bin / kdoc-in-progress.pl
1 #!/usr/bin/perl
2 #
3 # $Id: kdoc-in-progress.pl,v 1.16 2008/10/28 14:01:52 mdk Exp $
4 #
5 # kernel docs ¤ÎͽÌóɽ¤òºî¤ë¥¹¥¯¥ê¥×¥È¡£¤À¤µ¤¤(¾Ð)
6 #
7 use strict;
8
9 ##########################################################
10 #
11 #
12
13 if (@ARGV != 3) {die "Wrong argument count.\n"};
14
15 my $VER_LIST = $ARGV[0];
16 my $RSV_LIST = $ARGV[1];
17 my $KDOC_DIR = $ARGV[2];
18
19 my %status_mark = (
20      'ng' => '¡ß',
21      'ok' => '¡û',
22      'good' => '¡ý',
23
24      'reserved' => '£Ò',
25      'draft' => '£Ä');
26
27 my @exclusion_dir = (
28      'ja_JP',
29      'ko_KR',
30      'zh_CN');
31
32 my @exclusion_list = (
33     'Configure.help',
34     '.gitignore',
35     'DocBook/.gitignore',
36     'DocBook/dvb/.gitignore',
37     'DocBook/v4l/.gitignore',
38     'accounting/.gitignore',
39     'auxdisplay/.gitignore',
40     'connector/.gitignore',
41     'ia64/.gitignore',
42     'lguest/.gitignore',
43     'networking/.gitignore',
44     'networking/timestamping/.gitignore',
45     'pcmcia/.gitignore',
46     'spi/.gitignore',
47     'video4linux/.gitignore',
48     'vm/.gitignore',
49     'watchdog/src/.gitignore',
50     'DocBook/Makefile',
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',
57     'input/shape.fig',
58     'dontdiff',
59     'logo.gif',
60     'networking/ip_masq/ip_masq-API-ex.c');
61
62 ##########################################################
63
64 my %kdoc = &get_version_status($VER_LIST);
65
66 my %rl = &get_reserved_status($RSV_LIST);
67
68 open IL, "find $KDOC_DIR -name \"*.info\" |";
69 while (<IL>){
70     chomp;
71     my @info = &get_info_status($_);
72     my $name = $info[0];
73     my $bver = $info[1];
74     my $tdat = $info[2];
75
76     ${$kdoc{$name}}{t_ver} = $bver;
77     ${$kdoc{$name}}{tdate} = $tdat;
78 }
79
80 foreach my $n (sort keys %kdoc) {
81     foreach my $e (@exclusion_dir) {
82         if ($n =~ /^$e/) {
83             delete $kdoc{$n};
84         }
85     }
86 }
87
88 foreach my $n (@exclusion_list) {
89     delete $kdoc{$n};
90 }
91
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};
98
99     my $wdate = ${$rl{$n}}{date};
100     my $wstat = lc(${$rl{$n}}{stat});
101     my $trans = ${$rl{$n}}{trans};
102
103     my $smark = $status_mark{ng};
104
105     if ($t_ver ne undef) {
106         if (&cmp_version($o_ver, $t_ver) <= 0) {
107             $smark = $status_mark{good};
108         } else {
109             $smark = $status_mark{ok};
110         }
111     }
112
113     if ($smark ne $status_mark{good}){
114         if ($wstat =~ /^reserved/) {
115             $smark = $status_mark{reserved};
116             $date = $wdate;
117         } elsif ($wstat =~ /^draft/) {
118             $smark = $status_mark{draft};
119             $date = $wdate;
120         }
121     }
122
123     printf("%-48s%-8s%-10s%-11s%2s\n", $n, $o_ver, $t_ver, $date, $smark);
124 #    if ($trans ne undef){printf("%63s\n", $trans);}
125 }
126
127 exit;
128
129 ##########################################################
130 # subroutines
131 #
132 sub get_version_status {
133 #
134 # ¥Ð¡¼¥¸¥ç¥ó¥ê¥¹¥È¤òÆɤ߹þ¤ó¤Ç¥Ï¥Ã¥·¥å¤Ø¤Î¥Ï¥Ã¥·¥å¤òºî¤Ã¤ÆÊÖ¤¹¡£
135 #
136     my $VER_LIST = $_[0];
137     my (%kdoc, $version, $name);
138     open VL, $VER_LIST or die "cannot open $VER_LIST\n";
139     while (<VL>){
140         chomp;
141         if (m/^#/) {next};
142         ($version, $name) = split;
143         ${$kdoc{$name}}{o_ver} = $version;
144     }
145     close VL;
146     return %kdoc;
147 }
148
149 sub get_reserved_status {
150 #
151 # Í½Ìó¥ê¥¹¥È¤òÆɤ߹þ¤ó¤Ç¡¢¥Ï¥Ã¥·¥å¤Ø¤Î¥Ï¥Ã¥·¥å¤òÊÖ¤¹¡£
152 #
153   my $RESERVE_INDEX = $_[0];
154   my (%rl, $name);
155
156   open RES, $RESERVE_INDEX  or die "cant open $RESERVE_INDEX";
157   while (<RES>) {
158     chomp;
159     if (/^$/ && $name) {
160       $name = "";
161       next;
162     }
163     if (/^NAME:\s*(.*)$/) {
164       $name = $1;
165       $name =~ s/\s*$//; next;
166     }
167     if ($name && /^TRNS:\s*(.*)$/) {
168       ${$rl{$name}}{trans} = $1;
169       ${$rl{$name}}{trans} =~ s/\s*$//; next;
170     }
171     if ($name && /^PDAT:\s*(.*)$/) {
172       ${$rl{$name}}{date} = $1;
173       ${$rl{$name}}{date} =~ s/\s*$//; next;
174     }
175     if ($name && /^NOTE:\s*(.*)$/) {
176       ${$rl{$name}}{note} = $1;
177       ${$rl{$name}}{note} =~ s/\s*$//; next;
178     }
179     if ($name && /^STAT:\s*(.*)\s*$/) {
180       ${$rl{$name}}{stat} = $1;
181       ${$rl{$name}}{stat} =~ s/\s*$//; next;
182     }
183   }
184   close RES;
185   return %rl;
186 }
187
188 sub get_info_status{
189 #
190 # info ¥Õ¥¡¥¤¥ë¤ò¤Ê¤á¤Æ (¥Õ¥¡¥¤¥ë̾, ¥Ð¡¼¥¸¥ç¥ó, ÆüÉÕ) ¤òÊÖ¤¹¡£
191 #
192     my $INFOFILE = $_[0];
193     my ($name, $bver, $tdat);
194
195     open INFO, $INFOFILE or die "cannot open $INFOFILE\n";
196     while(<INFO>){
197         chomp;
198         if (/^NAME:\s*(.*)$/) {
199             $name = $1;
200             $name =~ s/\s*$//; next;
201         }
202         if (/^BVER:\s*(.*)$/) {
203             $bver = $1;
204             $bver =~ s/\s*$//; next;
205         }
206         if (/^JDAT:\s*(.*)$/) {
207             $tdat = $1;
208             $tdat =~ s/\s*$//; next;
209         }
210     }
211     close INFO;
212     return ($name, $bver, $tdat);
213 }
214
215 sub cmp_version{
216 #
217 # ¥Ð¡¼¥¸¥ç¥ó¤ÎÈæ³Ó´Ø¿ô¡£ $_[0] <=> $_[1] ¤Ë¤è¤Ã¤Æ -1,0,1
218 #
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;
222 }