11#include "srxfixup_internal.h" 
   17int analize_arguments(
const Opttable *dopttable, 
int argc, 
char **argv)
 
   32    for ( i = 0; dopttable[i].option; i += 1 )
 
   37    memset(opttable, 0, (argc + i) * 
sizeof(
Opttable));
 
   38    memcpy(opttable, dopttable, i * 
sizeof(
Opttable));
 
   40    nargv = (
char **)__builtin_alloca((argc + 1) * 
sizeof(
char *));
 
   41    memset(nargv, 0, (argc + 1) * 
sizeof(
char *));
 
   45    for ( argca = argc - 1, argva = argv + 1;; argca -= 1, argva += 1 )
 
   49            for ( i = 0; i < nargc + 1; i += 1 )
 
   53            for ( i = 0; opttable[i].option; i += 1 )
 
   55                if ( opttable[i].vartype == 
'l' )
 
   57                    *(
SLink **)opttable[i].var = ring_to_liner(*(
SLink **)opttable[i].var);
 
   65            for ( i = 0; opttable[i].option; i += 1 )
 
   67                if ( opttable[i].havearg == ARG_HAVEARG_UNK3 )
 
   69                    if ( !strcmp(opttable[i].option, *argva) )
 
   76                    if ( !strncmp(opttable[i].option, *argva, strlen(opttable[i].option)) )
 
   82            if ( !opttable[i].option )
 
   86            if ( opttable[i].havearg != ARG_HAVEARG_NONE && opttable[i].havearg != ARG_HAVEARG_UNK3 )
 
   88                if ( opttable[i].havearg == ARG_HAVEARG_UNK4 || (*argva)[strlen(opttable[i].option)] )
 
   90                    opt = &(*argva)[strlen(opttable[i].option)];
 
   99            if ( opttable[i].havearg != ARG_HAVEARG_REQUIRED || opt )
 
  101                switch ( opttable[i].vartype )
 
  105                        if ( (*argva)[strlen(opttable[i].option)] )
 
  107                            *(uint32_t *)opttable[i].var = strtoul(&(*argva)[strlen(opttable[i].option)], NULL, 16);
 
  111                            *(uint32_t *)opttable[i].var = (opttable[i].vartype == 
'f') ? 1 : 0;
 
  117                            *(uint32_t *)opttable[i].var = strtoul(opt, 0, 16);
 
  123                            for ( otp = igadd; opttable < otp; otp -= 1 )
 
  128                            opttable->option = opt;
 
  129                            opttable->vartype = 
'n';
 
  130                            opttable->havearg = ARG_HAVEARG_UNK3;
 
  131                            cp = strchr(opttable->option, 
':');
 
  138                                        opttable->havearg = ARG_HAVEARG_UNK4;
 
  141                                        opttable->havearg = ARG_HAVEARG_REQUIRED;
 
  144                                        opttable->havearg = ARG_HAVEARG_UNK1;
 
  154                        optstr->string = opt;
 
  155                        *(
SLink **)opttable[i].var = add_ring_tail(*(
SLink **)opttable[i].var, (
SLink *)optstr);
 
  160                        *(
const char **)opttable[i].var = opt;
 
  163                        fprintf(stderr, 
"internal error\n");
 
  174            nargv[nargc] = *argva;