summaryrefslogtreecommitdiff
path: root/src/helper/startup.tcl
diff options
context:
space:
mode:
authorZachary T Welch <zw@superlucidity.net>2009-11-27 21:47:54 -0800
committerZachary T Welch <zw@superlucidity.net>2009-11-28 13:00:39 -0800
commit89fa493a3bc34d22eeca06fa4e78523ac3b766a8 (patch)
tree8b50a4b4e4e8e0fa23f6f63d53fbedcecb3da05b /src/helper/startup.tcl
parentdf22f0f9ca4ebf881adf8d20cb63e64139f18613 (diff)
downloadopenocd+libswd-89fa493a3bc34d22eeca06fa4e78523ac3b766a8.tar.gz
openocd+libswd-89fa493a3bc34d22eeca06fa4e78523ac3b766a8.tar.bz2
openocd+libswd-89fa493a3bc34d22eeca06fa4e78523ac3b766a8.tar.xz
openocd+libswd-89fa493a3bc34d22eeca06fa4e78523ac3b766a8.zip
remove unknown handler
Updates command registration to provide top-level handlers for all commands, rather than falling back onto the 'unknown' command. Instead, that same handler is registered for placeholders, providing the same functionality under the root verb command name instead. This permits users to implement their own 'unknown' function, and it resolves some mind-bending breakage related to function object lookup while recursing. Changes 'ocd_bounce' to call 'ocd_command' and 'ocd_help' from the wrapper directly, rather than bouncing through their wrappers. This prevents endless recursion caused by the above changes, whereby the 'command' wrapper's type check would blow the stack to hell and gone.
Diffstat (limited to 'src/helper/startup.tcl')
-rw-r--r--src/helper/startup.tcl4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl
index cb5fb026..dda89c8a 100644
--- a/src/helper/startup.tcl
+++ b/src/helper/startup.tcl
@@ -15,7 +15,7 @@ proc exit {} {
# to discard 'handler' command output,
proc ocd_bouncer {name args} {
set cmd [format "ocd_%s" $name]
- set type [eval command type $cmd $args]
+ set type [eval ocd_command type $cmd $args]
if {$type == "native"} {
return [eval $cmd $args]
} else {if {$type == "simple"} {
@@ -25,7 +25,7 @@ proc ocd_bouncer {name args} {
set errmsg "Command handler execution failed"
}
} else {if {$type == "group"} {
- catch {eval help $name $args}
+ catch {eval ocd_help $name $args}
set errmsg [format "%s: command requires more arguments" \
[concat $name " " $args]]
} else {