#include #include #include #include #include "jtag_core/jtag_core.h" #include "config/version.h" #include "script/env.h" #include "script/script.h" #include "config/config_script.h" #include "init.h" void jprint(jtag_core *jc, const char *msg) { fputs(msg, stdout); } int script_print(script_ctx *sctx, enum MSGTYPE typ, char *string, ...) { int ret = 0; const char *prefix = ""; va_list args; switch (typ) { case MSG_DEBUG: prefix = "DEBUG : "; break; case MSG_INFO_1: prefix = "INFO : "; break; case MSG_WARNING: prefix = "WARNING : "; break; case MSG_ERROR: prefix = "ERROR : "; break; case MSG_INFO_0: default: prefix = ""; break; } va_start(args, string); ret = fputs(prefix, stdout); ret += vprintf(string, args); va_end(args); return ret; } void bsexp_init(jtag_core **jc, script_ctx **sctx) { *jc = jtagcore_init(); if (NULL == *jc) return; (*jc)->envvar = (void *)initEnv(NULL, NULL); if (NULL == (*jc)->envvar) { jtagcore_deinit(*jc); *jc = NULL; return; } jtagcore_setEnvVar(*jc, "VERSION", "v" APP_VER_STR(APP_VER)); *sctx = jtagcore_initScript(*jc); if (NULL == *sctx) { deinitEnv((*jc)->envvar); jtagcore_deinit(*jc); *jc = NULL; return; } setOutputFunc_script(*sctx, script_print); execute_ram_script(*sctx, config_script, config_script_len); /* User override is optional — silence the engine's "not found" message. */ { FILE *f = fopen("config.script", "r"); if (f) { fclose(f); execute_file_script(*sctx, "config.script"); } } if (jtagcore_set_logs_callback(*jc, jprint) < 0) { fputs("Impossible to define the logs callback!\n", stderr); return; } if (jtagcore_getEnvVar(*jc, "LOG_MESSAGES_FILTER_LEVEL", NULL)) { jtagcore_set_logs_level(*jc, jtagcore_getEnvVarValue(*jc, "LOG_MESSAGES_FILTER_LEVEL")); } if (jtagcore_getEnvVar(*jc, "LOG_MESSAGES_FILE_OUTPUT", NULL)) { jtagcore_set_logs_file(*jc, jtagcore_getEnvVar(*jc, "LOG_MESSAGES_FILE_OUTPUT", NULL)); } } void bsexp_deinit(jtag_core *jc, script_ctx *sctx) { if (NULL != sctx) { deinit_script(sctx); } if (NULL != jc) { deinitEnv((envvar_entry *)jc->envvar); jtagcore_deinit(jc); } }