introduce HAVE_TM_GMTOFF_IN_TM
Not all architectures have the tm.tm_gmtoff member. This fixes cygwin builds.
This commit is contained in:
parent
a334c296e0
commit
9c3dc90d16
|
@ -83,6 +83,30 @@ if test "$enable_coverage" = "yes"; then
|
||||||
AC_SUBST([COVERAGE_LDFLAGS])
|
AC_SUBST([COVERAGE_LDFLAGS])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_DEFUN([CHECK_TM_INCLUDES_TM_GMTOFF], [
|
||||||
|
AC_CACHE_CHECK(
|
||||||
|
[whether struct tm has tm_gmtoff member],
|
||||||
|
osmo_cv_tm_includes_tm_gmtoff,
|
||||||
|
[AC_LINK_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([
|
||||||
|
#include <time.h>
|
||||||
|
], [
|
||||||
|
time_t t = time(NULL);
|
||||||
|
struct tm* lt = localtime(&t);
|
||||||
|
int off = lt->tm_gmtoff;
|
||||||
|
])
|
||||||
|
],
|
||||||
|
osmo_cv_tm_includes_tm_gmtoff=yes,
|
||||||
|
osmo_cv_tm_includes_tm_gmtoff=no
|
||||||
|
)]
|
||||||
|
)
|
||||||
|
if test "x$osmo_cv_tm_includes_tm_gmtoff" = xyes; then
|
||||||
|
AC_DEFINE(HAVE_TM_GMTOFF_IN_TM, 1,
|
||||||
|
[Define if struct tm has tm_gmtoff member.])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
CHECK_TM_INCLUDES_TM_GMTOFF
|
||||||
|
|
||||||
dnl Generate the output
|
dnl Generate the output
|
||||||
AM_CONFIG_HEADER(bscconfig.h)
|
AM_CONFIG_HEADER(bscconfig.h)
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
#include "bscconfig.h"
|
||||||
|
|
||||||
#include <openbsc/auth.h>
|
#include <openbsc/auth.h>
|
||||||
#include <openbsc/db.h>
|
#include <openbsc/db.h>
|
||||||
#include <openbsc/debug.h>
|
#include <openbsc/debug.h>
|
||||||
|
@ -734,7 +736,12 @@ int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn)
|
||||||
/* Need to get GSM offset and convert into 15 min units */
|
/* Need to get GSM offset and convert into 15 min units */
|
||||||
/* This probably breaks if gmtoff returns a value not evenly divisible by 15? */
|
/* This probably breaks if gmtoff returns a value not evenly divisible by 15? */
|
||||||
local_time = localtime(&cur_t);
|
local_time = localtime(&cur_t);
|
||||||
|
#ifdef HAVE_TM_GMTOFF_IN_TM
|
||||||
tzunits = (local_time->tm_gmtoff/60)/15;
|
tzunits = (local_time->tm_gmtoff/60)/15;
|
||||||
|
#else
|
||||||
|
#warning find a portable way to obtain the timezone offset
|
||||||
|
tzunits = 0;
|
||||||
|
#endif
|
||||||
if (tzunits < 0) {
|
if (tzunits < 0) {
|
||||||
tzunits = tzunits/-1;
|
tzunits = tzunits/-1;
|
||||||
ptr8[7] = bcdify(tzunits);
|
ptr8[7] = bcdify(tzunits);
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
#include "bscconfig.h"
|
||||||
|
|
||||||
#include <osmocom/core/msgb.h>
|
#include <osmocom/core/msgb.h>
|
||||||
#include <osmocom/gsm/tlv.h>
|
#include <osmocom/gsm/tlv.h>
|
||||||
#include <openbsc/debug.h>
|
#include <openbsc/debug.h>
|
||||||
|
@ -279,7 +281,12 @@ static void gsm340_gen_scts(uint8_t *scts, time_t time)
|
||||||
*scts++ = bcdify(tm->tm_hour);
|
*scts++ = bcdify(tm->tm_hour);
|
||||||
*scts++ = bcdify(tm->tm_min);
|
*scts++ = bcdify(tm->tm_min);
|
||||||
*scts++ = bcdify(tm->tm_sec);
|
*scts++ = bcdify(tm->tm_sec);
|
||||||
|
#ifdef HAVE_TM_GMTOFF_IN_TM
|
||||||
*scts++ = bcdify(tm->tm_gmtoff/(60*15));
|
*scts++ = bcdify(tm->tm_gmtoff/(60*15));
|
||||||
|
#else
|
||||||
|
#warning find a portable way to obtain timezone offset
|
||||||
|
*scts++ = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decode 03.40 TP-SCTS (into utc/gmt timestamp) */
|
/* Decode 03.40 TP-SCTS (into utc/gmt timestamp) */
|
||||||
|
@ -300,7 +307,9 @@ static time_t gsm340_scts(uint8_t *scts)
|
||||||
tm.tm_sec = unbcdify(*scts++);
|
tm.tm_sec = unbcdify(*scts++);
|
||||||
/* according to gsm 03.40 time zone is
|
/* according to gsm 03.40 time zone is
|
||||||
"expressed in quarters of an hour" */
|
"expressed in quarters of an hour" */
|
||||||
|
#ifdef HAVE_TM_GMTOFF_IN_TM
|
||||||
tm.tm_gmtoff = unbcdify(*scts++) * 15*60;
|
tm.tm_gmtoff = unbcdify(*scts++) * 15*60;
|
||||||
|
#endif
|
||||||
|
|
||||||
return mktime(&tm);
|
return mktime(&tm);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue