diff options
author | Freddie Chopin <freddie.chopin@gmail.com> | 2012-08-17 11:54:24 +0200 |
---|---|---|
committer | Freddie Chopin <freddie.chopin@gmail.com> | 2012-08-29 06:26:21 +0000 |
commit | 07158a7f8a5897f28e988969029e692ac106b2bc (patch) | |
tree | a9a8786debc72552d110a8e8aeb8770c2efdbd95 /src | |
parent | 73d87c6210bcd049b738583973fefdea0e32c6fa (diff) | |
download | riscv-openocd-07158a7f8a5897f28e988969029e692ac106b2bc.zip riscv-openocd-07158a7f8a5897f28e988969029e692ac106b2bc.tar.gz riscv-openocd-07158a7f8a5897f28e988969029e692ac106b2bc.tar.bz2 |
Add another scripts search path for Windows builds
Add single "scripts" folder to search path for Windows OpenOCD builds
that don't use cygwin
bin/openocd.exe
scripts/interface/dummy.cfg
scripts/target/at91eb40a.cfg
Do some refactoring of current code (thx to Andreas).
Change-Id: Idbb08d1368b06f25da44f4f9ab1511db992b1724
Signed-off-by: Freddie Chopin <freddie.chopin@gmail.com>
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/785
Tested-by: jenkins
Diffstat (limited to 'src')
-rw-r--r-- | src/helper/options.c | 65 |
1 files changed, 37 insertions, 28 deletions
diff --git a/src/helper/options.c b/src/helper/options.c index 98cd634..e6b0f64 100644 --- a/src/helper/options.c +++ b/src/helper/options.c @@ -55,43 +55,52 @@ int configuration_output_handler(struct command_context *context, const char *li static void add_default_dirs(void) { #ifdef _WIN32 + char strExePath[MAX_PATH]; + char *path; + GetModuleFileName(NULL, strExePath, MAX_PATH); + + /* Strip executable file name, leaving path */ + *strrchr(strExePath, '\\') = '\0'; + + /* Convert path separators to UNIX style, should work on Windows also. */ + for (char *p = strExePath; *p; p++) { + if (*p == '\\') + *p = '/'; + } + /* Add the parent of the directory where openocd.exe resides to the * config script search path. - * Directory layout: - * bin\openocd.exe - * lib\openocd + * + * bin/openocd.exe + * interface/dummy.cfg + * target/at91eb40a.cfg */ - { - char strExePath[MAX_PATH]; - GetModuleFileName(NULL, strExePath, MAX_PATH); - /* Either this code will *always* work or it will SEGFAULT giving - * excellent information on the culprit. - */ - *strrchr(strExePath, '\\') = 0; - strcat(strExePath, "\\.."); - add_script_search_dir(strExePath); + path = alloc_printf("%s%s", strExePath, "/.."); + if (path) { + add_script_search_dir(path); + free(path); } - /* - * Add support for the default (as of 20091118) layout when - * using autotools and cygwin/MinGW to build native binary. - * Path separator is converted to UNIX style so that MinGW is - * pleased. + /* Add support for the directory layout resulting from a 'make install'. * * bin/openocd.exe * share/openocd/scripts/interface/dummy.cfg * share/openocd/scripts/target/at91eb40a.cfg */ - { - char strExePath[MAX_PATH]; - char *p; - GetModuleFileName(NULL, strExePath, MAX_PATH); - *strrchr(strExePath, '\\') = 0; - strcat(strExePath, "/../share/"PACKAGE "/scripts"); - for (p = strExePath; *p; p++) { - if (*p == '\\') - *p = '/'; - } - add_script_search_dir(strExePath); + path = alloc_printf("%s%s", strExePath, "/../share/" PACKAGE "/scripts"); + if (path) { + add_script_search_dir(path); + free(path); + } + /* Add single "scripts" folder to search path for Windows OpenOCD builds that don't use cygwin + * + * bin/openocd.exe + * scripts/interface/dummy.cfg + * scripts/target/at91eb40a.cfg + */ + path = alloc_printf("%s%s", strExePath, "/../scripts"); + if (path) { + add_script_search_dir(path); + free(path); } #else /* |