1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-10 12:58:35 +03:00

r3223: continue the effort on LIBREPLACE to try to get the ldb tools to

compile on platforms like solaris without having to link to the whole
of the Samba4 lib directory.
This commit is contained in:
Andrew Tridgell 2004-10-25 23:26:13 +00:00 committed by Gerald (Jerry) Carter
parent d91659b037
commit f6862bfc1c
3 changed files with 35 additions and 34 deletions

View File

@ -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 \

View File

@ -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
/*

View File

@ -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