summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/configure.in2
-rw-r--r--source3/include/includes.h4
-rw-r--r--source3/lib/replace.c22
3 files changed, 27 insertions, 1 deletions
diff --git a/source3/configure.in b/source3/configure.in
index 206a9edb50..78ed4a953c 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -749,7 +749,7 @@ AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate
AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
-AC_CHECK_FUNCS(syslog vsyslog getgrouplist)
+AC_CHECK_FUNCS(syslog vsyslog getgrouplist timegm)
# setbuffer is needed for smbtorture
AC_CHECK_FUNCS(setbuffer)
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 01b9f14979..a7dd967bf3 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -1165,5 +1165,9 @@ int asprintf(char **,const char *, ...) PRINTF_ATTRIBUTE(2,3);
#define VA_COPY(dest, src) (dest) = (src)
#endif
+#ifndef HAVE_TIMEGM
+time_t timegm(struct tm *tm);
+#endif
+
#endif /* _INCLUDES_H */
diff --git a/source3/lib/replace.c b/source3/lib/replace.c
index fd7b2cf7f0..afdf32dbe8 100644
--- a/source3/lib/replace.c
+++ b/source3/lib/replace.c
@@ -430,3 +430,25 @@ char *rep_inet_ntoa(struct in_addr ip)
#endif /* HAVE_VSYSLOG */
+#ifndef HAVE_TIMEGM
+/*
+ see the timegm man page on linux
+*/
+ time_t timegm(struct tm *tm)
+{
+ time_t ret;
+ char *tz;
+
+ tz = getenv("TZ");
+ setenv("TZ", "", 1);
+ tzset();
+ ret = mktime(tm);
+ if (tz) {
+ setenv("TZ", tz, 1);
+ } else {
+ unsetenv("TZ");
+ }
+ tzset();
+ return ret;
+}
+#endif