summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/wchar.h2
-rw-r--r--libc/misc/time/Makefile4
-rw-r--r--libc/misc/time/time.c32
3 files changed, 36 insertions, 2 deletions
diff --git a/include/wchar.h b/include/wchar.h
index ecb6c2cd9..908201216 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -842,7 +842,6 @@ extern int fputws_unlocked (__const wchar_t *__restrict __ws,
#endif
-#if 0
__BEGIN_NAMESPACE_C99
/* Format TP into S according to FORMAT.
Write no more than MAXSIZE wide characters and return the number
@@ -868,7 +867,6 @@ extern size_t __wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
__locale_t __loc) __THROW;
#endif /* __UCLIBC_HAS_XLOCALE__ */
# endif
-#endif /* 0 */
/* The X/Open standard demands that most of the functions defined in
the <wctype.h> header must also appear here. This is probably
diff --git a/libc/misc/time/Makefile b/libc/misc/time/Makefile
index b47a97c33..1ed212cf0 100644
--- a/libc/misc/time/Makefile
+++ b/libc/misc/time/Makefile
@@ -38,6 +38,10 @@ ifeq ($(UCLIBC_HAS_XLOCALE),y)
endif
ifeq ($(UCLIBC_HAS_WCHAR),y)
+ MOBJ += wcsftime.o
+ifeq ($(UCLIBC_HAS_XLOCALE),y)
+ MOBJx += wcsftime_l.o
+endif
endif
CSRC= adjtime.c ftime.c clock_gettime.c
diff --git a/libc/misc/time/time.c b/libc/misc/time/time.c
index c37874e28..e2f1f6c6d 100644
--- a/libc/misc/time/time.c
+++ b/libc/misc/time/time.c
@@ -2212,6 +2212,38 @@ time_t _time_mktime(struct tm *timeptr, int store_on_success)
#endif
/**********************************************************************/
+#if defined(L_wcsftime) || defined(L_wcsftime_l)
+
+#if defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE)
+
+extern size_t __wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
+ __const wchar_t *__restrict __format,
+ __const struct tm *__restrict __timeptr,
+ __locale_t __loc) __THROW;
+
+size_t wcsftime(wchar_t *__restrict s, size_t maxsize,
+ const wchar_t *__restrict format,
+ const struct tm *__restrict timeptr)
+{
+ return __wcsftime_l(s, maxsize, format, timeptr, __UCLIBC_CURLOCALE);
+}
+
+#else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
+
+size_t __XL(wcsftime)(wchar_t *__restrict s, size_t maxsize,
+ const wchar_t *__restrict format,
+ const struct tm *__restrict timeptr __LOCALE_PARAM )
+{
+#warning wcsftime always fails
+ return 0; /* always fail */
+}
+
+__XL_ALIAS(wcsftime)
+
+#endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
+
+#endif
+/**********************************************************************/
#ifdef L_dysize
/* Return the number of days in YEAR. */