diff --git a/Documentation/NuttxUserGuide.html b/Documentation/NuttxUserGuide.html index 6aa9905fe06..70d8a6c7fa2 100644 --- a/Documentation/NuttxUserGuide.html +++ b/Documentation/NuttxUserGuide.html @@ -13,7 +13,7 @@

NuttX Operating System

User's Manual

by

Gregory Nutt

-

Last Updated: June 2, 2015

+

Last Updated: June 12, 2015

@@ -3884,14 +3884,18 @@ interface of the same name.
  • 2.6.4 mktime
  • 2.6.5 gmtime
  • 2.6.6 localtime
  • -
  • 2.6.7 gmtime_r
  • -
  • 2.6.8 localtime_r
  • -
  • 2.6.9 timer_create
  • -
  • 2.6.10 timer_delete
  • -
  • 2.6.11 timer_settime
  • -
  • 2.6.12 timer_gettime
  • -
  • 2.6.13 timer_getoverrun
  • -
  • 2.6.14 gettimeofday
  • +
  • 2.6.7 asctime
  • +
  • 2.6.8 ctime
  • +
  • 2.6.9 gmtime_r
  • +
  • 2.6.10 localtime_r
  • +
  • 2.6.11 asctime_r
  • +
  • 2.6.12 ctime_r
  • +
  • 2.6.13 timer_create
  • +
  • 2.6.14 timer_delete
  • +
  • 2.6.15 timer_settime
  • +
  • 2.6.16 timer_gettime
  • +
  • 2.6.17 timer_getoverrun
  • +
  • 2.6.18 gettimeofday
  • 2.6.1 clock_settime

    @@ -3913,14 +3917,9 @@ interface of the same name.

    Returned Value: -

    -

    If successful, the clock_settime() function will return zero (OK). Otherwise, an non-zero error number will be returned to indicate the error:

    -

    2.6.2 clock_gettime

    @@ -3941,14 +3940,9 @@ interface of the same name.

    Returned Value: -

    -

    If successful, the clock_gettime() function will return zero (OK). Otherwise, an non-zero error number will be returned to indicate the error:

    -

    2.6.3 clock_getres

    @@ -3969,14 +3963,9 @@ interface of the same name.

    Returned Value: -

    -

    If successful, the clock_getres() function will return zero (OK). Otherwise, an non-zero error number will be returned to indicate the error:

    -

    2.6.4 mktime

    @@ -3997,14 +3986,9 @@ interface of the same name.

    Returned Value: -

    -

    If successful, the mktime() function will return zero (OK). Otherwise, an non-zero error number will be returned to indicate the error:

    -

    2.6.5 gmtime

    @@ -4012,80 +3996,241 @@ interface of the same name.

         #include <time.h>
    -    struct tm *gmtime(const time_t *clock);
    +    FAR struct tm *gmtime(FAR const time_t *timep);
     

    Description: + Represents GMT date/time in a type struct tm. + This function is not re-entrant.

    Input Parameters:

    Returned Value: -

    -

    - If successful, the gmtime() function will return the pointer to a statically - defined instance of struct tim. + If successful, the gmtime() function will return the pointer to a statically defined instance of struct tm. Otherwise, a NULL will be returned to indicate the error:

    -

    2.6.6 localtime

    -
    -    #include <time.h>
    -    #define localtime(c) gmtime(c)
    -
    + +

    + Description: + Represents local date/time in a type struct tm. + This function is not re-entrant. +

    +

    + Input Parameters: +

    + +

    + Returned Value: + Returned Value: + If successful, the localtime() function will return the pointer to a statically defined instance of struct tm. + Otherwise, a NULL will be returned to indicate the error: +

    -

    2.6.7 gmtime_r

    +

    2.6.7 asctime

    +

    + Function Prototype: +

    + +

    + Description: + asctime() convert the time provided in a struct tm to a string representation. + asctime() is not re-entrant. +

    +

    + Input Parameters: +

    + +

    + Returned Value: + If successful, the asctime() function will return a pointer to a statically defined string holding the converted time. + Otherwise, a NULL will be returned to indicate the error. +

    + +

    2.6.8 ctime

    +

    + Function Prototype: +

    + +

    + Description: + ctime() converts the time provided in seconds since the epoch to a string representation. + ctime() is not re-entrant. +

    +

    + Input Parameters: +

    + +

    + Returned Value: + If successful, the ctime() function will return the pointer to the converted string. + Otherwise, a NULL will be returned to indicate the error. +

    + +

    2.6.9 gmtime_r

    Function Prototype:

         #include <time.h>
    -    struct tm *gmtime_r(const time_t *clock, struct tm *result);
    +    struct tm *gmtime_r(const time_t *timep, struct tm *result);
     

    Description: + Represents GMT date/time in a type struct tm. + This function is re-entrant.

    Input Parameters:

    Returned Value: -

    -

    If successful, the gmtime_r() function will return the pointer, result, provided by the caller. Otherwise, a NULL will be returned to indicate the error:

    + +

    2.6.10 localtime_r

    + +

    + Description: + Represents local date/time in a type struct tm. + This function is re-entrant. +

    +

    + Input Parameters: +

    +

    + Returned Value: + Returned Value: + If successful, the localtime_r() function will return the pointer, result, + provided by the caller. + Otherwise, a NULL will be returned to indicate the error: +

    -

    2.6.8 localtime_r

    -
    -    #include <time.h>
    -    #define localtime_r(c,r) gmtime_r(c,r)
    -
    +

    2.6.11 asctime_r

    +

    + Function Prototype: +

    + +

    + Description: + asctime_r() converts the time provided in a struct tm to a string representation. + asctime-r() is re-entrant. +

    +

    + Input Parameters: +

    + +

    + Returned Value: + If successful, the asctime_r() function will return the pointer, buf, provided by the caller. + Otherwise, a NULL will be returned to indicate the error. +

    -

    2.6.9 timer_create

    +

    2.6.12 ctime_r

    +

    + Function Prototype: +

    + +

    + Description: + ctime_r() converts the time provided in seconds since the epoch to a string representation. + ctime() is re-entrant. +

    +

    + Input Parameters: +

    + +

    + Returned Value: + If successful, the ctime_r() function will return the pointer, buf, provided by the caller. + Otherwise, a NULL will be returned to indicate the error. +

    + +

    2.6.13 timer_create

    Function Prototype:

    @@ -4130,8 +4275,6 @@ interface of the same name.

    Returned Value: -

    -

    If the call succeeds, timer_create() will return 0 (OK) and update the location referenced by timerid to a timer_t, which can be passed to the other per-thread timer calls. If an error occurs, the function will return @@ -4155,7 +4298,7 @@ interface of the same name.

  • Only CLOCK_REALTIME is supported for the clockid argument.
  • -

    2.6.10 timer_delete

    +

    2.6.14 timer_delete

    Function Prototype:

    @@ -4180,8 +4323,6 @@ interface of the same name.

    Returned Value: -

    -

    If successful, the timer_delete() function will return zero (OK). Otherwise, the function will return a value of -1 (ERROR) and set errno to indicate the error: @@ -4194,7 +4335,7 @@ interface of the same name. Comparable to the POSIX interface of the same name.

    -

    2.6.11 timer_settime

    +

    2.6.15 timer_settime

    Function Prototype:

    @@ -4258,8 +4399,6 @@ interface of the same name.

    Returned Value: -

    -

    If the timer_gettime() succeeds, a value of 0 (OK) will be returned. If an error occurs, the value -1 (ERROR) will be returned, and errno set to indicate the error. @@ -4277,7 +4416,7 @@ interface of the same name.

  • The ovalue argument is ignored.
  • -

    2.6.12 timer_gettime

    +

    2.6.16 timer_gettime

    Function Prototype:

    @@ -4309,8 +4448,6 @@ interface of the same name.

    Returned Value: -

    -

    If successful, the timer_gettime() function will return zero (OK). Otherwise, an non-zero error number will be returned to indicate the error:

    @@ -4324,7 +4461,7 @@ interface of the same name. Comparable to the POSIX interface of the same name.

    -

    2.6.13 timer_getoverrun

    +

    2.6.17 timer_getoverrun

    Function Prototype:

    @@ -4385,7 +4522,7 @@ interface of the same name. interface of the same name.

    -

    2.6.14 gettimeofday

    +

    2.6.18 gettimeofday

    Function Prototype:

    @@ -9754,6 +9891,8 @@ notify a task when a message is available on a queue.
  • aio_return
  • aio_suspend
  • aio_write
  • +
  • asctime
  • +
  • asctime_r
  • atexit
  • bind
  • BIOC_XIPBASE
  • @@ -9766,6 +9905,8 @@ notify a task when a message is available on a queue.
  • closedir
  • connect
  • creat
  • +
  • ctime
  • +
  • ctime_r
  • Data structures
  • Directory operations
  • dirent.h
  • @@ -9829,10 +9970,10 @@ notify a task when a message is available on a queue.
  • mq_timedsend
  • mq_unlink
  • mmap
  • -
  • Network Interfaces
  • -
  • on_exit +
  • Network Interfaces
  • +
  • on_exit
  • open
  • opendir
  • OS Interfaces
  • diff --git a/include/time.h b/include/time.h index 904022a7669..859c470c8c0 100644 --- a/include/time.h +++ b/include/time.h @@ -194,16 +194,25 @@ int clock_gettime(clockid_t clockid, FAR struct timespec *tp); int clock_getres(clockid_t clockid, FAR struct timespec *res); time_t mktime(FAR struct tm *tp); -FAR struct tm *gmtime(FAR const time_t *timer); -FAR struct tm *gmtime_r(FAR const time_t *timer, FAR struct tm *result); +FAR struct tm *gmtime(FAR const time_t *timep); +FAR struct tm *gmtime_r(FAR const time_t *timep, FAR struct tm *result); + #ifdef CONFIG_LIBC_LOCALTIME -FAR struct tm *localtime(FAR const time_t *timer); -FAR struct tm *localtime_r(FAR const time_t *timer, FAR struct tm *result); +FAR struct tm *localtime(FAR const time_t *timep); +FAR struct tm *localtime_r(FAR const time_t *timep, FAR struct tm *result); #endif + size_t strftime(FAR char *s, size_t max, FAR const char *format, FAR const struct tm *tm); -time_t time(FAR time_t *tloc); +#ifdef CONFIG_TIME_EXTENDED +FAR char *asctime(FAR const struct tm *tp); +FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf); +FAR char *ctime(FAR const time_t *timep); +FAR char *ctime_r(FAR const time_t *timep, FAR char *buf); +#endif + +time_t time(FAR time_t *timep); int timer_create(clockid_t clockid, FAR struct sigevent *evp, FAR timer_t *timerid); diff --git a/libc/time/Make.defs b/libc/time/Make.defs index f54aa5385a7..f5799c7dd21 100644 --- a/libc/time/Make.defs +++ b/libc/time/Make.defs @@ -39,11 +39,13 @@ CSRCS += lib_strftime.c lib_calendar2utc.c lib_daysbeforemonth.c CSRCS += lib_gettimeofday.c lib_isleapyear.c lib_settimeofday.c lib_time.c ifdef CONFIG_LIBC_LOCALTIME -CSRCS += lib_localtime.c +CSRCS += lib_localtime.c lib_asctime.c lib_asctimer.c lib_ctime.c +CSRCS += lib_ctimer.c else CSRCS += lib_mktime.c lib_gmtime.c lib_gmtimer.c ifdef CONFIG_TIME_EXTENDED -CSRCS += lib_dayofweek.c +CSRCS += lib_dayofweek.c lib_asctime.c lib_asctimer.c lib_ctime.c +CSRCS += lib_ctimer.c endif endif diff --git a/libc/time/lib_asctime.c b/libc/time/lib_asctime.c new file mode 100644 index 00000000000..9879b835fb4 --- /dev/null +++ b/libc/time/lib_asctime.c @@ -0,0 +1,72 @@ +/**************************************************************************** + * libc/time/lib_asctime.c + * + * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#ifdef CONFIG_TIME_EXTENDED + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Function: asctime + * + * Description: + * asctime and asctime_r converts the time provided in a struct tm to a + * string representation. asctime is not re-entrant. + * + * Parameters: + * tp - Pointer to the time to be converted. + * + * Return Value: + * One success a pointer to the string is returned; on failure, NULL is + * returned. + * + ****************************************************************************/ + +FAR char *asctime(FAR const struct tm *tp) +{ + static char buf[26]; + return asctime_r(tp, buf); +} + +#endif /* CONFIG_TIME_EXTENDED */ diff --git a/libc/time/lib_asctimer.c b/libc/time/lib_asctimer.c new file mode 100644 index 00000000000..c6aedfadd96 --- /dev/null +++ b/libc/time/lib_asctimer.c @@ -0,0 +1,96 @@ +/**************************************************************************** + * libc/time/lib_asctimer.c + * + * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#ifdef CONFIG_TIME_EXTENDED + +/**************************************************************************** + * Private Data + ****************************************************************************/ +/* Note: These strings duplicate other definitions in other files. These + * definitions could be combined to save a little FLASH space. + */ + +static const char g_wday_name[7][3] = +{ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" +}; + +static const char g_mon_name[12][3] = +{ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" +}; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Function: asctime_r + * + * Description: + * asctime and asctime_r converts the time provided in a struct tm to a + * string representation. asctime_r is re-entrant. + * + * Parameters: + * tp - Pointer to the time to be converted. + * buf - A user provided buffer to receive the 26 character time string. + * + * Return Value: + * One success, the pointer to the 'buf' is returned; on failure, NULL is + * returned. + * + ****************************************************************************/ + +FAR char *asctime_r(FAR const struct tm *tp, FAR char *buf) +{ + snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n", + g_wday_name[tp->tm_wday], g_mon_name[tp->tm_mon], + tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec, + 1900 + tp->tm_year); + + return buf; +} + +#endif /* CONFIG_TIME_EXTENDED */ diff --git a/libc/time/lib_ctime.c b/libc/time/lib_ctime.c new file mode 100644 index 00000000000..d7360017028 --- /dev/null +++ b/libc/time/lib_ctime.c @@ -0,0 +1,82 @@ +/**************************************************************************** + * libc/time/lib_asctime.c + * + * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#ifdef CONFIG_TIME_EXTENDED + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Function: ctime + * + * Description: + * ctime and ctime_r converts the time provided in seconds since the + * epoch to a string representation. asctime is not re-entrant. ctime is + * not re-entrant. + * + * Parameters: + * timep - The current time represented as seconds since the epoch. + * + * Return Value: + * One success a pointer to the string is returned; on failure, NULL is + * returned. + * + ****************************************************************************/ + +FAR char *ctime(FAR const time_t *timep) +{ +#ifdef CONFIG_LIBC_LOCALTIME + /* Section 4.12.3.2 of X3.159-1989 requires that + * The ctime function converts the calendar time pointed to by timer + * to local time in the form of a string. It is equivalent to + * asctime(localtime(timer)) + */ + + return asctime(localtime(timep)); +#else + return asctime(gmtime(timep)); +#endif +} + +#endif /* CONFIG_TIME_EXTENDED */ diff --git a/libc/time/lib_ctimer.c b/libc/time/lib_ctimer.c new file mode 100644 index 00000000000..83260e1b095 --- /dev/null +++ b/libc/time/lib_ctimer.c @@ -0,0 +1,83 @@ +/**************************************************************************** + * libc/time/lib_ctimer.c + * + * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#ifdef CONFIG_TIME_EXTENDED + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Function: ctime_r + * + * Description: + * ctime and ctime_r converts the time provided in seconds since the + * epoch to a string representation. asctime is not re-entrant. ctimer is + * re-entrant. + * + * Parameters: + * timep - The current time represented as seconds since the epoch. + * buf - A user provided buffer to receive the 26 character time string. + * + * Return Value: + * One success, the pointer to the 'buf' is returned; on failure, NULL is + * returned. + * + ****************************************************************************/ + +FAR char *ctime_r(FAR const time_t *timep, FAR char *buf) +{ + struct tm tm; + +#ifdef CONFIG_LIBC_LOCALTIME + return asctime_r(localtime_r(timep, &tm), buf); +#else + return asctime_r(gmtime_r(timep, &tm), buf); +#endif +} + +#endif /* CONFIG_TIME_EXTENDED */ diff --git a/libc/time/lib_localtime.c b/libc/time/lib_localtime.c index 7f7ce35ed20..6e587f9486d 100644 --- a/libc/time/lib_localtime.c +++ b/libc/time/lib_localtime.c @@ -2533,28 +2533,6 @@ FAR struct tm *gmtime_r(FAR const time_t * const timep, struct tm *tmp) return gmtsub(timep, 0L, tmp); } -#if 0 /* No asctime() */ -FAR char *ctime(FAR const time_t * const timep) -{ - /* Section 4.12.3.2 of X3.159-1989 requires that - * The ctime function converts the calendar time pointed to by timer - * to local time in the form of a string. It is equivalent to - * asctime(localtime(timer)) - */ - - return asctime(localtime(timep)); -} -#endif - -#if 0 /* No asctime_r */ -FAR char *ctime_r(FAR const time_t * const timep, char *buf) -{ - struct tm mytm; - - return asctime_r(localtime_r(timep, &mytm), buf); -} -#endif - time_t mktime(struct tm * const tmp) { tzset();