From ce4fabe158a9b0367712a4afe904b5d6d7da9f78 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 20:48:30 +0800 Subject: [PATCH] add errno --- components/libc/compilers/common/time.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index fecae28f9f..a980f742fb 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -13,6 +13,7 @@ * 2021-02-10 Meco Man add ctime_r() and re-implement ctime() * 2021-02-11 Meco Man fix bug #3183 - align days[] and months[] to 4 bytes * add difftime() + * 2021-02-12 Meco Man add errno */ #include @@ -208,6 +209,11 @@ RT_WEAK time_t time(time_t *t) *t = time_now; } + if(time_now == (time_t)-1) + { + errno = ENOSYS; + } + return time_now; } @@ -230,11 +236,13 @@ int stime(const time_t *t) } else { + errno = ENOSYS; return -1; } return 0; #else + errno = ENOSYS; return -1; #endif /* RT_USING_RTC */ } @@ -316,14 +324,17 @@ time_t timegm(struct tm * const t) /* TODO: timezone */ int gettimeofday(struct timeval *tv, struct timezone *tz) { - if (tv != RT_NULL) + time_t t = time(RT_NULL); + + if (tv != RT_NULL && t != (time_t)-1) { - tv->tv_sec = time(RT_NULL); + tv->tv_sec = t; tv->tv_usec = 0; return 0; } else { + errno = ENOSYS; return -1; } } @@ -337,6 +348,7 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz) } else { + errno = ENOSYS; return -1; } } -- GitLab