aboutsummaryrefslogtreecommitdiff
path: root/stdlib.tcl
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-10-11 10:30:22 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:57 +1000
commit7f0bcc46a3c9fcfa42f01898330858181838e41f (patch)
tree00eaaf240f252c57846b8812ea0c483bee10deca /stdlib.tcl
parent3cfb6f5e312305d7641340917a251606efdf4611 (diff)
downloadjimtcl-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.tcl25
1 files changed, 25 insertions, 0 deletions
diff --git a/stdlib.tcl b/stdlib.tcl
index b4a9a69..3f3a6e5 100644
--- a/stdlib.tcl
+++ b/stdlib.tcl
@@ -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
+}