X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fargs.h;h=551623ece799f6a88f6d431bd7b5fdac0d233342;hb=e29229a3ea9992a5422f03846bab43035463e14c;hp=c1ed3e318ee1138b506bdaf644277f59d02be00d;hpb=83f7edec866e46e30529e7e9169900c5b13423cb;p=swftools.git diff --git a/lib/args.h b/lib/args.h index c1ed3e3..551623e 100644 --- a/lib/args.h +++ b/lib/args.h @@ -15,8 +15,8 @@ extern int args_callback_longoption(char*,char*); extern int args_callback_command(char*,char*); extern void args_callback_usage(char*name); -int argn; -char**argv; +//int argn; +//char**argv; void processargs(int argn2,char**argv2) { @@ -50,7 +50,28 @@ void processargs(int argn2,char**argv2) args_callback_usage(argv2[0]); exit(1); } - t+=args_callback_option(&argv2[t][1],next); + if(argv2[t][1]) // this might be something like e.g. -xvf + { + char buf[2]; + buf[1]=0; + int s=1; + int ret; + do{ + if(argv2[t][s+1]) { + buf[0] = argv2[t][s]; + ret = args_callback_option(buf,&argv2[t][s+1]); + } + else { + t+= args_callback_option(&argv2[t][s], next); + break; + } + s++; + } while(!ret); + } + else // - usually means "read stdout" + { + t+=args_callback_option(&argv2[t][1],next); + } } } else @@ -79,7 +100,12 @@ int args_long2shortoption(struct options_t*options, char*name, char*val) +(equal?strlen(equal)+2:2)); strcpy(tmp, options->shortoption); if(equal) { - strcpy(&tmp[strlen(tmp)], equal); + //strcpy(&tmp[strlen(tmp)], equal); + int ret = args_callback_option(tmp, equal); + if(!ret) { + fprintf(stderr, "Warning: Option --%s takes no parameter.\n", name); + } + return 0; } return args_callback_option(tmp,val); }