+ .usage = ""
+ },
+ {
+ .name = "add_script_search_dir",
+ .handler = &handle_add_script_search_dir_command,
+ .mode = COMMAND_ANY,
+ .help = "dir to search for config files and scripts",
+ .usage = "<directory>"
+ },
+ COMMAND_REGISTRATION_DONE
+};
+
+static int openocd_register_commands(struct command_context *cmd_ctx)
+{
+ return register_commands(cmd_ctx, NULL, openocd_command_handlers);
+}
+
+/*
+ * TODO: to be removed after v0.12.0
+ * workaround for syntax change of "expr" in jimtcl 0.81
+ * replace "expr" with openocd version that prints the deprecated msg
+ */
+struct jim_scriptobj {
+ void *token;
+ Jim_Obj *filename_obj;
+ int len;
+ int subst_flags;
+ int in_use;
+ int firstline;
+ int linenr;
+ int missing;
+};
+
+static int jim_expr_command(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
+{
+ if (argc == 2)
+ return Jim_EvalExpression(interp, argv[1]);
+
+ if (argc > 2) {
+ Jim_Obj *obj = Jim_ConcatObj(interp, argc - 1, argv + 1);
+ Jim_IncrRefCount(obj);
+ const char *s = Jim_String(obj);
+ struct jim_scriptobj *script = Jim_GetIntRepPtr(interp->currentScriptObj);
+ if (interp->currentScriptObj == interp->emptyObj ||
+ strcmp(interp->currentScriptObj->typePtr->name, "script") ||
+ script->subst_flags ||
+ script->filename_obj == interp->emptyObj)
+ LOG_WARNING("DEPRECATED! use 'expr { %s }' not 'expr %s'", s, s);
+ else
+ LOG_WARNING("DEPRECATED! (%s:%d) use 'expr { %s }' not 'expr %s'",
+ Jim_String(script->filename_obj), script->linenr, s, s);
+ int retcode = Jim_EvalExpression(interp, obj);
+ Jim_DecrRefCount(interp, obj);
+ return retcode;
+ }