diff --git a/src/helper/options.c b/src/helper/options.c index 5ec558cfe..75d4f2e9b 100644 --- a/src/helper/options.c +++ b/src/helper/options.c @@ -110,7 +110,7 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[] break; case 'f': /* --file | -f */ { - snprintf(command_buffer, 128, "script %s", optarg); + snprintf(command_buffer, 128, "script {%s}", optarg); add_config_command(command_buffer); break; } diff --git a/src/openocd.c b/src/openocd.c index e535b9fe2..3090bc442 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -614,34 +614,6 @@ static int Jim_Command_echo(Jim_Interp *interp, int argc, Jim_Obj *const *argv) return JIM_OK; } -static int Jim_Command_script(Jim_Interp *interp, int argc, Jim_Obj *const *argv) -{ - int retval; - const char *file; - char *full_path; - - if (argc != 2) - { - Jim_WrongNumArgs(interp, 1, argv, "file name missing"); - return JIM_ERR; - } - - /* Run a tcl script file */ - file = Jim_GetString(argv[1], NULL); - full_path = find_file(file); - if (full_path == NULL) - { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "script: could not open file", file, NULL); - return JIM_ERR; - } - retval = Jim_EvalFile(interp, full_path); - free(full_path); - /* convert a return to ok */ - if (retval == JIM_RETURN) - return JIM_OK; - return retval; -} static size_t openocd_jim_fwrite(const void *_ptr, size_t size, size_t n, void *cookie) @@ -752,9 +724,8 @@ void initJim(void) { Jim_CreateCommand(interp, "openocd", Jim_Command_openocd, NULL, NULL); Jim_CreateCommand(interp, "openocd_throw", Jim_Command_openocd_throw, NULL, NULL); - Jim_CreateCommand(interp, "find", Jim_Command_find, NULL, NULL); + Jim_CreateCommand(interp, "openocd_find", Jim_Command_find, NULL, NULL); Jim_CreateCommand(interp, "echo", Jim_Command_echo, NULL, NULL); - Jim_CreateCommand(interp, "script", Jim_Command_script, NULL, NULL); Jim_CreateCommand(interp, "mem2array", Jim_Command_mem2array, NULL, NULL ); Jim_CreateCommand(interp, "array2mem", Jim_Command_array2mem, NULL, NULL ); diff --git a/src/startup.tcl b/src/startup.tcl index 5fe7c8fe7..abdf58ff4 100644 --- a/src/startup.tcl +++ b/src/startup.tcl @@ -134,6 +134,29 @@ proc target_script {target_num eventname scriptname} { } -#add_help_text target_script "xxx" +# Try flipping / and \ to find file if the filename does not +# match the precise spelling +proc find {filename} { + if {[catch {openocd_find $filename} t]==0} { + return $t + } + if {[catch {openocd_find [string map {\ /} $filename} t]==0} { + return $t + } + if {[catch {openocd_find [string map {/ \\} $filename} t]==0} { + return $t + } + # make sure error message matches original input string + return [openocd_find $filename] +} +add_help_text find " - print full path to file according to OpenOCD search rules" + +# Run script +proc script {filename} { + source [find $filename] +} + +add_help_text script " - filename of OpenOCD script (tcl) to run" + add_help_text target_script " "