This is an automated email from Gerrit. Andreas Fritiofson ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/3890
-- gerrit commit 14c99cacbc0cae477b7d964237aaf5782c38152a Author: Andreas Fritiofson <[email protected]> Date: Sat Nov 19 22:24:39 2016 +0100 Update user dir config file search path Search in XDG_CONFIG_HOME as per XDG Base Directory Specification in addition to $HOME/.openocd. On Darwin, search in ~/Library/Preferences/org.openocd/ which appears to be one of the conventional locations. Make $OPENOCD_SCRIPTS highest priority on all platforms, previously it was only higher on WIN32. Change-Id: Ibaf4b59b51fdf452712d91b47ea2b5312bb5ada9 Signed-off-by: Andreas Fritiofson <[email protected]> diff --git a/src/helper/options.c b/src/helper/options.c index 0f1e93f..d475d0e 100644 --- a/src/helper/options.c +++ b/src/helper/options.c @@ -201,6 +201,64 @@ static void test_find_relative_path(void) ""); } +static void add_user_dirs(void) +{ + char *path; + +#if IS_WIN32 + const char *appdata = getenv("APPDATA"); + + if (appdata) { + path = alloc_printf("%s/OpenOCD", appdata); + if (path) { + /* Convert path separators to UNIX style, should work on Windows also. */ + for (char *p = path; *p; p++) { + if (*p == '\\') + *p = '/'; + } + add_script_search_dir(path); + free(path); + } + } + /* WIN32 may also have HOME defined, particularly under Cygwin, so add those paths below too */ +#endif + + const char *home = getenv("HOME"); +#if IS_DARWIN + if (home) { + path = alloc_printf("%s/Library/Preferences/org.openocd", home); + if (path) { + add_script_search_dir(path); + free(path); + } + } +#else + const char *xdg_config = getenv("XDG_CONFIG_HOME"); + + if (xdg_config) { + path = alloc_printf("%s/openocd", xdg_config); + if (path) { + add_script_search_dir(path); + free(path); + } + } else if (home) { + path = alloc_printf("%s/.config/openocd", home); + if (path) { + add_script_search_dir(path); + free(path); + } + } + + if (home) { + path = alloc_printf("%s/.openocd", home); + if (path) { + add_script_search_dir(path); + free(path); + } + } +#endif +} + static void add_default_dirs(void) { char *path; @@ -220,32 +278,11 @@ static void add_default_dirs(void) * listed last in the built-in search order, so the user can * override these scripts with site-specific customizations. */ - const char *home = getenv("HOME"); - - if (home) { - path = alloc_printf("%s/.openocd", home); - if (path) { - add_script_search_dir(path); - free(path); - } - } - path = getenv("OPENOCD_SCRIPTS"); - if (path) add_script_search_dir(path); -#ifdef _WIN32 - const char *appdata = getenv("APPDATA"); - - if (appdata) { - path = alloc_printf("%s/OpenOCD", appdata); - if (path) { - add_script_search_dir(path); - free(path); - } - } -#endif + add_user_dirs(); path = alloc_printf("%s/%s/%s", exepath, bin2data, "site"); if (path) { -- ------------------------------------------------------------------------------ _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
