es_Interp* es_init_interp() { es_Interp *interp = NULL; interp = Jim_CreateInterp(); Jim_RegisterCoreCommands(interp); Jim_InitStaticExtensions(interp); // load scripts es_eval_tcl(interp,es_tcl_script_config); // register commands es_jim_register_commands(interp); return interp; }
es_Status es_rcontrol_run_tcl(es_TCPMessage *msg, es_TCPStream *responseStream) { static es_Interp *interp = NULL; if( interp == NULL ) { interp = es_get_interp(); } char *path = malloc(msg->len+1); STRLCPY(path,msg->data,msg->len+1); char buf[500]; snprintf(buf,500,"source {%s}",path); es_Status rc = es_eval_tcl(interp,buf); if( rc != ES_OK ) { const char *errmsg = es_tcl_last_result(interp); es_rcontrol_send_error(responseStream,errmsg); return ES_TCL_ERROR; } else { es_rcontrol_send_ok(responseStream,TCPMSG_ES_RUNTCL); return ES_OK; } }