chiark / gitweb /
Add missing ucmdr {} {}
[ircbot] / irccore.tcl
index 04eccff67b8f8d992730bf7c2295e22a7281af5d..069743e54f046cfc938e192f803909289151ef82 100644 (file)
@@ -18,9 +18,6 @@ defset out_lag_lag 5000
 defset out_lag_very 25000
 defset ownping_every 300000
 
-defset marktime_min 300
-defset marktime_join_startdelay 5000
-
 proc manyset {list args} {
     foreach val $list var $args {
        upvar 1 $var my
@@ -143,6 +140,10 @@ proc sendout {command args} { eval sendout_priority [list 0 $command] $args }
 proc log {data} {
     puts $data
 }
+    
+proc log_intern {what data} {
+    puts "[clock seconds] ++ $what $data"
+}
 
 proc logerror {data} {
     log $data
@@ -166,7 +167,9 @@ proc bgerror {msg} {
 proc onread {args} {
     global sock nick calling_nick errorInfo errorCode line_org_endchar
 
-    if {[gets $sock line] == -1} { fail "EOF/error on input" }
+    if {[catch { gets $sock line } rv]} { fail "error on input: $rv" }
+    if {$rv == -1} { fail "EOF on input" }
+
     set line_org_endchar [string range $line end end]
     regsub -all "\[^ -\176\240-\376\]" $line ? line
     set org $line
@@ -213,6 +216,20 @@ proc onread {args} {
     }
 }
 
+proc catch_restoreei {body} {
+    global errorInfo errorCode
+    set l [list $errorInfo $errorCode]
+    catch { uplevel 1 $body }
+    manyset $l errorInfo errorCode
+}
+
+proc catch_logged {body} {
+    global errorInfo
+    if {[catch { uplevel 1 $body } emsg]} {
+       logerror "error (catch_logged): $emsg\n $errorInfo"
+    }
+}
+
 proc sendprivmsg {dest l} {
     foreach v [split $l "\n"] {
        sendout [expr {[ischan $dest] ? "PRIVMSG" : "NOTICE"}] $dest $v
@@ -227,6 +244,7 @@ proc msendprivmsg_delayed {delay dest ll} { after $delay [list msendprivmsg $des
 proc check_nick {n} {
     if {[regexp -nocase {[^][\\`_^{|}a-z0-9-]} $n]} { error "bad char in nick" }
     if {[regexp {^[-0-9]} $n]} { error "bad nick start" }
+    if {[string length $n] > 18} { error "nick too long" }
 }
 
 proc ischan {dest} {