sub Dict {
my ($query) = @_;
-### return unless &main::loadPerlModule("IO::Socket");
+### return unless &::loadPerlModule("IO::Socket");
my $socket = new IO::Socket;
my @results;
# connect.
socket($socket, PF_INET, SOCK_STREAM, $proto) or return "error: socket: $!";
eval {
- alarm 15;
+ alarm 10;
connect($socket, sockaddr_in($port, inet_aton($server))) or return "error: connect: $!";
alarm 0;
};
$socket->autoflush(1); # required.
my $num;
- if ($query =~ /^(\d+)\s+/) {
+ if ($query =~ s/^(\d+)\s+//) {
$num = $1;
}
my $total = scalar @results;
- if (defined $num and ($num > $total or $num < 0)) {
- &msg($main::who, "error: choice in definition is out of range.");
+ if ($total == 0) {
+ $num = undef;
+ }
+
+ if (defined $num and ($num > $total or $num < 1)) {
+ &::msg($::who, "error: choice in definition is out of range.");
return;
}
# parse the results.
if ($total > 1) {
if (defined $num) {
- $retval = sprintf("[%d/%d] %s", $num, $total, $results[$num]);
+ $retval = sprintf("[%d/%d] %s", $num, $total, $results[$num-1]);
} else {
# suggested by larne and others.
my $prefix = "Dictionary '$query' ";
- $retval = &main::formListReply(1, $prefix, @results);
+ $retval = &::formListReply(1, $prefix, @results);
}
} elsif ($total == 1) {
$retval = "Dictionary '$query' ".$results[0];
}
}
- &main::performStrictReply($retval);
+ &::performStrictReply($retval);
}
sub Dict_Wordnet {
my ($socket, $query) = @_;
my @results;
- &main::status("Dict: asking Wordnet.");
+ &::status("Dict: asking Wordnet.");
print $socket "DEFINE wn \"$query\"\n";
my $def = "";
} elsif (/^\s+(\S+ )?(\d+)?: (.*)/) { # start of sub def.
my $text = $3;
$def =~ s/\s+$//;
-### &main::DEBUG("def => '$def'.");
+### &::DEBUG("def => '$def'.");
push(@results, $def) if ($def ne "");
$def = $text;
if (0) { # old non-fLR format.
$def = "$query $wordtype: $text" if (defined $text);
$wordtype = substr($1,0,-1) if (defined $1);
-### &main::DEBUG("_ => '$_'.") if (!defined $text);
+### &::DEBUG("_ => '$_'.") if (!defined $text);
}
} elsif (/^\s+(.*)/) {
}
}
- &main::status("Dict: wordnet: found ". scalar(@results) ." defs.");
+ &::status("Dict: wordnet: found ". scalar(@results) ." defs.");
return if (!scalar @results);
my ($socket,$query) = @_;
my @results;
- &main::status("Dict: asking Foldoc.");
+ &::status("Dict: asking Foldoc.");
print $socket "DEFINE foldoc \"$query\"\n";
my $firsttime = 1;
$string .= $_." ";
}
- &main::status("Dict: foldoc: found ". scalar(@results) ." defs.");
+ &::status("Dict: foldoc: found ". scalar(@results) ." defs.");
return if (!scalar @results);
pop @results; # last def is date of entry.