added support for Tcl config scripts on the command line(use .tcl extension).
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 4 Jul 2008 07:22:11 +0000 (07:22 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 4 Jul 2008 07:22:11 +0000 (07:22 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@743 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/helper/configuration.c
src/helper/configuration.h
src/helper/options.c

index 68c863f3253ca9278fdae5330d84063e8a4f78df..ff8b0272e98137e2fab21a249898453115f91b46 100644 (file)
@@ -45,7 +45,7 @@ void add_script_search_dir (const char *dir)
        script_search_dirs[num_script_dirs] = NULL;
 }
 
-void add_config_file_name (const char *cfg)
+void add_config_command (const char *cfg)
 {
        num_config_files++;
        config_file_names = (char **)realloc(config_file_names, (num_config_files+1) * sizeof (char *));
@@ -109,7 +109,7 @@ int parse_config_file(struct command_context_s *cmd_ctx)
        char **cfg;
 
        if (!config_file_names)
-               add_config_file_name ("script openocd.cfg");
+               add_config_command ("script openocd.cfg");
 
        cfg = config_file_names;
 
index d2e30e77d1aff722a78dc921f9ab49da285da213..894d874ce97a2380c92c2ab8ae82b19bd6cf3738 100644 (file)
@@ -25,7 +25,7 @@
 
 extern int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]);
 extern int parse_config_file(struct command_context_s *cmd_ctx);
-extern void add_config_file_name (const char *cfg);
+extern void add_config_command (const char *cfg);
 extern void add_script_search_dir (const char *dir);
 extern int configuration_output_handler(struct command_context_s *context, char* line);
 extern FILE *open_file_from_path (char *file, char *mode);
index 5ad09fbd482cecea6cf49b91d2220016d2695154..ab36a2865e1f14964d19113201c48459dadb3b5f 100644 (file)
@@ -79,9 +79,19 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
                                version_flag = 1;
                                break;
                        case 'f':       /* --file | -f */
-                               snprintf(command_buffer, 128, "script %s", optarg);
-                               add_config_file_name(command_buffer);
+                       {
+                               char *t=strrchr(optarg, '.');
+                               if (strcmp(t, ".tcl")==0)
+                               {
+                                       /* Files ending in .tcl are executed as Tcl files */
+                                       snprintf(command_buffer, 128, "source [find {%s}]", optarg);
+                               } else
+                               {
+                                       snprintf(command_buffer, 128, "script %s", optarg);
+                               }
+                               add_config_command(command_buffer);
                                break;
+                       }
                        case 's':       /* --search | -s */
                                add_script_search_dir(optarg);
                                break;
@@ -102,7 +112,7 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
                        case 'c':       /* --command | -c */
                                if (optarg)
                                {
-                                       add_config_file_name(optarg);
+                                       add_config_command(optarg);
                                }       
                                break;