blob: fd6e9a5c1ef10525d1f83f4bb4b416353730a164 [file] [log] [blame]
# hooks.tcl - Hook functions.
# Copyright (C) 1997, 1999 Cygnus Solutions.
# Written by Tom Tromey <tromey@cygnus.com>.
proc add_hook {hook command} {
upvar \#0 $hook var
lappend var $command
}
proc remove_hook {hook command} {
upvar \#0 $hook var
set var [lremove $var $command]
}
proc define_hook {hook} {
upvar \#0 $hook var
if {! [info exists var]} then {
set var {}
}
}
proc run_hooks {hook args} {
upvar \#0 $hook var
set mssg_list {}
foreach thunk $var {
if {[catch {uplevel \#0 $thunk $args} mssg]} {
set errStr "hook=$thunk args=\"$args\" $mssg\n"
lappend mssg_list $errStr
}
}
if {$mssg_list != ""} {
error $mssg_list
}
}