Add version string and long options
diff --git a/powerdebug.c b/powerdebug.c
index 18a2382..2bd5c69 100644
--- a/powerdebug.c
+++ b/powerdebug.c
@@ -215,40 +215,60 @@
 	int c;
 	int regulators = 0, sensors = 0, verbose = 0;
 
-	/* Options:
-	 * -r : regulator
-	 * -s : sensors
-	 * -v : verbose
-	 * no option / default : all
+	/*
+	 * Options:
+	 * -r, --regulator	: regulator
+	 * -s, --sensor		: sensors
+	 * -v, --verbose	: verbose
+	 * -V, --version	: version
+	 * -h, --help		: help
+	 * no option / default : show usage!
 	 */
 
-	while ((c = getopt (argc, argv, "rsvh")) != -1)
-	switch (c)
-	{
-	case 'r':
-		regulators = 1;
-		break;
-	case 's':
-		sensors = 1;
-		break;
-	case 'v':
-		verbose = 1;
-		break;
-	case 'h':
-		usage (argv);
-	case '?':
-		fprintf (stderr, "Unknown option %c'.\n", optopt);
-		return 1;
-	default:
-		usage(argv);
+	while (1) {
+		int optindex = 0;
+		static struct option long_options[] = {
+			{"regulator", 0, 0, 'r'},
+			{"sensor", 0, 0, 's'},
+			{"verbose", 0, 0, 'v'},
+			{"version", 0, 0, 'V'},
+			{"help", 0, 0, 'h'},
+			{0, 0, 0, 0}
+		};
+
+		c = getopt_long(argc, argv, "rsvVh", long_options, &optindex);
+		if (c == -1)
+			break;
+
+		switch (c) {
+			case 'r':
+				regulators = 1;
+				break;
+			case 's':
+				sensors = 1;
+				break;
+			case 'v':
+				verbose = 1;
+				break;
+			case 'V':
+				version();
+				break;
+			case 'h':
+				usage(argv);
+				break;
+			case '?':
+				fprintf (stderr, "%s: Unknown option %c'.\n",
+					 argv[0], optopt);
+				exit(1);
+			default:
+				usage(argv);
+				break;
+		}
 	}
 
-	/* By default print both regulator and sensor information */
+
+	/* Need atleast one option specified */
 	if (!regulators && !sensors) {
-		/*  What should be the default behavior ?
-		regulators = 1;
-		sensors = 1;
-		*/
 		usage(argv);
 	}