summaryrefslogtreecommitdiff
path: root/components/libc/compilers/common
diff options
context:
space:
mode:
authorMeco Man <[email protected]>2021-02-11 20:48:30 +0800
committerMeco Man <[email protected]>2021-02-11 20:48:30 +0800
commitce4fabe158a9b0367712a4afe904b5d6d7da9f78 (patch)
tree02cab7d08e8190a3ef08ffc3981068a06bca5fd0 /components/libc/compilers/common
parentdd147925e52aa205a09d631984c545f9c99c52c2 (diff)
add errno
Diffstat (limited to 'components/libc/compilers/common')
-rw-r--r--components/libc/compilers/common/time.c16
1 files 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 <sys/time.h>
@@ -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;
}
}