Add version string and long options
diff --git a/output.c b/output.c
index b8f5b8e..6d4de01 100644
--- a/output.c
+++ b/output.c
@@ -3,14 +3,20 @@
 void usage(char **argv)
 {
 	printf("Usage: %s [OPTIONS]\n", argv[0]);
-	printf("  -r 		Show regulator information\n");
-	printf("  -s 		Show sensor information\n");
-	printf("  -v 		Verbose\n");
-	printf("  -h 		Help\n");
+	printf("  -r, --regulator 	Show regulator information\n");
+	printf("  -s, --sensor		Show sensor information\n");
+	printf("  -v, --verbose		Verbose mode (use with -r and/or -s)\n");
+	printf("  -V, --version		Show Version\n");
+	printf("  -h, --help 		Help\n");
 
 	exit(0);
 }
-	
+
+void version()
+{
+	printf("powerdebug version %s\n", VERSION);
+	exit(0);
+}
 
 void print_regulator_info(int verbose)
 {
@@ -52,4 +58,9 @@
 			printf("\tnum_users=%d\n", regulators_info[i].num_users);
 		printf("\n");
 	}
+
+	if (!numregulators && verbose) {
+		printf("Could not find regulator information!");
+		printf(" Looks like /sys/class/regulator is empty.\n\n");
+	}
 }
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);
 	}
 
diff --git a/powerdebug.h b/powerdebug.h
index 27ed37c..df8877d 100644
--- a/powerdebug.h
+++ b/powerdebug.h
@@ -6,6 +6,8 @@
 #include <getopt.h>
 #include <errno.h>
 
+#define VERSION "1.0"
+
 //#define PATH_MAX 1024
 //#define NAME_MAX 128
 #define VALUE_MAX 16
@@ -29,6 +31,7 @@
 extern int numregulators;
 
 extern void usage(char **argv);
+extern void version(void);
 extern void print_regulator_info(int verbose);
 extern void get_sensor_info(char *path, char *name, char *sensor, int verbose);