X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Ftime%2Fstrftime.c;h=592b214d0ff6ac90c2a9b761303a944837b5b01f;hp=d16e81343891dc15159bd69f8d63a7d58d61c4b3;hb=HEAD;hpb=1cc81f5cb0df2b66a795ff0c26d7bbc4d16e13c6 diff --git a/src/time/strftime.c b/src/time/strftime.c index d16e8134..592b214d 100644 --- a/src/time/strftime.c +++ b/src/time/strftime.c @@ -1,12 +1,14 @@ #include #include #include +#include #include #include +#include "libc.h" // FIXME: integer overflows -const char *__langinfo(nl_item); +const char *__nl_langinfo_l(nl_item, locale_t); static int is_leap(int y) { @@ -42,7 +44,7 @@ static int week_num(const struct tm *tm) return val; } -size_t strftime(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm) +size_t __strftime_l(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm, locale_t loc) { nl_item item; int val; @@ -198,14 +200,21 @@ number: l += snprintf(s+l, n-l, fmt, val); continue; nl_strcat: - l += snprintf(s+l, n-l, "%s", __langinfo(item)); + l += snprintf(s+l, n-l, "%s", __nl_langinfo_l(item, loc)); continue; nl_strftime: - fmt = __langinfo(item); + fmt = __nl_langinfo_l(item, loc); recu_strftime: - l += strftime(s+l, n-l, fmt, tm); + l += __strftime_l(s+l, n-l, fmt, tm, loc); } if (l >= n) return 0; s[l] = 0; return l; } + +size_t strftime(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm) +{ + return __strftime_l(s, n, f, tm, LC_GLOBAL_LOCALE); +} + +weak_alias(__strftime_l, strftime_l);