diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-10-11 10:30:22 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:57 +1000 |
commit | 7f0bcc46a3c9fcfa42f01898330858181838e41f (patch) | |
tree | 00eaaf240f252c57846b8812ea0c483bee10deca /stdlib.tcl | |
parent | 3cfb6f5e312305d7641340917a251606efdf4611 (diff) | |
download | jimtcl-7f0bcc46a3c9fcfa42f01898330858181838e41f.zip jimtcl-7f0bcc46a3c9fcfa42f01898330858181838e41f.tar.gz jimtcl-7f0bcc46a3c9fcfa42f01898330858181838e41f.tar.bz2 |
Remove dependence of jim core on stderr
Remove Jim_PrintErrorMessage() and create Jim_MakeErrorMessage() instead.
Move errorInfo to stdlib since it is now required.
Also move lassign from tclcompat to stdlib as a core command.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'stdlib.tcl')
-rw-r--r-- | stdlib.tcl | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -38,6 +38,14 @@ proc function {value} { return $value } +# Tcl 8.5 lassign +proc lassign {list args} { + # in case the list is empty... + lappend list {} + uplevel 1 [list foreach $args $list break] + lrange $list [llength $args] end-1 +} + # Returns a list of proc filename line ... # with 3 entries for each stack frame (proc), # (deepest level first) @@ -71,3 +79,20 @@ proc stackdump {stacktrace} { } return $result } + +# Sort of replacement for $::errorInfo +# Usage: errorInfo error ?stacktrace? +proc errorInfo {msg {stacktrace ""}} { + if {$stacktrace eq ""} { + set stacktrace [info stacktrace] + } + lassign $stacktrace p f l + if {$f ne ""} { + set result "$f:$l " + } + append result "Runtime Error: $msg\n" + append result [stackdump $stacktrace] + + # Remove the trailing newline + string trim $result +} |