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)
{
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
char*longoption;
};
-int args_long2shortoption(options_t*options, char*name, char*val)
+int args_long2shortoption(struct options_t*options, char*name, char*val)
{
char*equal = strchr(name,'=');
if (equal) {
+(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);
}