getopt32: fix "tar x" case; fix memory leak
This commit is contained in:
parent
71e3ab327a
commit
765c1c3c31
@ -494,7 +494,7 @@ getopt32(char **argv, const char *applet_opts, ...)
|
|||||||
va_end(p);
|
va_end(p);
|
||||||
|
|
||||||
if (spec_flgs & FIRST_ARGV_IS_OPT) {
|
if (spec_flgs & FIRST_ARGV_IS_OPT) {
|
||||||
if (argv[1] && argv[1][0] != '-' && argv[1][1] != '\0') {
|
if (argv[1] && argv[1][0] != '-' && argv[1][0] != '\0') {
|
||||||
#if DONT_USE_PRINTF
|
#if DONT_USE_PRINTF
|
||||||
char *pp = alloca(strlen(argv[1]) + 2);
|
char *pp = alloca(strlen(argv[1]) + 2);
|
||||||
*pp = '-';
|
*pp = '-';
|
||||||
@ -502,8 +502,7 @@ getopt32(char **argv, const char *applet_opts, ...)
|
|||||||
argv[1] = pp;
|
argv[1] = pp;
|
||||||
#else
|
#else
|
||||||
argv[1] = xasprintf("-%s", argv[1]);
|
argv[1] = xasprintf("-%s", argv[1]);
|
||||||
if (ENABLE_FEATURE_CLEAN_UP)
|
spec_flgs |= FREE_FIRST_ARGV_IS_OPT;
|
||||||
spec_flgs |= FREE_FIRST_ARGV_IS_OPT;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -586,10 +585,9 @@ getopt32(char **argv, const char *applet_opts, ...)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_FEATURE_CLEAN_UP
|
|
||||||
if (spec_flgs & FREE_FIRST_ARGV_IS_OPT)
|
if (spec_flgs & FREE_FIRST_ARGV_IS_OPT)
|
||||||
free(argv[1]);
|
free(argv[1]);
|
||||||
#endif
|
|
||||||
/* check depending requires for given options */
|
/* check depending requires for given options */
|
||||||
for (on_off = complementary; on_off->opt_char; on_off++) {
|
for (on_off = complementary; on_off->opt_char; on_off++) {
|
||||||
if (on_off->requires && (flags & on_off->switch_on) &&
|
if (on_off->requires && (flags & on_off->switch_on) &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user