]> git.sur5r.net Git - openocd/blobdiff - src/helper/options.c
ioutil: use register_commands()
[openocd] / src / helper / options.c
index 15997a8ba2ca166ba29f4501ba984d81e0dbad27..3db96fd713b5850bb70f8618ef2ba126a3cd6e65 100644 (file)
@@ -2,7 +2,7 @@
  *   Copyright (C) 2004, 2005 by Dominic Rath                              *
  *   Dominic.Rath@gmx.de                                                   *
  *                                                                         *
- *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
+ *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
  *   oyvind.harboe@zylin.com                                               *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -25,7 +25,6 @@
 #endif
 
 #include "configuration.h"
-#include "log.h"
 // @todo the inclusion of server.h here is a layering violation
 #include "server.h"
 
 
 static int help_flag, version_flag;
 
-static struct option long_options[] =
+static const 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'},
@@ -46,14 +45,14 @@ static struct option long_options[] =
        {0, 0, 0, 0}
 };
 
-int configuration_output_handler(struct command_context_s *context, const char* line)
+int configuration_output_handler(struct command_context *context, const char* line)
 {
        LOG_USER_N("%s", line);
 
        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
@@ -102,14 +101,28 @@ int add_default_dirs(void)
         * listed last in the built-in search order, so the user can
         * override these scripts with site-specific customizations.
         */
-       /// @todo Implement @c add_script_search_dir("${HOME}/.openocd").
+
+       const char *home = getenv("HOME");
+
+       if (home) 
+       {
+               char *path;
+
+               path = alloc_printf("%s/.openocd", home);
+
+               if (path) 
+               {
+                       add_script_search_dir(path);
+                       free(path);
+               }
+       }
+
        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[])
+int parse_cmdline_args(struct command_context *cmd_ctx, int argc, char *argv[])
 {
        int c;
        char command_buffer[128];
@@ -196,5 +209,10 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
                exit(0);
        }
 
+       /* paths specified on the command line take precedence over these
+        * built-in paths
+        */
+       add_default_dirs();
+
        return ERROR_OK;
 }