return [showintervalsecs/[opt timeformat] $howlong $abbrev]
}
+proc formatsf {pfx value} {
+ foreach {min format} { 100 %.0f 10 %.1f 0 %.2f} {
+ set fval [format $format $value]
+ if {$fval < $min} continue
+ return [format "$fval${pfx}" $value]
+ }
+}
+
+proc showintervalsecs/beat {howlong abbrev} {
+ # We split in two to avoid overflow problems.
+ if {$howlong < 86 } {
+ # mB's
+ set pfx mB
+ return [format "%.0fmB" [expr {round($howlong * 1.157)*10} ]]
+ } else {
+ if {$howlong < 86400 } {
+ # B's
+ set pfx B
+ set value [expr {$howlong / 86.4}]
+ } else {
+ # kB's
+ set pfx kB
+ set value [expr {$howlong / 86400.0}]
+ }
+ }
+ return [formatsf $pfx $value]
+}
+
proc showintervalsecs/ks {howlong abbrev} {
if {$howlong < 1000} {
return "${howlong}s"
} else {
if {$howlong < 1000000} {
- set pfx k
+ set pfx ks
set scale 1000
} else {
- set pfx M
+ set pfx Ms
set scale 1000000
}
set value [expr "$howlong.0 / $scale"]
- foreach {min format} {100 %.0f 10 %.1f 1 %.2f} {
- if {$value < $min} continue
- return [format "$format${pfx}s" $value]
- }
+ return [formatsf $pfx $value]
}
}
ks { set u 1000 }
m { set u 60 }
h { set u 3600 }
+ mb { set u 0.0864 }
+ b { set u 86.4 }
+ kb { set u 86400 }
default { error "unknown unit of time $unit" }
}
if {$value > 86400*21/$u} { error "interval too large" }
- set result [expr {$value*$u}]
+ set result [expr {round($value*$u)}]
if {$result < $min} { error "interval too small (<${min}s)" }
return $result
}
ucmdr "Removed $ndel as yet undelivered message(s)." {}
}
+def_ucmd_alias delmsgs delmsg
def_ucmd delmsg {
global errorInfo errorCode
prefix_nick
manyset [nickdb_get_sec_effective $n] sec secwhen
switch -exact $sec {
insecure { }
- refuse - mailto {
+ reject - mailto {
usererror \
"There are no messages to delete\
because your message disposition prevents them from being left."
1 { ucmdr {} {} "deletes your $ndel message(s) from $senders." }
default {
ucmdr {} {} "deletes your $ndel message(s) from\
- [lreplace $senders end end] and [lindex $senders end]."
+ [lreplace $senders end end] and/or [lindex $senders end]."
}
}
}
prefix_nick
ta_nomore
check_notonchan
+ manyset [nickdb_get $n tellsec] sec
+ switch -exact $sec {
+ reject { ucmdr "But, you asked me to reject messages for you !" {} }
+ mailto { ucmdr "But, you asked me to mail your messages to you !" {} }
+ }
switch -exact [tell_event [irctolower $n] tellme] {
ERROR - INVALID { ucmdr {} {is ill. Help!} }
nomsgs { ucmdr {You have no messages.} {} }
"I've mailed $ctarget, which is what they prefer." \
{}
}
- refuse {
+ reject {
usererror "Sorry, $ctarget does not want me to take messages."
}
default {
switch -exact $tf {
ks { return "Times will be displayed in seconds or kiloseconds." }
hms { return "Times will be displayed in hours, minutes, etc." }
+ beat { return "Times will be displayed in beats (1000B = 1d)." }
default { error "invalid timeformat: $v" }
}
}
securely. See `help register'.)"
}
}
- refuse {
+ reject {
return "I shan't accept messages for you."
}
mailto {
set mr [tellme_rel_desc [nickdb_get $n tellrel] $n]
return "$ms $mr"
}
- refuse - mailto {
+ reject - mailto {
return $ms
}
}
} {
set setting [string tolower [ta_word]]
+ set nl [irctolower $n]
switch -exact $setting {
insecure {
tellme_setting_sec_simple
set sr sec
set v [list secure $every]
}
- refuse {
+ reject {
tellme_setting_neednomsgs
tellme_setting_sec_simple
}
mailto {
tellme_setting_neednomsgs
- if {![string length [set u [nickdb_get_username $n]]]} {
+ upvar #0 nick_username($nl) nu
+ if {!([info exists nu] && [string length $nu])} {
usererror \
"Sorry, you must register securely to have your messages mailed\
(to prevent the use of this feature for spamming). See `help register'."
}
set sr sec
- set v [list mailto [ta_word] $u]
+ set v [list mailto [ta_word] $nu]
}
unreliable - pester - remind {
manyset [nickdb_get $n tellsec] sec
switch -exact $sec {
- refuse - mailto {
+ reject - mailto {
usererror \
"You can't change your message delivery conditions when\
your message disposition prevents messages from being left."
}
}
nickdb_set $n tell$sr $v
- upvar #0 nick_telling([irctolower $n]) telling
+ upvar #0 nick_telling($nl) telling
catch { unset telling }
ucmdr [tellme_${sr}_desc $v $n] {}
}
ucmdr "Pleased to see you, $username." {}
}
+def_ucmd kill {
+ global nick
+ prefix_nick
+ set target [ta_nick]
+ if {![nickdb_exists $target]} { error "$target is not a registered nick." }
+ set wantu [nickdb_get $target username]
+ if {![string length $wantu]} { error "$target is insecurely registred." }
+ upvar #0 nick_username([irctolower $n]) nu
+ if {![info exists nu]} { error "You must identify yourself first." }
+ if {"$wantu" != "$nu"} {
+ error "You are the wrong user, $nu - $target belongs to $wantu."
+ }
+ set reason "at request of user $nu"
+ if {[ta_anymore]} { append reason "; $text" }
+ sendout KILL $target $reason
+}
+
def_ucmd summon {
set target [ta_word]
ta_nomore
+ # fixme would be nice if the rest of the text was passed on instead
check_username $target
prefix_nick
}
proc connected {} {
+ global operuserpass
+ if {[info exists operuserpass]} {
+ eval sendout OPER $operuserpass
+ }
foreach chan [chandb_list] {
if {[chandb_get $chan autojoin]} { dojoin $chan }
}