aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0015-fix-getopt-handling-of-modifier-for-multibyte-option.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/musl/0015-fix-getopt-handling-of-modifier-for-multibyte-option.patch')
-rw-r--r--main/musl/0015-fix-getopt-handling-of-modifier-for-multibyte-option.patch57
1 files changed, 0 insertions, 57 deletions
diff --git a/main/musl/0015-fix-getopt-handling-of-modifier-for-multibyte-option.patch b/main/musl/0015-fix-getopt-handling-of-modifier-for-multibyte-option.patch
deleted file mode 100644
index dc41304726..0000000000
--- a/main/musl/0015-fix-getopt-handling-of-modifier-for-multibyte-option.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 014275b547e3059db5c45986408757c250e8198d Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Thu, 4 Dec 2014 10:23:33 -0500
-Subject: [PATCH] fix getopt handling of ':' modifier for multibyte option
- characters
-
-the previous hard-coded offsets of +1 and +2 contained a hidden
-assumption that the option character matched was single-byte, despite
-this implementation of getopt attempting to support multibyte option
-characters. this patch reworks the matching logic to leave the final
-index pointing just past the matched character so that fixed offsets
-can be used to check for ':'.
----
- src/misc/getopt.c | 13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
-
-diff --git a/src/misc/getopt.c b/src/misc/getopt.c
-index a698c8d..52aa7a3 100644
---- a/src/misc/getopt.c
-+++ b/src/misc/getopt.c
-@@ -58,7 +58,12 @@ int getopt(int argc, char * const argv[], const char *optstring)
- if (optstring[0] == '-')
- optstring++;
-
-- for (i=0; (l = mbtowc(&d, optstring+i, MB_LEN_MAX)) && d!=c; i+=l>0?l:1);
-+ i = 0;
-+ d = 0;
-+ do {
-+ l = mbtowc(&d, optstring+i, MB_LEN_MAX);
-+ if (l>0) i+=l; else i++;
-+ } while (l && d != c);
-
- if (d != c) {
- if (optstring[0] != ':' && opterr) {
-@@ -69,8 +74,8 @@ int getopt(int argc, char * const argv[], const char *optstring)
- }
- return '?';
- }
-- if (optstring[i+1] == ':') {
-- if (optstring[i+2] == ':') optarg = 0;
-+ if (optstring[i] == ':') {
-+ if (optstring[i+1] == ':') optarg = 0;
- else if (optind >= argc) {
- if (optstring[0] == ':') return ':';
- if (opterr) {
-@@ -81,7 +86,7 @@ int getopt(int argc, char * const argv[], const char *optstring)
- }
- return '?';
- }
-- if (optstring[i+2] != ':' || optpos) {
-+ if (optstring[i+1] != ':' || optpos) {
- optarg = argv[optind++] + optpos;
- optpos = 0;
- }
---
-2.2.0
-