summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aclocal.m488
-rw-r--r--configure.ac3
-rw-r--r--lib/birdlib.h3
-rw-r--r--sysdep/unix/timer.h16
4 files changed, 10 insertions, 100 deletions
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 <mj@ucw.cz>
-AC_DEFUN([BIRD_CHECK_STRUCT_ALIGN],
-[
- AC_CACHE_CHECK(
- [usual alignment of structures],
- [bird_cv_c_struct_align],
- [
- AC_TRY_RUN(
- [
- #include <stdio.h>
-
- 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 <stdio.h>
- #include <sys/time.h>
- #include <limits.h>
-
- 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