diff options
author | Timo Teräs <timo.teras@iki.fi> | 2018-04-10 05:48:31 +0000 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2018-04-10 05:48:31 +0000 |
commit | bda9cddfa33708bb55b5cc1ccf4c844ba6c9284a (patch) | |
tree | cbdfc7fa531b41e3d13380a1a10b7a23790d4cb0 /main/musl/0004-implement-wcsftime-padding-specifier-extensions.patch | |
parent | cbd6d5b76a903b24dc51fe354c0c8265f3f1a9a3 (diff) | |
download | aports-bda9cddfa33708bb55b5cc1ccf4c844ba6c9284a.tar.bz2 aports-bda9cddfa33708bb55b5cc1ccf4c844ba6c9284a.tar.xz |
main/musl: cherry-pick additional upstream fixes
Diffstat (limited to 'main/musl/0004-implement-wcsftime-padding-specifier-extensions.patch')
-rw-r--r-- | main/musl/0004-implement-wcsftime-padding-specifier-extensions.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/main/musl/0004-implement-wcsftime-padding-specifier-extensions.patch b/main/musl/0004-implement-wcsftime-padding-specifier-extensions.patch new file mode 100644 index 0000000000..93eb7fb6de --- /dev/null +++ b/main/musl/0004-implement-wcsftime-padding-specifier-extensions.patch @@ -0,0 +1,63 @@ +From ea81529fb92932a50f06bf7a19cae812ae6cdb59 Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sat, 7 Apr 2018 09:47:16 -0500 +Subject: [PATCH] implement wcsftime padding specifier extensions + +Commit 8a6bd7307da3fc4d08dd6a9277b611ccb4971354 added support for +padding specifier extensions to strftime, but did not modify wcsftime. +In the process, it added a parameter to __strftime_fmt_1 in strftime.c, +but failed to update the prototype in wcsftime.c. This was found by +compiling musl with LTO: + + src/time/wcsftime.c:7:13: warning: type of '__strftime_fmt_1' does \ + not match original declaration [-Wlto-type-mismatch] + +Fix the prototype of __strftime_fmt_1 in wcsftime.c, and generate the +'pad' argument the same way as it is done in strftime. +--- + src/time/wcsftime.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/time/wcsftime.c b/src/time/wcsftime.c +index 638e64f6..23500cc8 100644 +--- a/src/time/wcsftime.c ++++ b/src/time/wcsftime.c +@@ -4,7 +4,7 @@ + #include "locale_impl.h" + #include "libc.h" + +-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); + + size_t __wcsftime_l(wchar_t *restrict s, size_t n, const wchar_t *restrict f, const struct tm *restrict tm, locale_t loc) + { +@@ -14,7 +14,7 @@ size_t __wcsftime_l(wchar_t *restrict s, size_t n, const wchar_t *restrict f, co + wchar_t *p; + const char *t_mb; + const wchar_t *t; +- int plus; ++ int pad, plus; + unsigned long width; + for (l=0; l<n; f++) { + if (!*f) { +@@ -26,6 +26,8 @@ size_t __wcsftime_l(wchar_t *restrict s, size_t n, const wchar_t *restrict f, co + continue; + } + f++; ++ pad = 0; ++ if (*f == '-' || *f == '_' || *f == '0') pad = *f++; + if ((plus = (*f == '+'))) f++; + width = wcstoul(f, &p, 10); + if (*p == 'C' || *p == 'F' || *p == 'G' || *p == 'Y') { +@@ -35,7 +37,7 @@ size_t __wcsftime_l(wchar_t *restrict s, size_t n, const wchar_t *restrict f, co + } + f = p; + if (*f == 'E' || *f == 'O') f++; +- t_mb = __strftime_fmt_1(&buf, &k, *f, tm, loc); ++ t_mb = __strftime_fmt_1(&buf, &k, *f, tm, loc, pad); + if (!t_mb) break; + k = mbstowcs(wbuf, t_mb, sizeof wbuf / sizeof *wbuf); + if (k == (size_t)-1) return 0; +-- +2.17.0 + |