]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/Kernel.pl
avoid reassigning to temp upon decode_utf8
[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     if ($::who =~ /^\#/) {
23        &::msg($::who, "No, I won't harass the entire channel."); 
24        return undef;
25     }
26
27     foreach $line (@now) {
28         $line =~ s/The latest //;
29         $line =~ s/version //;
30         $line =~ s/of //;
31         $line =~ s/the //;
32         $line =~ s/Linux //;
33         $line =~ s/kernel //;
34         $line =~ s/tree //;
35         $line =~ s/ for stable//;
36         $line =~ s/ to stable kernels//;
37         $line =~ s/ for 2.4//;
38         $line =~ s/ for 2.2//;
39         $line =~ s/ is: */: /;
40         $retval .= ', ' . $line;
41     }
42     &::performStrictReply($retval);
43 }
44
45 sub kernelAnnounce {
46     my $file = "$::param{tempDir}/kernel.txt";
47     my @now  = &kernelGetInfo();
48     my @old;
49
50     if ( !scalar @now ) {
51         &::DEBUG('kA: failure to retrieve.');
52         return;
53     }
54
55     if ( !-f $file ) {
56         open( OUT, ">$file" );
57         foreach (@now) {
58             print OUT "$_\n";
59         }
60         close OUT;
61
62         return;
63     }
64     else {
65         open( IN, $file );
66         while (<IN>) {
67             chop;
68             push( @old, $_ );
69         }
70         close IN;
71     }
72
73     my @new;
74     for ( my $i = 0 ; $i < scalar(@old) ; $i++ ) {
75         next if ( $old[$i] eq $now[$i] );
76         push( @new, $now[$i] );
77     }
78
79     if ( scalar @now != scalar @old ) {
80         &::DEBUG("kA: scalar mismatch; removing and exiting.");
81         unlink $file;
82         return;
83     }
84
85     if ( !scalar @new ) {
86         &::DEBUG("kA: no new kernels.");
87         return;
88     }
89
90     open( OUT, ">$file" );
91     foreach (@now) {
92         print OUT "$_\n";
93     }
94     close OUT;
95
96     return @new;
97 }
98
99 1;
100
101 # vim:ts=4:sw=4:expandtab:tw=80