/* ** This file contains code used to bridge the TH1 and Tcl scripting languages. */ #include "config.h" #include "th.h" #include "tcl.h" /* ** Syntax: ** ** tclEval arg ?arg ...? */ static int tclEval_command( Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl ){ Tcl_Interp *tclInterp; Tcl_Obj *objPtr; int rc; int nResult; const char *zResult; if( argc<2 ){ return Th_WrongNumArgs(interp, "tclEval arg ?arg ...?"); } tclInterp = (Tcl_Interp *)ctx; if( !tclInterp ){ Th_ErrorMessage(interp, "invalid Tcl interpreter", (const char *)"", 0); return TH_ERROR; } if( argc==2 ){ objPtr = Tcl_NewStringObj(argv[1], argl[1]); Tcl_IncrRefCount(objPtr); rc = Tcl_EvalObjEx(tclInterp, objPtr, 0); Tcl_DecrRefCount(objPtr); }else{ int objc = argc-1; Tcl_Obj **objv = ckalloc((unsigned)(objc * sizeof(Tcl_Obj *))); int i; for(i=1; i