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