Browse Source

add errno

Meco Man 4 years ago
parent
commit
ce4fabe158
1 changed files with 14 additions and 2 deletions
  1. 14 2
      components/libc/compilers/common/time.c

+ 14 - 2
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;
     }
 }