aboutsummaryrefslogtreecommitdiff
path: root/jim.c
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 /jim.c
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 'jim.c')
-rw-r--r--jim.c34
1 files changed, 5 insertions, 29 deletions
diff --git a/jim.c b/jim.c
index 2a058d6..d0dc110 100644
--- a/jim.c
+++ b/jim.c
@@ -13437,38 +13437,14 @@ void Jim_RegisterCoreCommands(Jim_Interp *interp)
/* -----------------------------------------------------------------------------
* Interactive prompt
* ---------------------------------------------------------------------------*/
-void Jim_PrintErrorMessage(Jim_Interp *interp)
+void Jim_MakeErrorMessage(Jim_Interp *interp)
{
- int len, i;
+ Jim_Obj *argv[2];
- if (*interp->errorFileName) {
- fprintf(stderr, "%s:%d: Runtime Error: ", interp->errorFileName, interp->errorLine);
- }
- fprintf(stderr, "%s" JIM_NL, Jim_GetString(interp->result, NULL));
- len = Jim_ListLength(interp, interp->stackTrace);
- for (i = len - 3; i >= 0; i -= 3) {
- Jim_Obj *objPtr = 0;
- const char *proc, *file, *line;
+ argv[0] = Jim_NewStringObj(interp, "errorInfo", -1);
+ argv[1] = interp->result;
- Jim_ListIndex(interp, interp->stackTrace, i, &objPtr, JIM_NONE);
- proc = Jim_GetString(objPtr, NULL);
- Jim_ListIndex(interp, interp->stackTrace, i + 1, &objPtr, JIM_NONE);
- file = Jim_GetString(objPtr, NULL);
- Jim_ListIndex(interp, interp->stackTrace, i + 2, &objPtr, JIM_NONE);
- line = Jim_GetString(objPtr, NULL);
- if (*proc) {
- fprintf(stderr, "in procedure '%s' ", proc);
- if (*file) {
- fprintf(stderr, "called ");
- }
- }
- if (*file) {
- fprintf(stderr, "at file \"%s\", line %s", file, line);
- }
- if (*file || *proc) {
- fprintf(stderr, JIM_NL);
- }
- }
+ Jim_EvalObjVector(interp, 2, argv);
}
static void JimSetFailedEnumResult(Jim_Interp *interp, const char *arg, const char *badtype,