<time.h>: Add timegm(), timelocal() and others.
Add timegm(), timelocal(), time2posix() and posix2time() to the
C library.
Change-Id: I34d5771ed83dd994870a5ca58a511d01898b1ffb
diff --git a/libc/bionic/time64_config.h b/libc/bionic/time64_config.h
index 53bcecf..1385045 100644
--- a/libc/bionic/time64_config.h
+++ b/libc/bionic/time64_config.h
@@ -33,7 +33,7 @@
*/
#define HAS_GMTIME_R
#define HAS_LOCALTIME_R
-/*#define HAS_TIMEGM */
+#define HAS_TIMEGM
/* Details of non-standard tm struct elements.
diff --git a/libc/docs/CHANGES.TXT b/libc/docs/CHANGES.TXT
index bc641f4..67b9e76 100644
--- a/libc/docs/CHANGES.TXT
+++ b/libc/docs/CHANGES.TXT
@@ -9,6 +9,8 @@
- <sys/cdefs.h>: Include <android/api-level.h>
+- <time.h>: Add timegm(), timelocal(), time2posix() and posix2time()
+
-------------------------------------------------------------------------------
Differences between Android 2.3 and Android 2.2:
diff --git a/libc/include/time.h b/libc/include/time.h
index 5d1a0e2..4ad4f7b 100644
--- a/libc/include/time.h
+++ b/libc/include/time.h
@@ -128,6 +128,11 @@
extern int timer_gettime(timer_t timerid, struct itimerspec *value);
extern int timer_getoverrun(timer_t timerid);
+extern time_t timelocal(struct tm *tm);
+extern time_t timegm(struct tm* tm);
+extern time_t time2posix(time_t ti);
+extern time_t posix2time(time_t ti);
+
__END_DECLS
#endif /* _TIME_H_ */
diff --git a/libc/tzcode/localtime.c b/libc/tzcode/localtime.c
index 85a913e..e442a03 100644
--- a/libc/tzcode/localtime.c
+++ b/libc/tzcode/localtime.c
@@ -60,6 +60,14 @@
# define XLOG(x) do{}while (0)
#endif
+/* Add the following function implementations:
+ * timelocal()
+ * timegm()
+ * time2posix()
+ * posix2time()
+ */
+#define STD_INSPIRED 1
+
/* THREAD-SAFETY SUPPORT GOES HERE */
static pthread_mutex_t _tzMutex = PTHREAD_MUTEX_INITIALIZER;
@@ -1509,7 +1517,7 @@
}
#ifdef STD_INSPIRED
-
+#if 0 /* disabled because there is no good documentation for this function */
struct tm *
offtime(timep, offset)
const time_t * const timep;
@@ -1517,7 +1525,7 @@
{
return gmtsub(timep, offset, &tmGlobal);
}
-
+#endif /* 0 */
#endif /* defined STD_INSPIRED */
/*
@@ -2106,6 +2114,7 @@
return result;
}
+#if 0 /* disable due to lack of clear documentation on this function */
time_t
timeoff(tmp, offset)
struct tm * const tmp;
@@ -2120,6 +2129,7 @@
return result;
}
+#endif /* 0 */
#endif /* defined STD_INSPIRED */