summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac1
-rw-r--r--include/timeutils.h4
-rw-r--r--lib/timeutils.c19
-rw-r--r--login-utils/utmpdump.c1
4 files changed, 25 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 37599212c..2dc10e331 100644
--- a/configure.ac
+++ b/configure.ac
@@ -416,6 +416,7 @@ AC_CHECK_FUNCS([ \
strnlen \
sysconf \
sysinfo \
+ timegm \
usleep \
warn \
warnx \
diff --git a/include/timeutils.h b/include/timeutils.h
index 00d18200d..85fc228db 100644
--- a/include/timeutils.h
+++ b/include/timeutils.h
@@ -78,4 +78,8 @@ int time_is_thisyear(const time_t *t, struct timeval *now);
int strtime_short(const time_t *t, struct timeval *now, int flags, char *buf, size_t bufsz);
+#ifndef HAVE_TIMEGM
+extern time_t timegm(struct tm *tm);
+#endif
+
#endif /* UTIL_LINUX_TIME_UTIL_H */
diff --git a/lib/timeutils.c b/lib/timeutils.c
index ea5c0aad8..d38970c10 100644
--- a/lib/timeutils.c
+++ b/lib/timeutils.c
@@ -20,6 +20,7 @@
#include <assert.h>
#include <ctype.h>
+#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
@@ -460,6 +461,24 @@ int strtime_short(const time_t *t, struct timeval *now, int flags, char *buf, si
return rc <= 0 ? -1 : 0;
}
+#ifndef HAVE_TIMEGM
+time_t timegm(struct tm *tm)
+{
+ const char *zone = getenv("TZ");
+ time_t ret;
+
+ setenv("TZ", "", 1);
+ tzset();
+ ret = mktime(tm);
+ if (zone)
+ setenv("TZ", zone, 1);
+ else
+ unsetenv("TZ");
+ tzset();
+ return ret;
+}
+#endif /* HAVE_TIMEGM */
+
#ifdef TEST_PROGRAM_TIMEUTILS
int main(int argc, char *argv[])
diff --git a/login-utils/utmpdump.c b/login-utils/utmpdump.c
index 91eb4fb55..8e4839346 100644
--- a/login-utils/utmpdump.c
+++ b/login-utils/utmpdump.c
@@ -45,6 +45,7 @@
#include "timeutils.h"
#include "xalloc.h"
#include "closestream.h"
+#include "timeutils.h"
static time_t strtotime(const char *s_time)
{