mirror of https://git.musl-libc.org/git/musl
Browse Source
get rid of a gratuitous translation unit and call frame between asctime_r and the actual implementation of the function. this is the way gmtime_r and localtime_r are already done.master
3 changed files with 28 additions and 33 deletions
@ -1,28 +0,0 @@ |
|||
#include <time.h> |
|||
#include <stdio.h> |
|||
#include <langinfo.h> |
|||
#include "locale_impl.h" |
|||
#include "atomic.h" |
|||
|
|||
const char *__nl_langinfo_l(nl_item, locale_t); |
|||
|
|||
char *__asctime(const struct tm *restrict tm, char *restrict buf) |
|||
{ |
|||
if (snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n", |
|||
__nl_langinfo_l(ABDAY_1+tm->tm_wday, C_LOCALE), |
|||
__nl_langinfo_l(ABMON_1+tm->tm_mon, C_LOCALE), |
|||
tm->tm_mday, tm->tm_hour, |
|||
tm->tm_min, tm->tm_sec, |
|||
1900 + tm->tm_year) >= 26) |
|||
{ |
|||
/* ISO C requires us to use the above format string,
|
|||
* even if it will not fit in the buffer. Thus asctime_r |
|||
* is _supposed_ to crash if the fields in tm are too large. |
|||
* We follow this behavior and crash "gracefully" to warn |
|||
* application developers that they may not be so lucky |
|||
* on other implementations (e.g. stack smashing..). |
|||
*/ |
|||
a_crash(); |
|||
} |
|||
return buf; |
|||
} |
|||
@ -1,9 +1,9 @@ |
|||
#include <time.h> |
|||
|
|||
char *__asctime(const struct tm *, char *); |
|||
char *__asctime_r(const struct tm *, char *); |
|||
|
|||
char *asctime(const struct tm *tm) |
|||
{ |
|||
static char buf[26]; |
|||
return __asctime(tm, buf); |
|||
return __asctime_r(tm, buf); |
|||
} |
|||
|
|||
@ -1,8 +1,31 @@ |
|||
#include <time.h> |
|||
#include <stdio.h> |
|||
#include <langinfo.h> |
|||
#include "locale_impl.h" |
|||
#include "atomic.h" |
|||
#include "libc.h" |
|||
|
|||
char *__asctime(const struct tm *restrict, char *restrict); |
|||
const char *__nl_langinfo_l(nl_item, locale_t); |
|||
|
|||
char *asctime_r(const struct tm *restrict tm, char *restrict buf) |
|||
char *__asctime_r(const struct tm *restrict tm, char *restrict buf) |
|||
{ |
|||
return __asctime(tm, buf); |
|||
if (snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n", |
|||
__nl_langinfo_l(ABDAY_1+tm->tm_wday, C_LOCALE), |
|||
__nl_langinfo_l(ABMON_1+tm->tm_mon, C_LOCALE), |
|||
tm->tm_mday, tm->tm_hour, |
|||
tm->tm_min, tm->tm_sec, |
|||
1900 + tm->tm_year) >= 26) |
|||
{ |
|||
/* ISO C requires us to use the above format string,
|
|||
* even if it will not fit in the buffer. Thus asctime_r |
|||
* is _supposed_ to crash if the fields in tm are too large. |
|||
* We follow this behavior and crash "gracefully" to warn |
|||
* application developers that they may not be so lucky |
|||
* on other implementations (e.g. stack smashing..). |
|||
*/ |
|||
a_crash(); |
|||
} |
|||
return buf; |
|||
} |
|||
|
|||
weak_alias(__asctime_r, asctime_r); |
|||
|
|||
Loading…
Reference in new issue