/*+JMJ
* posopt.c - parse Posix command line options
* Copyright 2011 David Meyer <[email protected]>
*/

#include <stdio.h>
#include <string.h>
#include "krcompat.h"

/* Options m, n, o have arguments. */

int main(argc, argv)
 int argc;
 char *argv[];
{
 int endopt = 0;
 int a, n;
 char *marg, *narg, *oarg;

 for (a = 1; a < argc; a++) {
   if (!endopt && argv[a][0] == '-') {
     if (!strcmp(argv[a], "--")) endopt = 1;

     else if (!strcmp(argv[a], "-m")) {
       marg = malloc(strlen(argv[++a]) + 1);
       strcpy(marg, argv[a]);
       printf("opt: m = %s\n", marg);
     }
     else if (!strncmp(argv[a], "-m", 2)) {
       marg = malloc(strlen(argv[a]) - 1);
       strcpy(marg, argv[a]+2);
       printf("opt: m = %s\n", marg);
     }

     else if (!strcmp(argv[a], "-n")) {
       narg = malloc(strlen(argv[++a]) + 1);
       strcpy(narg, argv[a]);
       printf("opt: n = %s\n", narg);
     }
     else if (!strncmp(argv[a], "-n", 2)) {
       narg = malloc(strlen(argv[a]) - 1);
       strcpy(narg, argv[a]+2);
       printf("opt: n = %s\n", narg);
     }

     else if (!strcmp(argv[a], "-o")) {
       oarg = malloc(strlen(argv[++a]) + 1);
       strcpy(oarg, argv[a]);
       printf("opt: o = %s\n", oarg);
     }
     else if (!strncmp(argv[a], "-o", 2)) {
       oarg = malloc(strlen(argv[a]) - 1);
       strcpy(oarg, argv[a]+2);
       printf("opt: o = %s\n", oarg);
     }

     else {
       for (n = 1; n < strlen(argv[a]); n++)
         printf("opt: %c\n", argv[a][n]);
     }
   }
   else {
     printf("arg: %s\n", argv[a]);
   }
 }

 return 0;
}