Lexer actually lexes filenames now, and odats are made out of mapvariants
[henge/webcc.git] / src / bin / tools / apc.c
index de7bc34..2307ccc 100644 (file)
@@ -14,7 +14,7 @@
 /* Standard */
 #include <stdio.h>  //print
 #include <errno.h>  //errors
-#include <string.h> //strnlen
+#include <string.h> //strndupa
 /* Posix */
 #include <stdlib.h> //exit
 #include <unistd.h> //getopt
@@ -45,15 +45,21 @@ int main
 #define $($)#$ //stringifier
 #define MAXSTR 255
 #define MAXERR "-%c allows at most " $(MAXSTR) " input characters\n", opt
-#define USAGE  "Usage: %s [-r root]\n", argv[0]
+#define OPTS  "d:o:h-"
+#define USAGE "Usage %s [-d dir_root][-o output_file][-h]\n", argv[0]
+#define USAGE_LONG                                     \
+  "\tOptions:\n"                                       \
+  "\t\t-d\tRoot directory to parse from \t[./]\n"      \
+  "\t\t-o\tOutput filename \t\t[a.asspak]\n"           \
+  "\t\t-h\tPrint this help\n"
 #define DONE   -1
 { int   opt;
 
  getopt:
-  switch (opt = getopt(argc, argv, "r:o:"))
+  switch (opt = getopt(argc, argv, OPTS))
   { case DONE:
       break;
-    case 'r' :
+    case 'd' :
     case 'o' :
       if (strnlen(optarg, MAXSTR) != MAXSTR)
         { cargs[opt] = optarg;
@@ -63,6 +69,10 @@ int main
     default :
       fprintf(stderr, USAGE);
       exit(EXIT_FAILURE);
+    case 'h' :
+      printf(USAGE);
+      printf(USAGE_LONG);
+      exit(EXIT_SUCCESS);
   }
   if (lexer_init())
     { perror("lexer");