summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-16 20:20:15 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-16 20:20:15 +0000
commit3287b8661dcd300c6c662f173528cca423e19ce4 (patch)
treef594babec7ef91964f4fb36d25f191e6a9a23f63
parentffe9257a1766ece36a75a4b33d9fa6959182e970 (diff)
downloadopenocd+libswd-3287b8661dcd300c6c662f173528cca423e19ce4.tar.gz
openocd+libswd-3287b8661dcd300c6c662f173528cca423e19ce4.tar.bz2
openocd+libswd-3287b8661dcd300c6c662f173528cca423e19ce4.tar.xz
openocd+libswd-3287b8661dcd300c6c662f173528cca423e19ce4.zip
Fixes to \ and / handling for OpenOCD
git-svn-id: svn://svn.berlios.de/openocd/trunk@815 b42882b7-edfa-0310-969c-e2dbd0fdcd60
-rw-r--r--src/helper/options.c2
-rw-r--r--src/openocd.c31
-rw-r--r--src/startup.tcl25
3 files changed, 26 insertions, 32 deletions
diff --git a/src/helper/options.c b/src/helper/options.c
index 5ec558cf..75d4f2e9 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 e535b9fe..3090bc44 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 5fe7c8fe..abdf58ff 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 "<file> - print full path to file according to OpenOCD search rules"
+
+# Run script
+proc script {filename} {
+ source [find $filename]
+}
+
+add_help_text script "<filename> - filename of OpenOCD script (tcl) to run"
+
add_help_text target_script "<target#> <event=reset/pre_reset/post_halt/pre_resume/gdb_program_config> <script_file>"