From ed65193529a3ed9d5e5f9ecf7307d77b7e470cef Mon Sep 17 00:00:00 2001 From: Elijah Perrault Date: Fri, 21 Jan 2011 00:39:49 -0700 Subject: [PATCH] * server:nspass removed. server:idstr added. * Changed the way we parse strings to support multi-word strings in config values. --- doc/CHANGELOG | 3 +++ src/Parser/Config.pm | 31 +++++++++++++++++++++++++++++-- src/Parser/IRC.pm | 6 +++--- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/doc/CHANGELOG b/doc/CHANGELOG index bd6774b..c242e4f 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -3,6 +3,9 @@ Auto IRC Bot 3.0: Change Log 3.0 Indev ================================================================== + * server:nspass removed. server:idstr added. + * Changed the way we parse strings to support multi-word + strings in config values. * Added server:nspass to config options. Will be replaced in the future by idstr. * Parse NICK. diff --git a/src/Parser/Config.pm b/src/Parser/Config.pm index 5ba186e..3042ead 100644 --- a/src/Parser/Config.pm +++ b/src/Parser/Config.pm @@ -67,9 +67,36 @@ sub parse next; } my $param = $ebuf[1]; - $param =~ s/"//g; - my @param = ($param); + if (substr($param, 0, 1) eq '"' and substr($param, length($param) - 1, 1) ne '"') { + # Multi-word string. + $param = substr($param, 1); + + for (my $i = 2; $i < scalar(@ebuf); $i++) { + if (substr($ebuf[$i], length($ebuf[$i]) - 1, 1) eq '"') { + $param .= " ".substr($ebuf[$i], 0, length($ebuf[$i]) - 1); + last; + } + else { + $param .= " ".$ebuf[$i]; + } + } + } + elsif (substr($param, 0, 1) eq '"' and substr($param, length($param) - 1, 1) eq '"') { + # Single-word string. + $param = substr($param, 1, length($ebuf[1]) - 2); + } + elsif ($param =~ m/[0-9]/) { + # Numeric. + $param =~ s/[^0-9.]//g; + } + else { + # Garbage. + next; + } + + my @param = ($param); + unless (!$blk) { # We're inside a block. if ($blk =~ m/@@@/) { diff --git a/src/Parser/IRC.pm b/src/Parser/IRC.pm index 0c1dbca..7fd6a28 100644 --- a/src/Parser/IRC.pm +++ b/src/Parser/IRC.pm @@ -57,9 +57,9 @@ sub num001 $got_001{$svr} = 1; # Identify string. - unless (!conf_get("server:$svr:nspass")) { - my $nspass = (conf_get("server:$svr:nspass"))[0][0]; - Auto::socksnd($svr, "PRIVMSG NickServ :IDENTIFY $nspass"); + unless (!conf_get("server:$svr:idstr")) { + my $idstr = (conf_get("server:$svr:idstr"))[0][0]; + Auto::socksnd($svr, $idstr); } # Get the auto-join from the config.