summaryrefslogtreecommitdiff
path: root/libc/misc/time/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/misc/time/time.c')
-rw-r--r--libc/misc/time/time.c235
1 files changed, 125 insertions, 110 deletions
diff --git a/libc/misc/time/time.c b/libc/misc/time/time.c
index 889e7933f..39aacddd2 100644
--- a/libc/misc/time/time.c
+++ b/libc/misc/time/time.c
@@ -129,49 +129,54 @@
* differs (intentionally) from glibc's behavior.
*/
-#define strnlen __strnlen
-#define gettimeofday __gettimeofday
-
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <time.h>
+#include <sys/time.h>
#include <limits.h>
#include <assert.h>
#include <errno.h>
#include <ctype.h>
#include <langinfo.h>
#include <locale.h>
+#include <fcntl.h>
+#include <unistd.h>
#include <bits/uClibc_uintmaxtostr.h>
-extern void __tzset (void) __THROW attribute_hidden;
-
-extern long int __strtol (__const char *__restrict __nptr,
- char **__restrict __endptr, int __base)
- __THROW __nonnull ((1)) __wur attribute_hidden;
-
-extern char *__nl_langinfo (nl_item __item) __THROW attribute_hidden;
-
+#ifdef __UCLIBC_HAS_WCHAR__
+#include <wchar.h>
+#endif
#ifdef __UCLIBC_HAS_XLOCALE__
#include <xlocale.h>
-extern long int __strtol_l (__const char *__restrict __nptr,
- char **__restrict __endptr, int __base,
- __locale_t __loc) __THROW __nonnull ((1, 4)) __wur attribute_hidden;
-extern int __strncasecmp_l (__const char *__s1, __const char *__s2,
- size_t __n, __locale_t __loc)
- __THROW __attribute_pure__ __nonnull ((1, 2, 4)) attribute_hidden;
-extern size_t __strftime_l (char *__restrict __s, size_t __maxsize,
- __const char *__restrict __format,
- __const struct tm *__restrict __tp,
- __locale_t __loc) __THROW attribute_hidden;
+#endif
-extern char *__strptime_l (__const char *__restrict __s,
- __const char *__restrict __fmt, struct tm *__tp,
- __locale_t __loc) __THROW attribute_hidden;
+libc_hidden_proto(memset)
+libc_hidden_proto(memcpy)
+libc_hidden_proto(strcmp)
+libc_hidden_proto(strcpy)
+libc_hidden_proto(strlen)
+libc_hidden_proto(strncpy)
+libc_hidden_proto(strnlen)
+/* libc_hidden_proto(sprintf) */
+libc_hidden_proto(open)
+libc_hidden_proto(read)
+libc_hidden_proto(close)
+libc_hidden_proto(getenv)
+libc_hidden_proto(tzset)
+libc_hidden_proto(gettimeofday)
+libc_hidden_proto(strncasecmp)
+libc_hidden_proto(strtol)
+libc_hidden_proto(strtoul)
+libc_hidden_proto(nl_langinfo)
-extern char *__nl_langinfo_l (nl_item __item, __locale_t l) attribute_hidden;
+#ifdef __UCLIBC_HAS_XLOCALE__
+libc_hidden_proto(strncasecmp_l)
+libc_hidden_proto(strtol_l)
+libc_hidden_proto(strtoul_l)
+libc_hidden_proto(nl_langinfo_l)
#endif
#ifndef __isleap
@@ -191,8 +196,6 @@ extern char *__nl_langinfo_l (nl_item __item, __locale_t l) attribute_hidden;
#ifdef __UCLIBC_HAS_TZ_FILE__
#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
#include "paths.h"
/* ":<tzname>+hh:mm:ss<tzname>+hh:mm:ss,Mmm.w.d/hh:mm:ss,Mmm.w.d/hh:mm:ss" + nul */
/* 1 + 2*(1+TZNAME_MAX+1 + 9 + 7 + 9) + 1 = 2*TZNAME_MAX + 56 */
@@ -208,11 +211,6 @@ extern char *__nl_langinfo_l (nl_item __item, __locale_t l) attribute_hidden;
extern struct tm __time_tm attribute_hidden;
-extern struct tm *__localtime_r (__const time_t *__restrict __timer,
- struct tm *__restrict __tp) attribute_hidden;
-
-extern struct tm *__localtime (__const time_t *__timer) attribute_hidden;
-
typedef struct {
long gmt_offset;
long dst_offset;
@@ -244,21 +242,19 @@ extern struct tm *__time_localtime_tzi(const time_t *__restrict timer,
extern time_t _time_mktime_tzi(struct tm *timeptr, int store_on_success,
rule_struct *tzi) attribute_hidden;
-extern char *__asctime (__const struct tm *__tp) attribute_hidden;
-
-extern char *__asctime_r (__const struct tm *__restrict __tp,
- char *__restrict __buf) attribute_hidden;
-
/**********************************************************************/
#ifdef L_asctime
+libc_hidden_proto(asctime_r)
+
static char __time_str[26];
-char attribute_hidden *__asctime(const struct tm *ptm)
+char *asctime(const struct tm *ptm)
{
- return __asctime_r(ptm, __time_str);
+ return asctime_r(ptm, __time_str);
}
-strong_alias(__asctime,asctime)
+libc_hidden_proto(asctime)
+libc_hidden_def(asctime)
#endif
/**********************************************************************/
@@ -278,7 +274,7 @@ strong_alias(__asctime,asctime)
* };
* static char result[26];
*
- * __sprintf(result, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
+ * sprintf(result, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
* wday_name[timeptr->tm_wday],
* mon_name[timeptr->tm_mon],
* timeptr->tm_mday, timeptr->tm_hour,
@@ -326,7 +322,7 @@ static const unsigned char at_data[] = {
' ', '?', '?', '?', '?', '\n', 0
};
-char attribute_hidden *__asctime_r(register const struct tm *__restrict ptm,
+char *asctime_r(register const struct tm *__restrict ptm,
register char *__restrict buffer)
{
int tmp;
@@ -335,23 +331,23 @@ char attribute_hidden *__asctime_r(register const struct tm *__restrict ptm,
assert(buffer);
#ifdef SAFE_ASCTIME_R
- __memcpy(buffer, at_data + 3*(7 + 12), sizeof(at_data) - 3*(7 + 12));
+ memcpy(buffer, at_data + 3*(7 + 12), sizeof(at_data) - 3*(7 + 12));
if (((unsigned int)(ptm->tm_wday)) <= 6) {
- __memcpy(buffer, at_data + 3 * ptm->tm_wday, 3);
+ memcpy(buffer, at_data + 3 * ptm->tm_wday, 3);
}
if (((unsigned int)(ptm->tm_mon)) <= 11) {
- __memcpy(buffer + 4, at_data + 3*7 + 3 * ptm->tm_mon, 3);
+ memcpy(buffer + 4, at_data + 3*7 + 3 * ptm->tm_mon, 3);
}
#else
assert(((unsigned int)(ptm->tm_wday)) <= 6);
assert(((unsigned int)(ptm->tm_mon)) <= 11);
- __memcpy(buffer, at_data + 3*(7 + 12) - 3, sizeof(at_data) + 3 - 3*(7 + 12));
+ memcpy(buffer, at_data + 3*(7 + 12) - 3, sizeof(at_data) + 3 - 3*(7 + 12));
- __memcpy(buffer, at_data + 3 * ptm->tm_wday, 3);
- __memcpy(buffer + 4, at_data + 3*7 + 3 * ptm->tm_mon, 3);
+ memcpy(buffer, at_data + 3 * ptm->tm_wday, 3);
+ memcpy(buffer + 4, at_data + 3*7 + 3 * ptm->tm_mon, 3);
#endif
#ifdef SAFE_ASCTIME_R
@@ -400,16 +396,17 @@ char attribute_hidden *__asctime_r(register const struct tm *__restrict ptm,
return buffer - 8;
}
-strong_alias(__asctime_r,asctime_r)
+libc_hidden_proto(asctime_r)
+libc_hidden_def(asctime_r)
#endif
/**********************************************************************/
#ifdef L_clock
-#define times __times
-
#include <sys/times.h>
+libc_hidden_proto(times)
+
#ifndef __BCC__
#if CLOCKS_PER_SEC != 1000000L
#error unexpected value for CLOCKS_PER_SEC!
@@ -474,21 +471,28 @@ clock_t clock(void)
/**********************************************************************/
#ifdef L_ctime
-char attribute_hidden *__ctime(const time_t *clock)
+libc_hidden_proto(asctime)
+libc_hidden_proto(localtime)
+
+char *ctime(const time_t *clock)
{
/* ANSI/ISO/SUSv3 say that ctime is equivalent to the following. */
- return __asctime(__localtime(clock));
+ return asctime(localtime(clock));
}
-strong_alias(__ctime,ctime)
+libc_hidden_proto(ctime)
+libc_hidden_def(ctime)
#endif
/**********************************************************************/
#ifdef L_ctime_r
+libc_hidden_proto(asctime_r)
+libc_hidden_proto(localtime_r)
+
char *ctime_r(const time_t *clock, char *buf)
{
struct tm xtm;
- return __asctime_r(__localtime_r(clock, &xtm), buf);
+ return asctime_r(localtime_r(clock, &xtm), buf);
}
#endif
@@ -556,28 +560,31 @@ struct tm *gmtime_r(const time_t *__restrict timer,
/**********************************************************************/
#ifdef L_localtime
-struct tm attribute_hidden *__localtime(const time_t *timer)
+libc_hidden_proto(localtime_r)
+
+struct tm *localtime(const time_t *timer)
{
register struct tm *ptm = &__time_tm;
/* In this implementation, tzset() is called by localtime_r(). */
- __localtime_r(timer, ptm); /* Can return NULL... */
+ localtime_r(timer, ptm); /* Can return NULL... */
return ptm;
}
-strong_alias(__localtime,localtime)
+libc_hidden_proto(localtime)
+libc_hidden_def(localtime)
#endif
/**********************************************************************/
#ifdef L_localtime_r
-struct tm attribute_hidden *__localtime_r(register const time_t *__restrict timer,
+struct tm *localtime_r(register const time_t *__restrict timer,
register struct tm *__restrict result)
{
TZLOCK;
- __tzset();
+ tzset();
__time_localtime_tzi(timer, result, _time_tzinfo);
@@ -585,7 +592,8 @@ struct tm attribute_hidden *__localtime_r(register const time_t *__restrict time
return result;
}
-strong_alias(__localtime_r,localtime_r)
+libc_hidden_proto(localtime_r)
+libc_hidden_def(localtime_r)
#endif
/**********************************************************************/
@@ -610,7 +618,7 @@ static const char *lookup_tzname(const char *key)
ll_tzname_item_t *p;
for (p=ll_tzname ; p ; p=p->next) {
- if (!__strcmp(p->tzname, key)) {
+ if (!strcmp(p->tzname, key)) {
return p->tzname;
}
}
@@ -621,7 +629,7 @@ static const char *lookup_tzname(const char *key)
/* Insert as 3rd item in the list. */
p->next = ll_tzname[1].next;
ll_tzname[1].next = p;
- __strcpy(p->tzname, key);
+ strcpy(p->tzname, key);
return p->tzname;
}
}
@@ -765,8 +773,8 @@ time_t timegm(struct tm *timeptr)
{
rule_struct gmt_tzinfo[2];
- __memset(gmt_tzinfo, 0, sizeof(gmt_tzinfo));
- __strcpy(gmt_tzinfo[0].tzname, "GMT"); /* Match glibc behavior here. */
+ memset(gmt_tzinfo, 0, sizeof(gmt_tzinfo));
+ strcpy(gmt_tzinfo[0].tzname, "GMT"); /* Match glibc behavior here. */
return _time_mktime_tzi(timeptr, 1, gmt_tzinfo);
}
@@ -777,13 +785,16 @@ time_t timegm(struct tm *timeptr)
#if defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE)
-size_t attribute_hidden __strftime(char *__restrict s, size_t maxsize,
+libc_hidden_proto(strftime_l)
+
+size_t strftime(char *__restrict s, size_t maxsize,
const char *__restrict format,
const struct tm *__restrict timeptr)
{
- return __strftime_l(s, maxsize, format, timeptr, __UCLIBC_CURLOCALE);
+ return strftime_l(s, maxsize, format, timeptr, __UCLIBC_CURLOCALE);
}
-strong_alias(__strftime,strftime)
+libc_hidden_proto(strftime)
+libc_hidden_def(strftime)
#else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
@@ -983,7 +994,7 @@ static int load_field(int k, const struct tm *__restrict timeptr)
#warning TODO: Check multibyte format string validity.
#endif
-size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
+size_t __XL_NPP(strftime)(char *__restrict s, size_t maxsize,
const char *__restrict format,
const struct tm *__restrict timeptr __LOCALE_PARAM )
{
@@ -1003,7 +1014,7 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
unsigned char mod;
unsigned char code;
- __tzset(); /* We'll, let's get this out of the way. */
+ tzset(); /* We'll, let's get this out of the way. */
lvl = 0;
p = format;
@@ -1056,7 +1067,7 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
+ (code & 7);
#ifdef ENABLE_ERA_CODE
if ((mod & NO_E_MOD) /* Actually, this means E modifier present. */
- && (*(o = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
+ && (*(o = __XL_NPP(nl_langinfo)(_NL_ITEM(LC_TIME,
(int)(((unsigned char *)p)[4]))
__LOCALE_ARG
)))
@@ -1065,7 +1076,7 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
goto LOOP;
}
#endif
- p = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
+ p = __XL_NPP(nl_langinfo)(_NL_ITEM(LC_TIME,
(int)(*((unsigned char *)p)))
__LOCALE_ARG
);
@@ -1242,7 +1253,7 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
if ((code & MASK_SPEC) == STRING_SPEC) {
o_count = SIZE_MAX;
field_val += spec[STRINGS_NL_ITEM_START + (code & 0xf)];
- o = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME, field_val) __LOCALE_ARG );
+ o = __XL_NPP(nl_langinfo)(_NL_ITEM(LC_TIME, field_val) __LOCALE_ARG );
} else {
o_count = ((i >> 1) & 3) + 1;
o = buf + o_count;
@@ -1265,8 +1276,8 @@ size_t attribute_hidden __UCXL(strftime)(char *__restrict s, size_t maxsize,
}
goto LOOP;
}
-
-__UCXL_ALIAS(strftime)
+libc_hidden_proto(__XL_NPP(strftime))
+libc_hidden_def(__XL_NPP(strftime))
#endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
@@ -1284,12 +1295,15 @@ __UCXL_ALIAS(strftime)
#if defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE)
-char attribute_hidden *__strptime(const char *__restrict buf, const char *__restrict format,
+libc_hidden_proto(strptime_l)
+
+char *strptime(const char *__restrict buf, const char *__restrict format,
struct tm *__restrict tm)
{
- return __strptime_l(buf, format, tm, __UCLIBC_CURLOCALE);
+ return strptime_l(buf, format, tm, __UCLIBC_CURLOCALE);
}
-strong_alias(__strptime,strptime)
+libc_hidden_proto(strptime)
+libc_hidden_def(strptime)
#else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
@@ -1435,7 +1449,9 @@ static const unsigned char spec[] = {
#define MAX_PUSH 4
-char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *__restrict format,
+libc_hidden_proto(localtime_r)
+
+char *__XL_NPP(strptime)(const char *__restrict buf, const char *__restrict format,
struct tm *__restrict tm __LOCALE_PARAM)
{
register const char *p;
@@ -1503,7 +1519,7 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
+ (code & 7);
#ifdef ENABLE_ERA_CODE
if ((mod & NO_E_MOD) /* Actually, this means E modifier present. */
- && (*(o = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
+ && (*(o = __XL_NPP(nl_langinfo)(_NL_ITEM(LC_TIME,
(int)(((unsigned char *)p)[4]))
__LOCALE_ARG
)))
@@ -1512,7 +1528,7 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
goto LOOP;
}
#endif
- p = __UCXL(nl_langinfo)(_NL_ITEM(LC_TIME,
+ p = __XL_NPP(nl_langinfo)(_NL_ITEM(LC_TIME,
(int)(*((unsigned char *)p)))
__LOCALE_ARG );
goto LOOP;
@@ -1527,8 +1543,8 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
/* Go backwards to check full names before abreviations. */
do {
--j;
- o = __UCXL(nl_langinfo)(i+j __LOCALE_ARG);
- if (!__UCXL(strncasecmp)(buf,o,__strlen(o) __LOCALE_ARG) && *o) {
+ o = __XL_NPP(nl_langinfo)(i+j __LOCALE_ARG);
+ if (!__XL_NPP(strncasecmp)(buf,o,strlen(o) __LOCALE_ARG) && *o) {
do { /* Found a match. */
++buf;
} while (*++o);
@@ -1556,9 +1572,9 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
__set_errno(0);
if (!ISSPACE(*buf)) { /* Signal an error if whitespace. */
#ifdef TIME_T_IS_UNSIGNED
- t = __UCXL(strtoul)(buf, &o, 10 __LOCALE_ARG);
+ t = __XL_NPP(strtoul)(buf, &o, 10 __LOCALE_ARG);
#else
- t = __UCXL(strtol)(buf, &o, 10 __LOCALE_ARG);
+ t = __XL_NPP(strtol)(buf, &o, 10 __LOCALE_ARG);
#endif
}
if ((o == buf) || errno) { /* Not a number or overflow. */
@@ -1568,7 +1584,7 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
buf = o;
if (!code) { /* s */
- __localtime_r(&t, tm); /* TODO: check for failure? */
+ localtime_r(&t, tm); /* TODO: check for failure? */
i = 0;
do { /* Now copy values from tm to fields. */
fields[i] = ((int *) tm)[i];
@@ -1644,8 +1660,8 @@ char attribute_hidden *__UCXL(strptime)(const char *__restrict buf, const char *
}
return NULL;
}
-
-__UCXL_ALIAS(strptime)
+libc_hidden_proto(__XL_NPP(strptime))
+libc_hidden_def(__XL_NPP(strptime))
#endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
@@ -1783,11 +1799,11 @@ static char *read_TZ_file(char *buf)
size_t todo;
char *p = NULL;
- if ((fd = __open(__UCLIBC_TZ_FILE_PATH__, O_RDONLY)) >= 0) {
+ if ((fd = open(__UCLIBC_TZ_FILE_PATH__, O_RDONLY)) >= 0) {
todo = TZ_BUFLEN;
p = buf;
do {
- if ((r = __read(fd, p, todo)) < 0) {
+ if ((r = read(fd, p, todo)) < 0) {
goto ERROR;
}
if (r == 0) {
@@ -1807,14 +1823,14 @@ static char *read_TZ_file(char *buf)
ERROR:
p = NULL;
}
- __close(fd);
+ close(fd);
}
return p;
}
#endif /* __UCLIBC_HAS_TZ_FILE__ */
-void attribute_hidden __tzset(void)
+void tzset(void)
{
register const char *e;
register char *s;
@@ -1832,7 +1848,7 @@ void attribute_hidden __tzset(void)
TZLOCK;
- e = __getenv(TZ); /* TZ env var always takes precedence. */
+ e = getenv(TZ); /* TZ env var always takes precedence. */
#if defined(__UCLIBC_HAS_TZ_FILE__) && !defined(__UCLIBC_HAS_TZ_FILE_READ_MANY__)
/* Put this inside the lock to prevent the possiblity of two different
@@ -1859,8 +1875,8 @@ void attribute_hidden __tzset(void)
#ifdef __UCLIBC_HAS_TZ_CACHING__
*oldval = 0; /* Set oldval to an empty string. */
#endif /* __UCLIBC_HAS_TZ_CACHING__ */
- __memset(_time_tzinfo, 0, 2*sizeof(rule_struct));
- __strcpy(_time_tzinfo[0].tzname, UTC);
+ memset(_time_tzinfo, 0, 2*sizeof(rule_struct));
+ strcpy(_time_tzinfo[0].tzname, UTC);
goto DONE;
}
@@ -1869,13 +1885,13 @@ void attribute_hidden __tzset(void)
}
#ifdef __UCLIBC_HAS_TZ_CACHING__
- if (__strcmp(e, oldval) == 0) { /* Same string as last time... */
+ if (strcmp(e, oldval) == 0) { /* Same string as last time... */
goto FAST_DONE; /* So nothing to do. */
}
/* Make a copy of the TZ env string. It won't be nul-terminated if
* it is too long, but it that case it will be illegal and will be reset
* to the empty string anyway. */
- __strncpy(oldval, e, TZ_BUFLEN);
+ strncpy(oldval, e, TZ_BUFLEN);
#endif /* __UCLIBC_HAS_TZ_CACHING__ */
count = 0;
@@ -1989,7 +2005,7 @@ void attribute_hidden __tzset(void)
}
}
- __memcpy(_time_tzinfo, new_rules, sizeof(new_rules));
+ memcpy(_time_tzinfo, new_rules, sizeof(new_rules));
DONE:
tzname[0] = _time_tzinfo[0].tzname;
tzname[1] = _time_tzinfo[1].tzname;
@@ -2001,7 +2017,7 @@ void attribute_hidden __tzset(void)
#endif
TZUNLOCK;
}
-strong_alias(__tzset,tzset)
+libc_hidden_def(tzset)
#endif
/**********************************************************************/
/* #ifdef L_utime */
@@ -2203,7 +2219,7 @@ time_t attribute_hidden _time_mktime(struct tm *timeptr, int store_on_success)
TZLOCK;
- __tzset();
+ tzset();
t = _time_mktime_tzi(timeptr, store_on_success, _time_tzinfo);
@@ -2236,7 +2252,7 @@ time_t attribute_hidden _time_mktime_tzi(struct tm *timeptr, int store_on_succes
register const unsigned char *s;
int d, default_dst;
- __memcpy(p, timeptr, sizeof(struct tm));
+ memcpy(p, timeptr, sizeof(struct tm));
if (!tzi[1].tzname[0]) { /* No dst in this timezone, */
p[8] = 0; /* so set tm_isdst to 0. */
@@ -2326,7 +2342,7 @@ time_t attribute_hidden _time_mktime_tzi(struct tm *timeptr, int store_on_succes
if (store_on_success) {
- __memcpy(timeptr, p, sizeof(struct tm));
+ memcpy(timeptr, p, sizeof(struct tm));
}
@@ -2340,29 +2356,28 @@ time_t attribute_hidden _time_mktime_tzi(struct tm *timeptr, int store_on_succes
#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 attribute_hidden;
+libc_hidden_proto(wcsftime_l)
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);
+ return wcsftime_l(s, maxsize, format, timeptr, __UCLIBC_CURLOCALE);
}
+libc_hidden_proto(wcsftime)
+libc_hidden_def(wcsftime)
#else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
-size_t attribute_hidden __UCXL(wcsftime)(wchar_t *__restrict s, size_t maxsize,
+size_t __XL_NPP(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 */
}
-
-__UCXL_ALIAS(wcsftime)
+libc_hidden_proto(__XL_NPP(wcsftime))
+libc_hidden_def(__XL_NPP(wcsftime))
#endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */