X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fhelper%2Foptions.c;h=d0a4a70e209c73eb5e6700f820d3df280afae3b1;hb=117cff71d52e221e102af0face3d20ccee53cc57;hp=e31066d7997c12d824f37d50f449455beaeb2f9a;hpb=8b00e56e6433cff3ff818835953b27765aaabab0;p=openocd.git diff --git a/src/helper/options.c b/src/helper/options.c index e31066d799..d0a4a70e20 100644 --- a/src/helper/options.c +++ b/src/helper/options.c @@ -18,7 +18,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * ***************************************************************************/ #ifdef HAVE_CONFIG_H @@ -55,45 +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 - * event\at91eb40a_reset.cfg - * target\at91eb40a.cfg + * + * 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 /*