add option -h for descriptive help
[cfe_generate_password.git] / cfe_generate_password.c
index 904e04b..f806b2c 100644 (file)
@@ -76,17 +76,18 @@ static const size_t MAC_ADDR_SIZE = 17;
 static const size_t DATESTRING_SIZE = 20;
 
 static void
-pr_usage()
+pr_usage(int verbose)
 {
-  fprintf(stderr, "%s\n",
+  fprintf(stderr,
     "Usage:\n"
     "  -v                   show version\n"
     "  -s 00:01:02:03:04:05 create seed from MAC address\n"
     "  -t [00000000]        seconds since 1970-01-01 (defaults to NOW) \n"
-    "  -p [SEED]            generate password (with optional seed)\n\n"
-    "  E.g. -s 01:02:03:04:05 \n"
-    "       -s 01:02:03:04:05 -p\n"
-    "       -p 000000030405\n"
+    "  -p [SEED]            generate password (with optional seed)\n"
+    "  -h                   show additional help\n"
+    "\n"
+    "%s",
+    verbose ? help : ""
   );
 }
 
@@ -103,7 +104,7 @@ pr_error_exit(unsigned int usage, const char *error, ...)
  va_end(args);
  fprintf(stderr, "Error: %s\n", error_message);
 
- if (usage) pr_usage();
+ if (usage) pr_usage(usage);
 
  exit(EXIT_FAILURE);
 }
@@ -174,7 +175,7 @@ main(int argc, char **argv, char **env)
   int result = 0;
 
   if (argc == 1) {
-    pr_usage();
+    pr_usage(0);
   }
   else {
     unsigned int arg;
@@ -205,6 +206,9 @@ main(int argc, char **argv, char **env)
           case 't':
             opt_ts = 1;
             break;
+          case 'h':
+            pr_usage(1);
+            exit(0);
           case 'v':
             fprintf(stderr, "Version: %0.2f\n", VERSION);
         }
@@ -226,7 +230,7 @@ main(int argc, char **argv, char **env)
       }
     }
     if (! opt_seed && ! opt_pass)
-      pr_usage();
+      pr_usage(0);
     else if (opt_seed && opt_seed != 2)
       pr_error_exit(1, "seed requires MAC-ADDRESS");
     else if (! opt_seed && opt_pass && opt_pass != 2)