int getopt_main(int argc, char *argv[])
{
const char *optstr = NULL;
- const char *name = NULL;
+ char *name = NULL;
int opt;
int compatible=0;
}
if (argv[1][0] != '-' || compatible) {
+ char *s;
+
quote=0;
- optstr=xmalloc(strlen(argv[1])+1);
- strcpy(optstr,argv[1]+strspn(argv[1],"-+"));
+ s=xmalloc(strlen(argv[1])+1);
+ strcpy(s,argv[1]+strspn(argv[1],"-+"));
argv[1]=argv[0];
- return (generate_output(argv+1,argc-1,optstr,long_options));
+ return (generate_output(argv+1,argc-1,s,long_options));
}
while ((opt=getopt_long(argc,argv,shortopts,longopts,NULL)) != EOF)
alternative=1;
break;
case 'o':
- free(optstr);
optstr = optarg;
break;
case 'l':
add_long_options(optarg);
break;
case 'n':
- free(name);
name = optarg;
break;
case 'q':
if (!optstr) {
if (optind >= argc)
bb_error_msg_and_die("missing optstring argument");
- else {
- optstr=bb_xstrdup(argv[optind]);
- optind++;
- }
+ else optstr=argv[optind++];
}
if (name)
argv[optind-1]=name;