zilasm/main: Extend wrong_arg routine.
authorJason Self <j@jxself.org>
Sat, 19 Sep 2015 04:16:44 +0000 (21:16 -0700)
committerJason Self <j@jxself.org>
Sat, 19 Sep 2015 04:16:44 +0000 (21:16 -0700)
zilasm/main.c

index a6bfa68feeecca39c8f8cac8d89daa91ac61ba66..daa943c7919c76808084a9eba2926fe558b82258 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdarg.h>
 #include <string.h>
 #include <getopt.h>
 #include <time.h>
@@ -47,8 +48,15 @@ struct
     char zserial[7];   /* YYMMDD    */
 } Config;
 
-void wrong_arg()
+void wrong_arg(const char *err, ...)
 {
+    if (err)
+    {
+        va_list ap;
+        va_start(ap, err);
+        vfprintf(stderr, err, ap);
+        va_end(ap);
+    }
     fprintf(stderr, "Try `" PACKAGE_NAME " --help' for more information.\n");
     exit(1);
 }
@@ -108,9 +116,8 @@ void parse_intarg(int *dest, const char name[], int min, int max, int defval)
         *dest = n;
         return;
     }
-    fprintf(stderr, "Wrong %s value %s, must be integer between %d and %d\n",
-            name, optarg, min, max);
-    wrong_arg();
+    wrong_arg("Wrong %s value %s, must be integer between %d and %d\n",
+              name, optarg, min, max);
 }
 
 void parse_zserial(void)
@@ -132,8 +139,7 @@ void parse_zserial(void)
             return;
         }
     }
-    fprintf(stderr, "Wrong zserial value %s, must be 6 ascii characters\n", optarg);
-    wrong_arg();
+    wrong_arg("Wrong zserial value %s, must be 6 ascii characters\n", optarg);
 }
 
 int main(int argc, char *argv[], char *envp[])
@@ -159,7 +165,7 @@ int main(int argc, char *argv[], char *envp[])
             parse_zserial();
             break;
         default      :
-            wrong_arg();
+            wrong_arg(0);
         }
     }