]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/Kernel.pl
* Missed DebianBugs.pl in the previous merge
[infobot.git] / src / Modules / Kernel.pl
1 #
2 # Kernel.pl: Frontend to linux.kernel.org.
3 #    Author: dms
4 #   Version: v0.3 (19990919).
5 #   Created: 19990729
6 #
7
8 package Kernel;
9
10 sub kernelGetInfo {
11     return &::getURL("http://www.kernel.org/kdist/finger_banner");
12 }
13
14 sub Kernel {
15     my $retval = 'Linux kernel versions';
16     my @now    = &kernelGetInfo();
17     if ( !scalar @now ) {
18         &::msg( $::who, "failed." );
19         return;
20     }
21
22     foreach $line (@now) {
23         $line =~ s/The latest //;
24         $line =~ s/version //;
25         $line =~ s/of //;
26         $line =~ s/the //;
27         $line =~ s/Linux //;
28         $line =~ s/kernel //;
29         $line =~ s/tree //;
30         $line =~ s/ for stable//;
31         $line =~ s/ to stable kernels//;
32         $line =~ s/ for 2.4//;
33         $line =~ s/ for 2.2//;
34         $line =~ s/ is: */: /;
35         $retval .= ', ' . $line;
36     }
37     &::performStrictReply($retval);
38 }
39
40 sub kernelAnnounce {
41     my $file = "$::param{tempDir}/kernel.txt";
42     my @now  = &kernelGetInfo();
43     my @old;
44
45     if ( !scalar @now ) {
46         &::DEBUG('kA: failure to retrieve.');
47         return;
48     }
49
50     if ( !-f $file ) {
51         open( OUT, ">$file" );
52         foreach (@now) {
53             print OUT "$_\n";
54         }
55         close OUT;
56
57         return;
58     }
59     else {
60         open( IN, $file );
61         while (<IN>) {
62             chop;
63             push( @old, $_ );
64         }
65         close IN;
66     }
67
68     my @new;
69     for ( my $i = 0 ; $i < scalar(@old) ; $i++ ) {
70         next if ( $old[$i] eq $now[$i] );
71         push( @new, $now[$i] );
72     }
73
74     if ( scalar @now != scalar @old ) {
75         &::DEBUG("kA: scalar mismatch; removing and exiting.");
76         unlink $file;
77         return;
78     }
79
80     if ( !scalar @new ) {
81         &::DEBUG("kA: no new kernels.");
82         return;
83     }
84
85     open( OUT, ">$file" );
86     foreach (@now) {
87         print OUT "$_\n";
88     }
89     close OUT;
90
91     return @new;
92 }
93
94 1;
95
96 # vim:ts=4:sw=4:expandtab:tw=80