From d08da2ec045f9da6536f6f7b18fc1f0d53904c40 Mon Sep 17 00:00:00 2001
From: oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Fri, 29 Feb 2008 14:34:17 +0000
Subject: [PATCH] Uwe Hermann: Add a --version switch for openocd.

git-svn-id: svn://svn.berlios.de/openocd/trunk@399 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 doc/openocd.1        |  8 ++++----
 src/helper/options.c | 31 ++++++++++++++++++++-----------
 2 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/doc/openocd.1 b/doc/openocd.1
index f4ba7d96b..cfb99af9c 100644
--- a/doc/openocd.1
+++ b/doc/openocd.1
@@ -3,7 +3,7 @@
 openocd \- A free and open on\-chip debugging, in\-system programming and
 boundary\-scan testing tool for ARM systems
 .SH "SYNOPSIS"
-.B openocd \fR[\fB\-fsdlch\fR] [\fB\-\-file\fR <filename>] [\fB\-\-search\fR <dirname>] [\fB\-\-debug\fR <debuglevel>] [\fB\-\-log_output\fR <filename>] [\fB\-\-command\fR <cmd>] [\fB\-\-help\fR]
+.B openocd \fR[\fB\-fsdlchv\fR] [\fB\-\-file\fR <filename>] [\fB\-\-search\fR <dirname>] [\fB\-\-debug\fR <debuglevel>] [\fB\-\-log_output\fR <filename>] [\fB\-\-command\fR <cmd>] [\fB\-\-help\fR] [\fB\-\-version\fR]
 .SH "DESCRIPTION"
 .B OpenOCD
 is an on\-chip debugging, in\-system programming and boundary\-scan
@@ -60,9 +60,9 @@ Run the command
 .TP 
 .B "\-h, \-\-help"
 Show a help text and exit.
-.\".TP 
-.\".B "\-v, \-\-version"
-.\"Show version information and exit.
+.TP 
+.B "\-v, \-\-version"
+Show version information and exit.
 .SH "BUGS"
 Please report any bugs at
 .B http://developer.berlios.de/bugs/?group_id=4148
diff --git a/src/helper/options.c b/src/helper/options.c
index 35ab0f5df..b037a5eda 100644
--- a/src/helper/options.c
+++ b/src/helper/options.c
@@ -31,18 +31,17 @@
 #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}
 };
 
@@ -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,6 +75,9 @@ 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);
@@ -109,8 +111,9 @@ 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("Open On-Chip Debugger\n(c) 2005-2008 by Dominic Rath\n\n");
 		OUTPUT("--help       | -h\tdisplay this help\n");
+		OUTPUT("--version    | -v\tdisplay OpenOCD version\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");
@@ -119,6 +122,12 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
 		exit(-1);
 	}	
 
+	if (version_flag)
+	{
+		/* Nothing to do, version gets printed automatically. */
+		exit(-1);
+	}	
+
 #ifdef _WIN32
 	/* Add the parent of the directory where openocd.exe resides to the
 	 * config script search path.
-- 
GitLab