diff --git a/cde/configure.ac b/cde/configure.ac index 423dea32a..24aa307af 100644 --- a/cde/configure.ac +++ b/cde/configure.ac @@ -397,6 +397,12 @@ AC_CHECK_LIB(tirpc, svc_register, TIRPCLIB=-ltirpc]) AC_SUBST(TIRPCLIB) +dnl check sizeof time_t for RPC +AC_CHECK_SIZEOF([int]) +AC_CHECK_SIZEOF([long]) +AC_CHECK_SIZEOF([long long]) +AC_CHECK_SIZEOF([time_t]) + dnl jpeg AC_CHECK_LIB(jpeg, jpeg_read_header, [JPEGLIB="-ljpeg"], [AC_MSG_ERROR([libjpeg not found, please install it])], diff --git a/cde/lib/csa/cmxdr.c b/cde/lib/csa/cmxdr.c index e8d13cced..18aa6126f 100644 --- a/cde/lib/csa/cmxdr.c +++ b/cde/lib/csa/cmxdr.c @@ -32,6 +32,9 @@ * xdr routines for xapia csa data structures */ +#ifdef HAVE_CONFIG_H +#include +#endif #include #include "cm.h" #include "csa.h" @@ -44,10 +47,21 @@ bool_t xdr_time_t(XDR *xdrs, time_t *objp); /* * time_t is a typedef which is system dependent */ +#ifndef _xdr_time_t +# if SIZEOF_INT == SIZEOF_TIME_T +# define _xdr_time_t xdr_int +# elif SIZEOF_LONG == SIZEOF_TIME_T +# define _xdr_time_t xdr_long +# elif SIZEOF_LONG_LONG == SIZEOF_TIME_T +# define _xdr_time_t xdr_hyper +# else +# error "Unknown time_t size" +# endif +#endif bool_t xdr_time_t(XDR *xdrs, time_t *objp) { - if (!xdr_long(xdrs, objp)) + if (!_xdr_time_t(xdrs, objp)) return (FALSE); return (TRUE); }