* <misiek@misiek.eu.org>)
* Ported to Busybox - Alfred M. Szmidt <ams@trillian.itslinux.org>
* Removed --version/-V and --help/-h in
- * Removed prase_error(), using error_msg() from Busybox instead
+ * Removed prase_error(), using bb_error_msg() from Busybox instead
* Replaced our_malloc with xmalloc and our_realloc with xrealloc
*
*/
const char *argptr=arg;
char *bufptr;
- if (BUFFER != NULL)
- free(BUFFER);
+ free(BUFFER);
if (!quote) { /* Just copy arg */
- BUFFER=xmalloc(strlen(arg)+1);
-
- strcpy(BUFFER,arg);
+ BUFFER=bb_xstrdup(arg);
return BUFFER;
}
/* Register a long option. The contents of name is copied. */
void add_longopt(const char *name,int has_arg)
{
- char *tmp;
if (!name) { /* init */
free(long_options);
long_options=NULL;
long_options[long_options_nr-1].has_arg=has_arg;
long_options[long_options_nr-1].flag=NULL;
long_options[long_options_nr-1].val=LONG_OPT;
- tmp = xmalloc(strlen(name)+1);
- strcpy(tmp,name);
- long_options[long_options_nr-1].name=tmp;
+ long_options[long_options_nr-1].name=bb_xstrdup(name);
}
long_options_nr++;
}
arg_opt=required_argument;
}
if (tlen == 0)
- error_msg("empty long option after -l or --long argument");
+ bb_error_msg("empty long option after -l or --long argument");
}
add_longopt(tokptr,arg_opt);
}
else if (!strcmp(new_shell,"csh"))
shell=TCSH;
else
- error_msg("unknown shell after -s or --shell argument");
+ bb_error_msg("unknown shell after -s or --shell argument");
}
/* For some reason, the original getopt gave no error
when there were no arguments. */
printf(" --\n");
- exit(0);
+ return 0;
} else
- error_msg_and_die("missing optstring argument");
+ bb_error_msg_and_die("missing optstring argument");
}
if (argv[1][0] != '-' || compatible) {
optstr=xmalloc(strlen(argv[1])+1);
strcpy(optstr,argv[1]+strspn(argv[1],"-+"));
argv[1]=argv[0];
- exit(generate_output(argv+1,argc-1,optstr,long_options));
+ return (generate_output(argv+1,argc-1,optstr,long_options));
}
while ((opt=getopt_long(argc,argv,shortopts,longopts,NULL)) != EOF)
alternative=1;
break;
case 'o':
- if (optstr)
- free(optstr);
- optstr=xmalloc(strlen(optarg)+1);
- strcpy(optstr,optarg);
+ free(optstr);
+ optstr=bb_xstrdup(optarg);
break;
case 'l':
add_long_options(optarg);
break;
case 'n':
- if (name)
- free(name);
- name=xmalloc(strlen(optarg)+1);
- strcpy(name,optarg);
+ free(name);
+ name=bb_xstrdup(optarg);
break;
case 'q':
quiet_errors=1;
set_shell(optarg);
break;
case 'T':
- exit(4);
+ return 4;
case 'u':
quote=0;
break;
default:
- show_usage();
+ bb_show_usage();
}
if (!optstr) {
if (optind >= argc)
- error_msg_and_die("missing optstring argument");
+ bb_error_msg_and_die("missing optstring argument");
else {
- optstr=xmalloc(strlen(argv[optind])+1);
- strcpy(optstr,argv[optind]);
+ optstr=bb_xstrdup(argv[optind]);
optind++;
}
}
argv[optind-1]=name;
else
argv[optind-1]=argv[0];
- exit(generate_output(argv+optind-1,argc-optind+1,optstr,long_options));
+ return (generate_output(argv+optind-1,argc-optind+1,optstr,long_options));
}
/*