From f6baa2aad98a418cd21b857f825e772a987b7c93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Thu, 1 Jun 2017 13:29:51 +0300 Subject: main/musl: cherry-pick upstream fixes, add strftime gnu extensions ref #5907 --- ...lbn-when-result-is-in-the-subnormal-range.patch | 89 ++++++++++++++++ ...ion-in-support-for-resolv.conf-attempts-o.patch | 32 ++++++ ...yname-_r-return-ENODEV-rather-than-ENOENT.patch | 35 +++++++ ...t-new-posix_spawn-flag-POSIX_SPAWN_SETSID.patch | 44 ++++++++ ...add-no-op-POSIX_SPAWN_USEVFORK-to-spawn.h.patch | 27 +++++ ...spawnattr_setflags-check-for-supported-fl.patch | 44 ++++++++ ...conv-conversions-to-legacy-8bit-encodings.patch | 71 +++++++++++++ ...fchown-fallback-on-arches-without-chown-2.patch | 28 +++++ ...wupper-towlower-fast-path-for-ascii-chars.patch | 46 +++++++++ ...trftime-GNU-extension-padding-specifiers-.patch | 113 +++++++++++++++++++++ main/musl/APKBUILD | 22 +++- 11 files changed, 550 insertions(+), 1 deletion(-) create mode 100644 main/musl/0033-fix-scalbn-when-result-is-in-the-subnormal-range.patch create mode 100644 main/musl/0034-fix-regression-in-support-for-resolv.conf-attempts-o.patch create mode 100644 main/musl/0035-make-ttyname-_r-return-ENODEV-rather-than-ENOENT.patch create mode 100644 main/musl/0036-implement-new-posix_spawn-flag-POSIX_SPAWN_SETSID.patch create mode 100644 main/musl/0037-add-no-op-POSIX_SPAWN_USEVFORK-to-spawn.h.patch create mode 100644 main/musl/0038-have-posix_spawnattr_setflags-check-for-supported-fl.patch create mode 100644 main/musl/0039-fix-iconv-conversions-to-legacy-8bit-encodings.patch create mode 100644 main/musl/0040-fix-fchown-fallback-on-arches-without-chown-2.patch create mode 100644 main/musl/0041-towupper-towlower-fast-path-for-ascii-chars.patch create mode 100644 main/musl/1000-implement-strftime-GNU-extension-padding-specifiers-.patch (limited to 'main/musl') diff --git a/main/musl/0033-fix-scalbn-when-result-is-in-the-subnormal-range.patch b/main/musl/0033-fix-scalbn-when-result-is-in-the-subnormal-range.patch new file mode 100644 index 0000000000..a29a18efe5 --- /dev/null +++ b/main/musl/0033-fix-scalbn-when-result-is-in-the-subnormal-range.patch @@ -0,0 +1,89 @@ +From 8c44a060243f04283ca68dad199aab90336141db Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy +Date: Mon, 3 Apr 2017 02:38:13 +0200 +Subject: [PATCH] fix scalbn when result is in the subnormal range + +in nearest rounding mode scalbn could introduce double rounding error +when an intermediate value and the final result were both in the +subnormal range e.g. + + scalbn(0x1.7ffffffffffffp-1, -1073) + +returned 0x1p-1073 instead of 0x1p-1074, because the intermediate +computation got rounded to 0x1.8p-1023. + +with the fix an intermediate value can only be in the subnormal range +if the final result is 0 which is correct even after double rounding. +(there still can be two roundings so signals may be raised twice, but +that's only observable with trapping exceptions which is not supported.) +--- + src/math/scalbn.c | 10 ++++++---- + src/math/scalbnf.c | 8 ++++---- + src/math/scalbnl.c | 8 ++++---- + 3 files changed, 14 insertions(+), 12 deletions(-) + +diff --git a/src/math/scalbn.c b/src/math/scalbn.c +index 530e07c7..182f5610 100644 +--- a/src/math/scalbn.c ++++ b/src/math/scalbn.c +@@ -16,11 +16,13 @@ double scalbn(double x, int n) + n = 1023; + } + } else if (n < -1022) { +- y *= 0x1p-1022; +- n += 1022; ++ /* make sure final n < -53 to avoid double ++ rounding in the subnormal range */ ++ y *= 0x1p-1022 * 0x1p53; ++ n += 1022 - 53; + if (n < -1022) { +- y *= 0x1p-1022; +- n += 1022; ++ y *= 0x1p-1022 * 0x1p53; ++ n += 1022 - 53; + if (n < -1022) + n = -1022; + } +diff --git a/src/math/scalbnf.c b/src/math/scalbnf.c +index 0b62c3c7..a5ad208b 100644 +--- a/src/math/scalbnf.c ++++ b/src/math/scalbnf.c +@@ -16,11 +16,11 @@ float scalbnf(float x, int n) + n = 127; + } + } else if (n < -126) { +- y *= 0x1p-126f; +- n += 126; ++ y *= 0x1p-126f * 0x1p24f; ++ n += 126 - 24; + if (n < -126) { +- y *= 0x1p-126f; +- n += 126; ++ y *= 0x1p-126f * 0x1p24f; ++ n += 126 - 24; + if (n < -126) + n = -126; + } +diff --git a/src/math/scalbnl.c b/src/math/scalbnl.c +index 08a4c587..db44dab0 100644 +--- a/src/math/scalbnl.c ++++ b/src/math/scalbnl.c +@@ -20,11 +20,11 @@ long double scalbnl(long double x, int n) + n = 16383; + } + } else if (n < -16382) { +- x *= 0x1p-16382L; +- n += 16382; ++ x *= 0x1p-16382L * 0x1p113L; ++ n += 16382 - 113; + if (n < -16382) { +- x *= 0x1p-16382L; +- n += 16382; ++ x *= 0x1p-16382L * 0x1p113L; ++ n += 16382 - 113; + if (n < -16382) + n = -16382; + } +-- +2.13.0 + diff --git a/main/musl/0034-fix-regression-in-support-for-resolv.conf-attempts-o.patch b/main/musl/0034-fix-regression-in-support-for-resolv.conf-attempts-o.patch new file mode 100644 index 0000000000..fdd9c028ce --- /dev/null +++ b/main/musl/0034-fix-regression-in-support-for-resolv.conf-attempts-o.patch @@ -0,0 +1,32 @@ +From 1a7fa5e5211a67e89861583516ee1566609467a1 Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Fri, 21 Apr 2017 17:34:26 -0400 +Subject: [PATCH] fix regression in support for resolv.conf attempts option + +commit d6cb08bcaca4ff1f921375510ca72bccea969c75 moved the code and +introduced an incorrect string offset for the new parsing, probably +due to a copy-and-paste error. + +patch by Stefan Sedich. +--- + src/network/resolvconf.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/network/resolvconf.c b/src/network/resolvconf.c +index 2cf1f475..4c3e4c4b 100644 +--- a/src/network/resolvconf.c ++++ b/src/network/resolvconf.c +@@ -45,8 +45,8 @@ int __get_resolv_conf(struct resolvconf *conf, char *search, size_t search_sz) + if (z != p) conf->ndots = x > 15 ? 15 : x; + } + p = strstr(line, "attempts:"); +- if (p && isdigit(p[6])) { +- p += 6; ++ if (p && isdigit(p[9])) { ++ p += 9; + unsigned long x = strtoul(p, &z, 10); + if (z != p) conf->attempts = x > 10 ? 10 : x; + } +-- +2.13.0 + diff --git a/main/musl/0035-make-ttyname-_r-return-ENODEV-rather-than-ENOENT.patch b/main/musl/0035-make-ttyname-_r-return-ENODEV-rather-than-ENOENT.patch new file mode 100644 index 0000000000..c6fed3afd4 --- /dev/null +++ b/main/musl/0035-make-ttyname-_r-return-ENODEV-rather-than-ENOENT.patch @@ -0,0 +1,35 @@ +From e1232f5b5185e8f337806841018369407e32e77d Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Fri, 21 Apr 2017 17:41:10 -0400 +Subject: [PATCH] make ttyname[_r] return ENODEV rather than ENOENT + +commit 0a950dcf15bb9f7274c804dca490e9e20e475f3e added checking that +the pathname a tty device was opened with actually matches the device, +which can fail to hold when a container inherits a tty from outside +the container. the error code added at the time was ENOENT; however, +discussions between affected applications and glibc developers +resulted in glibc adopting ENODEV as the error for this condition, and +this has now been documented in the man pages project as well. adopt +the same error code for consistency. + +patch by Christian Brauner. +--- + src/unistd/ttyname_r.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/unistd/ttyname_r.c b/src/unistd/ttyname_r.c +index a38ba4f2..33aa4ae1 100644 +--- a/src/unistd/ttyname_r.c ++++ b/src/unistd/ttyname_r.c +@@ -23,7 +23,7 @@ int ttyname_r(int fd, char *name, size_t size) + if (stat(name, &st1) || fstat(fd, &st2)) + return errno; + if (st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) +- return ENOENT; ++ return ENODEV; + + return 0; + } +-- +2.13.0 + diff --git a/main/musl/0036-implement-new-posix_spawn-flag-POSIX_SPAWN_SETSID.patch b/main/musl/0036-implement-new-posix_spawn-flag-POSIX_SPAWN_SETSID.patch new file mode 100644 index 0000000000..4e39d63697 --- /dev/null +++ b/main/musl/0036-implement-new-posix_spawn-flag-POSIX_SPAWN_SETSID.patch @@ -0,0 +1,44 @@ +From bb439bb17108b67f3df9c9af824d3a607b5b059d Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Sat, 22 Apr 2017 18:39:40 -0400 +Subject: [PATCH] implement new posix_spawn flag POSIX_SPAWN_SETSID + +this functionality has been adopted for inclusion in the next issue of +POSIX as the result of Austin Group issue #1044. + +based on patch by Daurnimator. +--- + include/spawn.h | 1 + + src/process/posix_spawn.c | 4 ++++ + 2 files changed, 5 insertions(+) + +diff --git a/include/spawn.h b/include/spawn.h +index 29c799ee..f3e9e23c 100644 +--- a/include/spawn.h ++++ b/include/spawn.h +@@ -21,6 +21,7 @@ struct sched_param; + #define POSIX_SPAWN_SETSIGMASK 8 + #define POSIX_SPAWN_SETSCHEDPARAM 16 + #define POSIX_SPAWN_SETSCHEDULER 32 ++#define POSIX_SPAWN_SETSID 128 + + typedef struct { + int __flags; +diff --git a/src/process/posix_spawn.c b/src/process/posix_spawn.c +index 0bdf71cd..ea5d2998 100644 +--- a/src/process/posix_spawn.c ++++ b/src/process/posix_spawn.c +@@ -73,6 +73,10 @@ static int child(void *args_vp) + __libc_sigaction(i, &sa, 0); + } + ++ if (attr->__flags & POSIX_SPAWN_SETSID) ++ if ((ret=__syscall(SYS_setsid)) < 0) ++ goto fail; ++ + if (attr->__flags & POSIX_SPAWN_SETPGROUP) + if ((ret=__syscall(SYS_setpgid, 0, attr->__pgrp))) + goto fail; +-- +2.13.0 + diff --git a/main/musl/0037-add-no-op-POSIX_SPAWN_USEVFORK-to-spawn.h.patch b/main/musl/0037-add-no-op-POSIX_SPAWN_USEVFORK-to-spawn.h.patch new file mode 100644 index 0000000000..735e919210 --- /dev/null +++ b/main/musl/0037-add-no-op-POSIX_SPAWN_USEVFORK-to-spawn.h.patch @@ -0,0 +1,27 @@ +From 77e895dcfadb156c9f378d26c9d0497ce2baf13f Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Sat, 22 Apr 2017 20:40:09 -0400 +Subject: [PATCH] add no-op POSIX_SPAWN_USEVFORK to spawn.h + +the bit is reserved anyway for ABI-compat reasons; this documents it +and makes it so we can have posix_spawnattr_setflags check for flag +validity without hard-coding an anonymous bit value. +--- + include/spawn.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/spawn.h b/include/spawn.h +index f3e9e23c..bba57ce4 100644 +--- a/include/spawn.h ++++ b/include/spawn.h +@@ -21,6 +21,7 @@ struct sched_param; + #define POSIX_SPAWN_SETSIGMASK 8 + #define POSIX_SPAWN_SETSCHEDPARAM 16 + #define POSIX_SPAWN_SETSCHEDULER 32 ++#define POSIX_SPAWN_USEVFORK 64 + #define POSIX_SPAWN_SETSID 128 + + typedef struct { +-- +2.13.0 + diff --git a/main/musl/0038-have-posix_spawnattr_setflags-check-for-supported-fl.patch b/main/musl/0038-have-posix_spawnattr_setflags-check-for-supported-fl.patch new file mode 100644 index 0000000000..3c2e944bbb --- /dev/null +++ b/main/musl/0038-have-posix_spawnattr_setflags-check-for-supported-fl.patch @@ -0,0 +1,44 @@ +From f9f686b7721e2cc35e20fa5c6df6da2dc4ac3f50 Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Sat, 22 Apr 2017 20:45:16 -0400 +Subject: [PATCH] have posix_spawnattr_setflags check for supported flags + +per POSIX, EINVAL is not a mandatory error, only an optional one. but +reporting unsupported flags allows an application to fallback +gracefully when a requested feature is not supported. this is not +helpful now, but it may be in the future if additional flags are +added. + +had this checking been present before, applications would have been +able to check for the newly-added POSIX_SPAWN_SETSID feature (added in +commit bb439bb17108b67f3df9c9af824d3a607b5b059d) at runtime. +--- + src/process/posix_spawnattr_setflags.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/src/process/posix_spawnattr_setflags.c b/src/process/posix_spawnattr_setflags.c +index f750c040..68780992 100644 +--- a/src/process/posix_spawnattr_setflags.c ++++ b/src/process/posix_spawnattr_setflags.c +@@ -1,7 +1,18 @@ + #include ++#include + + int posix_spawnattr_setflags(posix_spawnattr_t *attr, short flags) + { ++ const unsigned all_flags = ++ POSIX_SPAWN_RESETIDS | ++ POSIX_SPAWN_SETPGROUP | ++ POSIX_SPAWN_SETSIGDEF | ++ POSIX_SPAWN_SETSIGMASK | ++ POSIX_SPAWN_SETSCHEDPARAM | ++ POSIX_SPAWN_SETSCHEDULER | ++ POSIX_SPAWN_USEVFORK | ++ POSIX_SPAWN_SETSID; ++ if (flags & ~all_flags) return EINVAL; + attr->__flags = flags; + return 0; + } +-- +2.13.0 + diff --git a/main/musl/0039-fix-iconv-conversions-to-legacy-8bit-encodings.patch b/main/musl/0039-fix-iconv-conversions-to-legacy-8bit-encodings.patch new file mode 100644 index 0000000000..be89291505 --- /dev/null +++ b/main/musl/0039-fix-iconv-conversions-to-legacy-8bit-encodings.patch @@ -0,0 +1,71 @@ +From 97bd6b09dbe7478d5a90a06ecd9e5b59389d8eb9 Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Sat, 27 May 2017 21:36:00 -0400 +Subject: [PATCH] fix iconv conversions to legacy 8bit encodings + +there was missing reverse-conversion logic for the case, handled +specially in the character set tables, where a byte represents a +unicode codepoint with the same value. + +this patch adds code to handle the case, and refactors the two-level +10-bit table lookup for legacy character sets into a function to avoid +repeating it yet another time as part of the fix. +--- + src/locale/iconv.c | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +diff --git a/src/locale/iconv.c b/src/locale/iconv.c +index 1eeea94e..4636307f 100644 +--- a/src/locale/iconv.c ++++ b/src/locale/iconv.c +@@ -151,6 +151,14 @@ static void put_32(unsigned char *s, unsigned c, int e) + #define mbrtowc_utf8 mbrtowc + #define wctomb_utf8 wctomb + ++static unsigned legacy_map(const unsigned char *map, unsigned c) ++{ ++ unsigned x = c - 128 + map[-1]; ++ x = legacy_chars[ map[x*5/4]>>2*x%8 | ++ map[x*5/4+1]<<8-2*x%8 & 1023 ]; ++ return x ? x : c; ++} ++ + size_t iconv(iconv_t cd0, char **restrict in, size_t *restrict inb, char **restrict out, size_t *restrict outb) + { + size_t x=0; +@@ -364,10 +372,7 @@ size_t iconv(iconv_t cd0, char **restrict in, size_t *restrict inb, char **restr + break; + default: + if (c < 128+type) break; +- c -= 128+type; +- c = legacy_chars[ map[c*5/4]>>2*c%8 | +- map[c*5/4+1]<<8-2*c%8 & 1023 ]; +- if (!c) c = *(unsigned char *)*in; ++ c = legacy_map(map, c); + if (c==1) goto ilseq; + } + +@@ -392,17 +397,15 @@ size_t iconv(iconv_t cd0, char **restrict in, size_t *restrict inb, char **restr + if (c > 0x7f) subst: x++, c='*'; + default: + if (*outb < 1) goto toobig; +- if (c < 128+totype) { ++ if (c < 128+totype || (c<256 && c==legacy_map(tomap, c))) { + revout: + *(*out)++ = c; + *outb -= 1; + break; + } + d = c; +- for (c=0; c<128-totype; c++) { +- if (d == legacy_chars[ tomap[c*5/4]>>2*c%8 | +- tomap[c*5/4+1]<<8-2*c%8 & 1023 ]) { +- c += 128; ++ for (c=128+totype; c<256; c++) { ++ if (d == legacy_map(tomap, c)) { + goto revout; + } + } +-- +2.13.0 + diff --git a/main/musl/0040-fix-fchown-fallback-on-arches-without-chown-2.patch b/main/musl/0040-fix-fchown-fallback-on-arches-without-chown-2.patch new file mode 100644 index 0000000000..bfe3a93ed9 --- /dev/null +++ b/main/musl/0040-fix-fchown-fallback-on-arches-without-chown-2.patch @@ -0,0 +1,28 @@ +From 81f4a1200a58a84c83e73da645d4f226a8785bdf Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sat, 27 May 2017 15:20:01 -0500 +Subject: [PATCH] fix fchown fallback on arches without chown(2) + +The flags argument was missing, causing uninitalized data to be passed +to fchownat(2). The correct value of flags should match the fallback for +chown(3). +--- + src/unistd/fchown.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/unistd/fchown.c b/src/unistd/fchown.c +index 03459849..75075eec 100644 +--- a/src/unistd/fchown.c ++++ b/src/unistd/fchown.c +@@ -16,7 +16,7 @@ int fchown(int fd, uid_t uid, gid_t gid) + #ifdef SYS_chown + return syscall(SYS_chown, buf, uid, gid); + #else +- return syscall(SYS_fchownat, AT_FDCWD, buf, uid, gid); ++ return syscall(SYS_fchownat, AT_FDCWD, buf, uid, gid, 0); + #endif + + } +-- +2.13.0 + diff --git a/main/musl/0041-towupper-towlower-fast-path-for-ascii-chars.patch b/main/musl/0041-towupper-towlower-fast-path-for-ascii-chars.patch new file mode 100644 index 0000000000..5a45eb39eb --- /dev/null +++ b/main/musl/0041-towupper-towlower-fast-path-for-ascii-chars.patch @@ -0,0 +1,46 @@ +From 179766aa2ef06df854bc1d9616bf6f00ce49b7f9 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Tue, 30 May 2017 14:23:24 +0200 +Subject: [PATCH] towupper/towlower: fast path for ascii chars + +Make a fast path for ascii chars which is assumed to be the most common +case. This has significant performance benefit on xml json and similar +--- + src/ctype/towctrans.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/ctype/towctrans.c b/src/ctype/towctrans.c +index 6af61875..cf13a862 100644 +--- a/src/ctype/towctrans.c ++++ b/src/ctype/towctrans.c +@@ -1,3 +1,4 @@ ++#include + #include + #include "libc.h" + +@@ -9,7 +10,6 @@ static const struct { + signed char lower; + unsigned char len; + } casemaps[] = { +- CASEMAP('A','Z','a'), + CASEMAP(0xc0,0xde,0xe0), + + CASELACE(0x0100,0x012e), +@@ -257,12 +257,12 @@ static wchar_t __towcase(wchar_t wc, int lower) + + wint_t towupper(wint_t wc) + { +- return __towcase(wc, 0); ++ return (unsigned)wc < 128 ? toupper(wc) : __towcase(wc, 0); + } + + wint_t towlower(wint_t wc) + { +- return __towcase(wc, 1); ++ return (unsigned)wc < 128 ? tolower(wc) : __towcase(wc, 1); + } + + wint_t __towupper_l(wint_t c, locale_t l) +-- +2.13.0 + diff --git a/main/musl/1000-implement-strftime-GNU-extension-padding-specifiers-.patch b/main/musl/1000-implement-strftime-GNU-extension-padding-specifiers-.patch new file mode 100644 index 0000000000..d943d5bef5 --- /dev/null +++ b/main/musl/1000-implement-strftime-GNU-extension-padding-specifiers-.patch @@ -0,0 +1,113 @@ +From 07285bbc354fa2882b01b01ccec439f3a986e966 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= +Date: Tue, 22 Nov 2016 09:17:46 +0200 +Subject: [PATCH] implement strftime GNU extension padding specifiers '_', '-' + and '0' + +--- + src/time/strftime.c | 31 +++++++++++++++++++++---------- + 1 file changed, 21 insertions(+), 10 deletions(-) + +diff --git a/src/time/strftime.c b/src/time/strftime.c +index a3039204..733e4e28 100644 +--- a/src/time/strftime.c ++++ b/src/time/strftime.c +@@ -46,9 +46,9 @@ static int week_num(const struct tm *tm) + } + + const char *__tm_to_tzname(const struct tm *); +-size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t); ++static size_t __strftime_impl(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t, int); + +-const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *tm, locale_t loc) ++const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *tm, locale_t loc, int pad) + { + nl_item item; + long long val; +@@ -79,15 +79,14 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm * + case 'C': + val = (1900LL+tm->tm_year) / 100; + goto number; ++ case 'e': ++ pad = '_'; + case 'd': + val = tm->tm_mday; + goto number; + case 'D': + fmt = "%m/%d/%y"; + goto recu_strftime; +- case 'e': +- *l = snprintf(*s, sizeof *s, "%2d", tm->tm_mday); +- return *s; + case 'F': + fmt = "%Y-%m-%d"; + goto recu_strftime; +@@ -200,7 +199,12 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm * + return 0; + } + number: +- *l = snprintf(*s, sizeof *s, "%0*lld", width, val); ++ switch (pad) { ++ case '-': *l = snprintf(*s, sizeof *s, "%lld", val); break; ++ case '_': *l = snprintf(*s, sizeof *s, "%*lld", width, val); break; ++ case '0': ++ default: *l = snprintf(*s, sizeof *s, "%0*lld", width, val); break; ++ } + return *s; + nl_strcat: + fmt = __nl_langinfo_l(item, loc); +@@ -210,18 +214,18 @@ string: + nl_strftime: + fmt = __nl_langinfo_l(item, loc); + recu_strftime: +- *l = __strftime_l(*s, sizeof *s, fmt, tm, loc); ++ *l = __strftime_impl(*s, sizeof *s, fmt, tm, loc, pad); + if (!*l) return 0; + return *s; + } + +-size_t __strftime_l(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm, locale_t loc) ++static size_t __strftime_impl(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm, locale_t loc, int def_pad) + { + size_t l, k; + char buf[100]; + char *p; + const char *t; +- int plus; ++ int plus, pad; + unsigned long width; + for (l=0; l pkgname=musl pkgver=1.1.16 -pkgrel=9 +pkgrel=10 pkgdesc="the musl c library (libc) implementation" url="http://www.musl-libc.org/" arch="all" @@ -49,6 +49,16 @@ source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz 0030-fix-dlopen-dlsym-regression-opening-libs-already-loa.patch 0031-s390x-provide-a-working-sigcontext-struct-definition.patch 0032-fix-support-for-dl_iterate_phdr-in-static-pie-binaries.patch + 0033-fix-scalbn-when-result-is-in-the-subnormal-range.patch + 0034-fix-regression-in-support-for-resolv.conf-attempts-o.patch + 0035-make-ttyname-_r-return-ENODEV-rather-than-ENOENT.patch + 0036-implement-new-posix_spawn-flag-POSIX_SPAWN_SETSID.patch + 0037-add-no-op-POSIX_SPAWN_USEVFORK-to-spawn.h.patch + 0038-have-posix_spawnattr_setflags-check-for-supported-fl.patch + 0039-fix-iconv-conversions-to-legacy-8bit-encodings.patch + 0040-fix-fchown-fallback-on-arches-without-chown-2.patch + 0041-towupper-towlower-fast-path-for-ascii-chars.patch + 1000-implement-strftime-GNU-extension-padding-specifiers-.patch ldconfig __stack_chk_fail_local.c @@ -201,6 +211,16 @@ dad1ed979898ddaa0a49c601160a948ba229b251307210a14240e4ebf6230b16ffc0138f396fc226 adcb5b213ebd9fc5d50cc46d4444ed64a4f928a6b4767428d7d720c6a563ba1d4a3173d6546b41379356b155a26eaad652d7b831776cc3f31e942f155db9239d 0030-fix-dlopen-dlsym-regression-opening-libs-already-loa.patch 5601b5b56b0b2f4703ec4eb628f7eef78a130afc26979fb3d29c459cb168c62c13c3698a779ad7bbea8fb78d5f7cc02d465185a24bf9a06f6764a01fbd41dc04 0031-s390x-provide-a-working-sigcontext-struct-definition.patch 690daa7f4c7ba0d24e103299406226849ad1314e2f3ea32cc571a6cdf0bac097b24fa3efa228b03ea495d9d437c9dd90eebe7b0268f94b7e19861100f84fa66e 0032-fix-support-for-dl_iterate_phdr-in-static-pie-binaries.patch +324a933364e20f9ceb390bc6e8a1f5486fb44db5b83147a701be52be8f87b98155810ea2e8b13c433dfc8c326c0ef930f83f434fa61b7103cb055c34c34d1c3f 0033-fix-scalbn-when-result-is-in-the-subnormal-range.patch +db79ea5c8f6ffa1d60a99320370814fda4c42a20b7e18fee73f27ad76d26ef0380b033c116d7beec7c5f7b061f04fd9f776048d8cebd7381f07bf6ecc3cbc62d 0034-fix-regression-in-support-for-resolv.conf-attempts-o.patch +af9c68842ae13588a2fbbae0c32a39e34d21fb21fe360457f0964b89dfc845f7579c3b2e50c9a59e816d72388c50702eeb35b8acf70b36664be7abcb8c77b606 0035-make-ttyname-_r-return-ENODEV-rather-than-ENOENT.patch +e20524ef4acea8c6c0be53dfa65c8d40054637cc5e475b80d81949fc24609714eaba302957a4d6d8c29e0c77153b7631969349f59716fd2eb1144136ae244b6b 0036-implement-new-posix_spawn-flag-POSIX_SPAWN_SETSID.patch +4fee74a7e7a16fed6e5c3e4d2cee79e0720d8db616b7571318c2ebfa622339724543bc02221a50324521c67845db3f74cbe2c3800efdcab15ed54fbf8bcdeae6 0037-add-no-op-POSIX_SPAWN_USEVFORK-to-spawn.h.patch +be15b749bec54ef342afa252d7fe46a644d2fcb77336719e57db613036d5f65531a03b17c9c5f92abcffebe45df4116b0adc477cc11533e656ee0fc82908cd76 0038-have-posix_spawnattr_setflags-check-for-supported-fl.patch +0f0cea53dba8a9ecbd493ce94fe17a22f814f3a35dbbb0a40749b926f78f5cec29d39d2dd3e803a9006e7a2b52f93917d6b19230457932c2681e4c395d752715 0039-fix-iconv-conversions-to-legacy-8bit-encodings.patch +9c71b7382cfe7a4480671b4e3bc18db79e68935ae271f0b6d43cd46d0ae87b059322592a0ca96f9e95779c57953708f1891e588e1b17d4b73f286a2d45ee1fd4 0040-fix-fchown-fallback-on-arches-without-chown-2.patch +11bde485e070cdbca2f7c1a441152f608dad1273fb8a3c3206e02e81308806e9bb9ff5a50e50a00486d4d69c65d9eda6b9a1ad4897e828241b8c07acaaf869ea 0041-towupper-towlower-fast-path-for-ascii-chars.patch +7e4c703e57a3564cd3ee1d5334b806cbe654355179ba55d4d25361dfc555eb4a7d081d80d64fdaff8476949afd04558d278b124d1fb108080beaa5ba2f8ce2b9 1000-implement-strftime-GNU-extension-padding-specifiers-.patch 8d3a2d5315fc56fee7da9abb8b89bb38c6046c33d154c10d168fb35bfde6b0cf9f13042a3bceee34daf091bc409d699223735dcf19f382eeee1f6be34154f26f ldconfig 062bb49fa54839010acd4af113e20f7263dde1c8a2ca359b5fb2661ef9ed9d84a0f7c3bc10c25dcfa10bb3c5a4874588dff636ac43d5dbb3d748d75400756d0b __stack_chk_fail_local.c 0d80f37b34a35e3d14b012257c50862dfeb9d2c81139ea2dfa101d981d093b009b9fa450ba27a708ac59377a48626971dfc58e20a3799084a65777a0c32cbc7d getconf.c -- cgit v1.2.3