diff --git a/cobalt b/cobalt index 4967985..57cee53 100755 --- a/cobalt +++ b/cobalt @@ -1,7 +1,9 @@ #! /bin/sh -exec ./bot \ - -n cobalt \ - -u cobalt \ - -a ./cobalt-handler \ - socat STDIO OPENSSL:woozle.org:994,verify=0 +while true; do + ./bot \ + -n cobalt \ + -u cobalt \ + -a ./cobalt-handler \ + socat STDIO OPENSSL:woozle.org:6697,verify=0 +done diff --git a/cobalt-handler b/cobalt-handler index a7fe010..5ca66a0 100755 --- a/cobalt-handler +++ b/cobalt-handler @@ -5,7 +5,10 @@ forum=$1; export forum; shift prefix=$1; export prefix; shift command=$1; export command; shift # $* is now args -text=$(cat) + +# Remeber, read discards leading whitespace. If that's not okay, use +# text=$(cat) +read -r text join () { printf '\aJOIN %s\n' "$1" diff --git a/firebot b/firebot index 845ab66..b3d8512 100755 --- a/firebot +++ b/firebot @@ -1,24 +1,23 @@ #! /bin/sh -firebot () { - read cmd args - case $cmd in - calc) - printf "%s = " "$args" - echo "$args" | bc -l - ;; - units) - src=$(printf "%s" "$args" | sed 's/ ->.*//') - dst=$(printf "%s" "$args" | sed 's/.*-> //') - units -1 -v -- "$src" "$dst" - ;; - *) - exit 1 - ;; - esac -} - -echo "$1" | firebot +cmd=${1%% *} +args=${1#* } +case $cmd in + calc) + printf "%s = " "$args" + printf "%s\n" "$args" | bc -l + ;; + units) + src=${args% ->*} + dst=${args#*-> } + units -1 -v -- "$src" "$dst" + ;; + *) + exit 1 + ;; +esac + + diff --git a/infobot b/infobot index 591480f..05c670d 100755 --- a/infobot +++ b/infobot @@ -2,6 +2,8 @@ db=$1; shift text="$1" +cmd=${text%% *} +args=${text#* } lookup () { if ! cdb -q -m $db "$1"; then @@ -16,7 +18,7 @@ lookup () { fi } -case "$text" in +case "$cmd" in !h*) cat <%s\n" ${#key} ${#val} "$key" "$val"; cdb -d $db) | cdb -c $db echo "Okay, $sender, I added a factoid to $key" ;; !r*) - args=$(echo "$text" | cut -d\ -f2-) - key=$(printf "%s" "$args" | sed 's/ -=.*//') - val=$(printf "%s" "$args" | sed 's/.*-= //') + key=${args% -=*} + val=${args#*-= } re=":$key->.*$val" n=$(cdb -d $db | grep -c "$re") if [ $n -gt 0 ]; then @@ -56,8 +55,7 @@ EOF echo "Nothing matched, $sender." fi ;; - !forget\ *) - args=$(echo "$text" | cut -d\ -f2-) + !forget) cdb -d $db | grep -a -F -v ":$args->" | cdb -c $db echo "I removed all factoids from $args" ;; @@ -67,10 +65,10 @@ EOF "") exit 1 ;; - \\*) + ''*) echo "Someone's up to no good!" ;; - \\*) + '\'*) printf "%s" "${resp#\\}" ;; :*)