X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FModules%2FDict.pl;h=a82fa000c7a6830d5e40d7127e1c8ea0d9f36bd7;hb=15990d3ecd1f7652d5d8e3ea58e11809e7db0cba;hp=9c49a5bde7d94a96874fee637fac355cf3804ff1;hpb=8a79d430aef83402420b5a8378e78cfa01051c93;p=infobot.git diff --git a/src/Modules/Dict.pl b/src/Modules/Dict.pl index 9c49a5b..a82fa00 100644 --- a/src/Modules/Dict.pl +++ b/src/Modules/Dict.pl @@ -4,6 +4,8 @@ # Version: v0.6c (20000924). # Created: 19990914. # +# see http://luetzschena-stahmeln.de/dictd/ +# for a list of dict servers package Dict; @@ -12,17 +14,16 @@ use strict; #use vars qw(PF_INET); -my $server = "dict.org"; # need a specific host||ip. - -###local $SIG{ALRM} = sub { die "alarm\n" }; +# need a specific host||ip. +my $server = "dict.org"; sub Dict { my ($query) = @_; # return unless &::loadPerlModule("IO::Socket"); - my $socket = new IO::Socket; my $port = 2628; my $proto = getprotobyname('tcp'); my @results; + my $retval; for ($query) { s/^[\s\t]+//; @@ -31,17 +32,19 @@ sub Dict { } # connect. -# TODO: make strict-safe constants... so we can defer IO::Socket load. + # TODO: make strict-safe constants... so we can defer IO::Socket load. + my $socket = new IO::Socket; socket($socket, PF_INET, SOCK_STREAM, $proto) or return "error: socket: $!"; eval { + local $SIG{ALRM} = sub { die "alarm" }; alarm 10; - connect($socket, sockaddr_in($port, inet_aton($server))) or return "error: connect: $!"; + connect($socket, sockaddr_in($port, inet_aton($server))) or die "error: connect: $!"; alarm 0; }; - my $retval; - if ($@ && $@ ne "alarm\n") { # failure. - $retval = "i could not get info from dict.org"; + if ($@) { + # failure. + $retval = "i could not get info from $server '$@'"; } else { # success. $socket->autoflush(1); # required. @@ -102,6 +105,7 @@ sub Dict_Wordnet { chop; # remove \n chop; # remove \r + &::DEBUG("got '$_'"); if ($_ eq ".") { # end of def. push(@results, $def); } elsif (/^250 /) { # stats. @@ -148,6 +152,7 @@ sub Dict_Foldoc { chop; # remove \n chop; # remove \r + &::DEBUG("got '$_'"); return if /^552 /; # no match. if ($firsttime) {