Be sure the built-in search paths always go *after* ones provided
on the command line ... matching comment in add_default_dirs().

Without this it's impossible to use a private config file which
happens to have the same name as an installed one.  Say, because
you're bugfixing a private copy...
---
 src/ecosboard.c            |    2 +-
 src/helper/command.c       |    2 --
 src/helper/configuration.h |    1 -
 src/helper/options.c       |   10 +++++++---
 4 files changed, 8 insertions(+), 7 deletions(-)

--- a/src/ecosboard.c
+++ b/src/ecosboard.c
@@ -918,7 +918,7 @@ command_context_t *setup_command_handler
 
 static const char *zylin_config_dir="/config/settings";
 
-int add_default_dirs(void)
+static int add_default_dirs(void)
 {
        add_script_search_dir(zylin_config_dir);
        add_script_search_dir("/rom/lib/openocd");
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -744,8 +744,6 @@ command_context_t* command_init()
        interp->cb_fflush = openocd_jim_fflush;
        interp->cb_fgets = openocd_jim_fgets;
 
-       add_default_dirs();
-
 #if !BUILD_ECOSBOARD
        Jim_EventLoopOnLoad(interp);
 #endif
--- a/src/helper/configuration.h
+++ b/src/helper/configuration.h
@@ -32,6 +32,5 @@ extern void add_script_search_dir (const
 extern int configuration_output_handler(struct command_context_s *context, 
const char* line);
 extern FILE *open_file_from_path (char *file, char *mode);
 extern char *find_file(const char *name);
-int add_default_dirs(void);
 
 #endif /* CONFIGURATION_H */
--- a/src/helper/options.c
+++ b/src/helper/options.c
@@ -38,7 +38,7 @@ static struct option long_options[] =
        {"help",        no_argument,            &help_flag,     1},
        {"version",     no_argument,            &version_flag,  1},
        {"debug",       optional_argument,      0,              'd'},
-       {"file",        required_argument,      0,              'f'},
+       {"file",        required_argument,      0,              'f'},
        {"search",      required_argument,      0,              's'},
        {"log_output",  required_argument,      0,      'l'},
        {"command",     required_argument,      0,              'c'},
@@ -53,7 +53,7 @@ int configuration_output_handler(struct 
        return ERROR_OK;
 }
 
-int add_default_dirs(void)
+static void add_default_dirs(void)
 {
 #ifdef _WIN32
        /* Add the parent of the directory where openocd.exe resides to the
@@ -106,7 +106,6 @@ int add_default_dirs(void)
        add_script_search_dir(PKGDATADIR "/site");
        add_script_search_dir(PKGDATADIR "/scripts");
 #endif
-       return ERROR_OK;
 }
 
 int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char 
*argv[])
@@ -196,5 +195,10 @@ int parse_cmdline_args(struct command_co
                exit(0);
        }
 
+       /* paths specified on the command line take precedence over these
+        * built-in paths
+        */
+       add_default_dirs();
+
        return ERROR_OK;
 }

_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to