chiark
/
gitweb
/
~mdw
/
ircbot
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bugfixes to privacy
[ircbot]
/
ledmodule.tcl
diff --git
a/ledmodule.tcl
b/ledmodule.tcl
index 8059f00332efdde0cdbe1e5a391a4bddba2edbb6..7c8158a247e81c306356194f68a7a125017e0dea 100644
(file)
--- 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
proc proc_dset {name argl body} {
proc dset_$name [concat d $argl] "
upvar #0 deviceset/\$d dd
-
if {
\[catch {
+
set returncode
\[catch {
$body
$body
- } emsg\]==1} {
+ } emsg\]
+ global errorInfo errorCode
+ if {\$returncode==1} {
reporterr \"error on \$d: \$emsg\"
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]} {
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
set cc($kind) {}
foreach gl [split $globs " "] {
if {![string length $gl]} continue
@@
-529,9
+536,11
@@
def_ucmd nodebug {
reporterr "debug disabled by $n"
}
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 {
}
def_ucmd who {
@@
-559,18
+568,18
@@
proc connected {} {
proc warn_pref {n} {
set nl [irctolower $n]
set l {}
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
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]} {
}
if {[llength $l]} {
- sendprivmsg $nl "LEDs are watching you: [join $l " "]"
+ sendprivmsg $nl "LEDs are watching on [\
+ join [lsort [array names wch]] ","]: [join $l " "]"
}
}
}
}