diff options
Diffstat (limited to 'scripts/kernel.pl')
| -rw-r--r-- | scripts/kernel.pl | 64 | 
1 files changed, 64 insertions, 0 deletions
| diff --git a/scripts/kernel.pl b/scripts/kernel.pl new file mode 100644 index 0000000..048dd1d --- /dev/null +++ b/scripts/kernel.pl @@ -0,0 +1,64 @@ +# Fetches the version(s) of the latest Linux kernel(s). + +# /kernel + +use strict; +use Irssi; +use IO::Socket; + +use vars qw($VERSION %IRSSI); + +$VERSION = '0.9'; +%IRSSI = ( +    authors     => 'Johan "Ion" Kiviniemi', +    contact     => 'ion at hassers.org', +    name        => 'Kernel', +    description => 'Fetches the version(s) of the latest Linux kernel(s).', +    license     => 'Public Domain', +    url         => 'http://ion.amigafin.org/irssi/', +    changed     => 'Tue Mar 12 22:20 EET 2002', +); + +sub finger($$) { +    # Yes, Net::Finger is already done and i'm reinventing the wheel. +    my ($user, $host) = @_; +    my $buffer; +    if (my $socket = IO::Socket::INET->new( +            PeerHost => $host, +            PeerPort => 'finger(79)', +            Proto    => 'tcp', +        )) +    { +        if (syswrite $socket, "$user\n") { +            unless (sysread $socket, $buffer, 1024) { +                # Should i use $! here? +                Irssi::print( +                    "Unable to read from the socket: $!", +                    Irssi::MSGLEVEL_CLIENTERROR +                ); +            } +        } else { +            # ..and here? +            Irssi::print( +                "Unable to write to the socket: $!", +                Irssi::MSGLEVEL_CLIENTERROR +            ); +        } +    } else { +        Irssi::print("Connection to $host failed: $!", +            Irssi::MSGLEVEL_CLIENTERROR); +    } +    return $buffer; +} + +sub get_version { +    my @version; +    if (my $finger = finger("", "finger.kernel.org")) { +        # The magic of the regexps :) +        @version = $finger =~ /:\s*(\S+)\s*$/gm; +        # Modify this to do whatever you want. +        Irssi::print("@version"); +    } +} + +Irssi::command_bind('kernel_version', 'get_version'); | 
