diff options
Diffstat (limited to 'main/musl/0020-support-abbreviated-options-in-getopt_long.patch')
-rw-r--r-- | main/musl/0020-support-abbreviated-options-in-getopt_long.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/main/musl/0020-support-abbreviated-options-in-getopt_long.patch b/main/musl/0020-support-abbreviated-options-in-getopt_long.patch new file mode 100644 index 0000000000..6cc3d9893b --- /dev/null +++ b/main/musl/0020-support-abbreviated-options-in-getopt_long.patch @@ -0,0 +1,58 @@ +From cfd7b4acd55420deedd41e0614c9b614c73c743e Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Wed, 10 Dec 2014 21:26:49 -0500 +Subject: [PATCH] support abbreviated options in getopt_long + +--- + src/misc/getopt_long.c | 25 ++++++++++++++++++------- + 1 file changed, 18 insertions(+), 7 deletions(-) + +diff --git a/src/misc/getopt_long.c b/src/misc/getopt_long.c +index 643e598..469ee92 100644 +--- a/src/misc/getopt_long.c ++++ b/src/misc/getopt_long.c +@@ -56,23 +56,34 @@ static int __getopt_long_core(int argc, char *const *argv, const char *optstring + ((longonly && argv[optind][1]) || + (argv[optind][1] == '-' && argv[optind][2]))) + { +- int i; +- for (i=0; longopts[i].name; i++) { ++ int i, cnt, match; ++ char *opt; ++ for (cnt=i=0; longopts[i].name; i++) { + const char *name = longopts[i].name; +- char *opt = argv[optind]+1; ++ opt = argv[optind]+1; + if (*opt == '-') opt++; + for (; *name && *name == *opt; name++, opt++); +- if (*name || (*opt && *opt != '=')) continue; ++ if (*opt && *opt != '=') continue; ++ match = i; ++ if (!*name) { ++ cnt = 1; ++ break; ++ } ++ cnt++; ++ } ++ if (cnt==1) { ++ i = match; ++ optind++; + if (*opt == '=') { +- if (!longopts[i].has_arg) continue; ++ if (!longopts[i].has_arg) return '?'; + optarg = opt+1; + } else { + if (longopts[i].has_arg == required_argument) { +- if (!(optarg = argv[++optind])) ++ if (!(optarg = argv[optind])) + return ':'; ++ optind++; + } else optarg = NULL; + } +- optind++; + if (idx) *idx = i; + if (longopts[i].flag) { + *longopts[i].flag = longopts[i].val; +-- +2.2.0 + |