src/helper/configuration.h
[openocd.git] / src / helper / options.c
index 35ab0f5dfdc0e0308e2877397f6511034ecb1591..afff55ba4964a75e03c5fd943160e6a24b12a13c 100644 (file)
 #include <getopt.h>
 #include <string.h>
 
-static int help_flag;
+static int help_flag, version_flag;
 
 static struct option long_options[] =
 {
-       {"help",                        no_argument,    &help_flag, 1},
-
-       {"debug",                       optional_argument,      0, 'd'},
-       {"file",                        required_argument,      0, 'f'},
-       {"search",                      required_argument,      0, 's'},
-       {"log_output",          required_argument,      0, 'l'},
-       {"command",                     required_argument,      0, 'c'},
-       
+       {"help",        no_argument,            &help_flag,     1},
+       {"version",     no_argument,            &version_flag,  1},
+       {"debug",       optional_argument,      0,              'd'},
+       {"file",        required_argument,      0,              'f'},
+       {"search",      required_argument,      0,              's'},
+       {"log_output",  required_argument,      0,              'l'},
+       {"command",     required_argument,      0,              'c'},
        {0, 0, 0, 0}
 };
 
-int configuration_output_handler(struct command_context_s *context, char* line)
+int configuration_output_handler(struct command_context_s *context, const char* line)
 {
-       INFO_N(line);
+       LOG_INFO_N(line);
 
        return ERROR_OK;
 }
@@ -63,7 +62,7 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
                /* getopt_long stores the option index here. */
                int option_index = 0;
                
-               c = getopt_long(argc, argv, "hd::l:f:s:c:", long_options, &option_index);
+               c = getopt_long(argc, argv, "hvd::l:f:s:c:", long_options, &option_index);
                
                /* Detect the end of the options. */
                if (c == -1)
@@ -76,10 +75,23 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
                        case 'h':       /* --help | -h */
                                help_flag = 1;
                                break;
+                       case 'v':       /* --version | -v */
+                               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;
@@ -100,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;
                                
@@ -109,13 +121,20 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
 
        if (help_flag)
        {
-               OUTPUT("Open On-Chip Debugger\n(c) 2005 by Dominic Rath\n\n");
-               OUTPUT("--help       | -h\tdisplay this help\n");
-               OUTPUT("--file       | -f\tuse configuration file <name>\n");
-               OUTPUT("--search     | -s\tdir to search for config files and scripts.\n");
-               OUTPUT("--debug      | -d\tset debug level <0-3>\n");
-               OUTPUT("--log_output | -l\tredirect log output to file <name>\n");
-               OUTPUT("--command    | -c\trun <command>\n");
+               LOG_OUTPUT("Open On-Chip Debugger\n(c) 2005-2008 by Dominic Rath\n\n");
+               LOG_OUTPUT("--help       | -h\tdisplay this help\n");
+               LOG_OUTPUT("--version    | -v\tdisplay OpenOCD version\n");
+               LOG_OUTPUT("--file       | -f\tuse configuration file <name>\n");
+               LOG_OUTPUT("--search     | -s\tdir to search for config files and scripts\n");
+               LOG_OUTPUT("--debug      | -d\tset debug level <0-3>\n");
+               LOG_OUTPUT("--log_output | -l\tredirect log output to file <name>\n");
+               LOG_OUTPUT("--command    | -c\trun <command>\n");
+               exit(-1);
+       }       
+
+       if (version_flag)
+       {
+               /* Nothing to do, version gets printed automatically. */
                exit(-1);
        }       
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)