]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/Kernel.pl
Use newunits
[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     } else {
64         open(IN, $file);
65         while (<IN>) {
66             chop;
67             push(@old,$_);
68         }
69         close IN;
70     }
71
72     my @new;
73     for(my $i=0; $i<scalar(@old); $i++) {
74         next if ($old[$i] eq $now[$i]);
75         push(@new, $now[$i]);
76     }
77
78     if (scalar @now != scalar @old) {
79         &::DEBUG("kA: scalar mismatch; removing and exiting.");
80         unlink $file;
81         return;
82     }
83
84     if (!scalar @new) {
85         &::DEBUG("kA: no new kernels.");
86         return;
87     }
88
89     open(OUT, ">$file");
90     foreach (@now) {
91         print OUT "$_\n";
92     }
93     close OUT;
94
95     return @new;
96 }
97
98 1;