diff --git a/aclocal.m4 b/aclocal.m4 index c4475160..365bfa81 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,94 +1,6 @@ dnl ** Additional Autoconf tests for BIRD configure script dnl ** (c) 1999 Martin Mares -AC_DEFUN([BIRD_CHECK_STRUCT_ALIGN], -[ - AC_CACHE_CHECK( - [usual alignment of structures], - [bird_cv_c_struct_align], - [ - AC_TRY_RUN( - [ - #include - - struct { char x; long int y; } ary[2]; - - int main(void) - { - FILE *f = fopen("conftestresult", "w"); - if (!f) - return 10; - fprintf(f, "%d", sizeof(ary)/2); - fclose(f); - exit(0); - } - ], - [bird_cv_c_struct_align=$(cat conftestresult)], - [ - AC_MSG_RESULT([test program failed]) - AC_MSG_ERROR([Cannot determine structure alignment]) - ], - [bird_cv_c_struct_align=16] - ) - ] - ) - - AC_DEFINE_UNQUOTED([CPU_STRUCT_ALIGN], - [$bird_cv_c_struct_align], - [Usual alignment of structures] - ) -]) - -AC_DEFUN([BIRD_CHECK_TIME_T], -[ - AC_CACHE_CHECK( - [characteristics of time_t], - [bird_cv_type_time_t], - [ - AC_TRY_RUN( - [ - #include - #include - #include - - int main(void) - { - FILE *f = fopen("conftestresult", "w"); - if (!f) - return 10; - fprintf(f, "%d-bit ", sizeof(time_t)*CHAR_BIT); - if ((time_t) -1 > 0) - fprintf(f, "un"); - fprintf(f, "signed"); - fclose(f); - exit(0); - } - ], - [bird_cv_type_time_t=$(cat conftestresult)], - [ - AC_MSG_RESULT([test program failed]) - AC_MSG_ERROR([Cannot determine time_t size and signedness.]) - ], - [bird_cv_type_time_t="32-bit signed"] - ) - ] - ) - - case "$bird_cv_type_time_t" in - *64-bit*) - AC_DEFINE([TIME_T_IS_64BIT], [1], [Define to 1 if time_t is 64 bit]) - ;; - esac - - case "$bird_cv_type_time_t" in - *unsigned*) - ;; - *) - AC_DEFINE([TIME_T_IS_SIGNED], [1], [Define to 1 if time_t is signed]) - ;; - esac -]) - AC_DEFUN([BIRD_CHECK_PTHREADS], [ bird_tmp_cflags="$CFLAGS" diff --git a/configure.ac b/configure.ac index aac5679c..7910c196 100644 --- a/configure.ac +++ b/configure.ac @@ -320,9 +320,6 @@ AC_C_BIGENDIAN( [AC_MSG_ERROR([Cannot determine CPU endianity.])] ) -BIRD_CHECK_STRUCT_ALIGN -BIRD_CHECK_TIME_T - if test "$enable_debug" = yes ; then AC_DEFINE([DEBUGGING], [1], [Define to 1 if debugging is enabled]) if test "$enable_memcheck" = yes ; then diff --git a/lib/birdlib.h b/lib/birdlib.h index 37337078..d21cdf1f 100644 --- a/lib/birdlib.h +++ b/lib/birdlib.h @@ -14,9 +14,12 @@ /* Ugly structure offset handling macros */ +struct align_probe { char x; long int y; }; + #define OFFSETOF(s, i) ((size_t) &((s *)0)->i) #define SKIP_BACK(s, i, p) ((s *)((char *)p - OFFSETOF(s, i))) #define BIRD_ALIGN(s, a) (((s)+a-1)&~(a-1)) +#define CPU_STRUCT_ALIGN (sizeof(struct align_probe)) /* Utility macros */ diff --git a/sysdep/unix/timer.h b/sysdep/unix/timer.h index 99d43932..ae5a27e8 100644 --- a/sysdep/unix/timer.h +++ b/sysdep/unix/timer.h @@ -77,14 +77,12 @@ bird_clock_t tm_parse_datetime(char *); /* Convert date to bird_clock_t */ void tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t); -#ifdef TIME_T_IS_64BIT -#define TIME_INFINITY 0x7fffffffffffffff -#else -#ifdef TIME_T_IS_SIGNED -#define TIME_INFINITY 0x7fffffff -#else -#define TIME_INFINITY 0xffffffff -#endif -#endif +#define TIME_T_IS_64BIT (sizeof(time_t) == 8) +#define TIME_T_IS_SIGNED ((time_t) -1 < 0) + +#define TIME_INFINITY \ + ((time_t) (TIME_T_IS_SIGNED ? \ + (TIME_T_IS_64BIT ? 0x7fffffffffffffff : 0x7fffffff): \ + (TIME_T_IS_64BIT ? 0xffffffffffffffff : 0xffffffff))) #endif