chiark / gitweb /
Bugfixes to privacy
authorijackson <ijackson>
Mon, 10 Jun 2002 01:39:42 +0000 (01:39 +0000)
committerijackson <ijackson>
Mon, 10 Jun 2002 01:39:42 +0000 (01:39 +0000)
ledmodule.tcl

index 8059f00332efdde0cdbe1e5a391a4bddba2edbb6..7c8158a247e81c306356194f68a7a125017e0dea 100644 (file)
@@ -210,10 +210,16 @@ proc_mon destroy {} {
 proc proc_dset {name argl body} {
     proc dset_$name [concat d $argl] "
     upvar #0 deviceset/\$d dd
-    if {\[catch {
+    set returncode \[catch {
         $body
-    } emsg\]==1} {
+    } emsg\]
+    global errorInfo errorCode
+    if {\$returncode==1} {
        reporterr \"error on \$d: \$emsg\"
+    } elseif {\$returncode==2} {
+       return \$emsg
+    } else {
+       return -code \$returncode -errorinfo \$errorInfo -errorcode \$errorCode
     }"
 }
 
@@ -302,8 +308,9 @@ proc reloaduser {username} {
            set l $contin
            set contin {}
            if {[regexp {^\#} $l]} {
-           } elseif {[regexp {^nick\s+(ignore|nopresence|prefer)\s+(\S.*)$} \
-                   $l dummy kind globs]} {
+           } elseif {![regexp {\S} $l]} {
+           } elseif {[regexp {^nick\s+(ignore|nopresence|prefer)\s+(.*)$} \
+                   "$l " dummy kind globs]} {
                set cc($kind) {}
                foreach gl [split $globs " "] {
                    if {![string length $gl]} continue
@@ -529,9 +536,11 @@ def_ucmd nodebug {
     reporterr "debug disabled by $n"
 }
 
-proc_dset visibledest {
-    regexp {^[^:]*\:[^:]*} $dd(group) dest
-    return $dest
+proc_dset visibledest {} {
+    regsub {\:[^:]*/} $d/ { } p
+    regsub {^([^:]+)\:\d+\:} $p {\1, } p
+    regsub { $} $p {} p
+    return $p
 }
 
 def_ucmd who {
@@ -559,18 +568,18 @@ proc connected {} {
 proc warn_pref {n} {
     set nl [irctolower $n]
     set l {}
-    foreach m [list_objs monitor] {
-       upvar #0 monitor/$m mm
-       if {![mon_nick_is $mm(prefer) $n]} continue
-       append l $m
-    }
     foreach d [list_objs deviceset] {
        upvar #0 deviceset/$d dd
-       if {[lsearch $l $dd(monname)]==-1} continue
-       append l [dset_visibledest $d]
+       set m $dd(monname)
+       upvar #0 monitor/$m mm
+       if {![info exists mm(prefer)]} continue
+       if {![mon_nick_is $mm(prefer) $nl]} continue
+       foreach ch $mm(chans) { set wch($ch) 1 }
+       lappend l [dset_visibledest $d]
     }
     if {[llength $l]} {
-       sendprivmsg $nl "LEDs are watching you: [join $l " "]"
+       sendprivmsg $nl "LEDs are watching on [\
+               join [lsort [array names wch]] ","]: [join $l " "]"
     }
 }