]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/Kernel.pl
fix Uncaught exception
[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 @now = &kernelGetInfo();
16     if (!scalar @now) {
17         &::msg($::who, "failed.");
18         return;
19     }
20
21     foreach (@now) {
22         &::msg($::who, $_);
23     }
24 }
25
26 sub kernelAnnounce {
27     my $file = "$::param{tempDir}/kernel.txt";
28     my @now  = &kernelGetInfo();
29     my @old;
30
31     if (!scalar @now) {
32         &::DEBUG("kA: failure to retrieve.");
33         return;
34     }
35
36     if (! -f $file) {
37         open(OUT, ">$file");
38         foreach (@now) {
39             print OUT "$_\n";
40         }
41         close OUT;
42
43         return;
44     } else {
45         open(IN, $file);
46         while (<IN>) {
47             chop;
48             push(@old,$_);
49         }
50         close IN;
51     }
52
53     my @new;
54     for(my $i=0; $i<scalar(@old); $i++) {
55         next if ($old[$i] eq $now[$i]);
56         push(@new, $now[$i]);
57     }
58
59     if (scalar @now != scalar @old) {
60         &::DEBUG("kA: scalar mismatch; removing and exiting.");
61         unlink $file;
62         return;
63     }
64
65     if (!scalar @new) {
66         &::DEBUG("kA: no new kernels.");
67         return;
68     }
69
70     open(OUT, ">$file");
71     foreach (@now) {
72         print OUT "$_\n";
73     }
74     close OUT;
75
76     return @new;
77 }
78
79 1;