From e9f59ca61ff224908576959a2cf394b63d05c462 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 15 Nov 2005 00:16:17 +0000 Subject: * Correct function prototypes that should have been using krb5_timestamp in order to prevent type conflicts if krb5_timestamp ever becomes a 64-bit value * Force the use of 32-bit time_t with Microsoft's VS 2005 compiler on 32-bit platforms * Test for inclusion of krb5.h before k5-int.h ticket: 2883 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17488 dc483132-0cff-0310-8789-dd5450dbe970 --- src/include/win-mac.h | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'src/include/win-mac.h') diff --git a/src/include/win-mac.h b/src/include/win-mac.h index 9ffb123..ea53cf1 100644 --- a/src/include/win-mac.h +++ b/src/include/win-mac.h @@ -33,8 +33,27 @@ #include #ifndef SIZE_MAX /* in case Microsoft defines max size of size_t */ +#ifdef MAX_SIZE /* Microsoft defines MAX_SIZE as max size of size_t */ +#define SIZE_MAX MAX_SIZE +#else #define SIZE_MAX UINT_MAX #endif +#endif + +/* To ensure backward compatibility of the ABI use 32-bit time_t on + * 32-bit Windows. + */ +#ifdef _KRB5_INT_H +#ifdef KRB5_GENERAL__ +#error krb5.h included before k5-int.h +#endif /* KRB5_GENERAL__ */ +#if _INTEGRAL_MAX_BITS >= 64 && _MSC_VER >= 1400 && !defined(_WIN64) && !defined(_USE_32BIT_TIME_T) +#if defined(_TIME_T_DEFINED) || defined(_INC_IO) || defined(_INC_TIME) || defined(_INC_WCHAR) +#error time_t has been defined as a 64-bit integer which is incompatible with Kerberos on this platform. +#endif /* _TIME_T_DEFINED */ +#define _USE_32BIT_TIME_T +#endif +#endif #ifndef KRB5_CALLCONV # define KRB5_CALLCONV __stdcall @@ -53,12 +72,16 @@ #ifndef KRB5_SYSTYPES__ #define KRB5_SYSTYPES__ #include -typedef unsigned long u_long; /* Not part of sys/types.h on the pc */ -typedef unsigned int u_int; -typedef unsigned short u_short; -typedef unsigned char u_char; -typedef unsigned int uint32_t; -typedef int int32_t; +typedef unsigned long u_long; /* Not part of sys/types.h on the pc */ +typedef unsigned int u_int; +typedef unsigned short u_short; +typedef unsigned char u_char; +typedef unsigned int uint32_t; +typedef int int32_t; +#if _INTEGRAL_MAX_BITS >= 64 +typedef unsigned __int64 uint64_t; +typedef __int64 int64_t; +#endif #endif /* KRB5_SYSTYPES__ */ #define MAXHOSTNAMELEN 512 -- cgit v1.1