#ifndef OS_UNIX_ALIKE #include #include #include #include "alt_unistd.h" char *alt_optarg=NULL; int alt_optind=0; int sub_optindex=0; int alt_getopt(int argc, char *const *argv, const char *shortopts) { int retchar; alt_optarg=NULL; /* if no more argvs.. */ if(alt_optind==argc) return(EOF); /* if first time, search first group of options */ if(!alt_optind && !sub_optindex){ while((*argv[alt_optind]!='-') && (argc>(alt_optind+1))) alt_optind++; if(*argv[alt_optind]!='-'){ alt_optind=1; return(EOF); } } /* if current char is zero.. */ if(!*(argv[alt_optind]+sub_optindex+1)){ alt_optind++; if(alt_optind==argc){ return(EOF); }else{ if(*(argv[alt_optind])=='-'){ sub_optindex=0; }else{ return(EOF); } } } /* if current alt_optind is not options.. */ if(*(argv[alt_optind])!='-') return(EOF); retchar=*(argv[alt_optind]+sub_optindex+1); sub_optindex++; if((alt_optind+1)!=argc) alt_optarg=argv[alt_optind+1]; return(retchar); } #endif