From 03106fe03acf49fdce3de7fb61b8d656168480f3 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 10 Jun 2002 01:39:42 +0000 Subject: [PATCH] Bugfixes to privacy --- ledmodule.tcl | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/ledmodule.tcl b/ledmodule.tcl index 8059f00..7c8158a 100644 --- a/ledmodule.tcl +++ b/ledmodule.tcl @@ -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 " "]" } } -- 2.11.0