summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/basic.mk3
-rw-r--r--source4/lib/replace.c33
-rw-r--r--source4/lib/time.c33
3 files changed, 35 insertions, 34 deletions
diff --git a/source4/lib/basic.mk b/source4/lib/basic.mk
index c7d3a264d2..56fc19dca7 100644
--- a/source4/lib/basic.mk
+++ b/source4/lib/basic.mk
@@ -4,6 +4,8 @@
# Start SUBSYSTEM LIBREPLACE
[SUBSYSTEM::LIBREPLACE]
INIT_OBJ_FILES = lib/replace.o
+ADD_OBJ_FILES = \
+ lib/snprintf.o
# End SUBSYSTEM LIBREPLACE
##############################
@@ -23,7 +25,6 @@ ADD_OBJ_FILES = \
lib/time.o \
lib/genrand.o \
lib/username.o \
- lib/snprintf.o \
lib/dprintf.o \
lib/xfile.o \
lib/wins_srv.o \
diff --git a/source4/lib/replace.c b/source4/lib/replace.c
index f3a0df6ef6..4ed99c833c 100644
--- a/source4/lib/replace.c
+++ b/source4/lib/replace.c
@@ -427,6 +427,39 @@ char *rep_inet_ntoa(struct in_addr ip)
#endif /* HAVE_SYSLOG */
#endif /* HAVE_VSYSLOG */
+/*******************************************************************
+yield the difference between *A and *B, in seconds, ignoring leap seconds
+********************************************************************/
+static int tm_diff(struct tm *a, struct tm *b)
+{
+ int ay = a->tm_year + (1900 - 1);
+ int by = b->tm_year + (1900 - 1);
+ int intervening_leap_days =
+ (ay/4 - by/4) - (ay/100 - by/100) + (ay/400 - by/400);
+ int years = ay - by;
+ int days = 365*years + intervening_leap_days + (a->tm_yday - b->tm_yday);
+ int hours = 24*days + (a->tm_hour - b->tm_hour);
+ int minutes = 60*hours + (a->tm_min - b->tm_min);
+ int seconds = 60*minutes + (a->tm_sec - b->tm_sec);
+
+ return seconds;
+}
+
+/*******************************************************************
+ return the UTC offset in seconds west of UTC, or 0 if it cannot be determined
+ ******************************************************************/
+int get_time_zone(time_t t)
+{
+ struct tm *tm = gmtime(&t);
+ struct tm tm_utc;
+ if (!tm)
+ return 0;
+ tm_utc = *tm;
+ tm = localtime(&t);
+ if (!tm)
+ return 0;
+ return tm_diff(&tm_utc,tm);
+}
#ifndef HAVE_TIMEGM
/*
diff --git a/source4/lib/time.c b/source4/lib/time.c
index fec4dd62a2..3ca7be5540 100644
--- a/source4/lib/time.c
+++ b/source4/lib/time.c
@@ -49,39 +49,6 @@ void GetTimeOfDay(struct timeval *tval)
#endif
}
-/*******************************************************************
-yield the difference between *A and *B, in seconds, ignoring leap seconds
-********************************************************************/
-static int tm_diff(struct tm *a, struct tm *b)
-{
- int ay = a->tm_year + (1900 - 1);
- int by = b->tm_year + (1900 - 1);
- int intervening_leap_days =
- (ay/4 - by/4) - (ay/100 - by/100) + (ay/400 - by/400);
- int years = ay - by;
- int days = 365*years + intervening_leap_days + (a->tm_yday - b->tm_yday);
- int hours = 24*days + (a->tm_hour - b->tm_hour);
- int minutes = 60*hours + (a->tm_min - b->tm_min);
- int seconds = 60*minutes + (a->tm_sec - b->tm_sec);
-
- return seconds;
-}
-
-/*******************************************************************
- return the UTC offset in seconds west of UTC, or 0 if it cannot be determined
- ******************************************************************/
-int get_time_zone(time_t t)
-{
- struct tm *tm = gmtime(&t);
- struct tm tm_utc;
- if (!tm)
- return 0;
- tm_utc = *tm;
- tm = localtime(&t);
- if (!tm)
- return 0;
- return tm_diff(&tm_utc,tm);
-}
#define TIME_FIXUP_CONSTANT 11644473600LL