Re: Major pending change in 2.5 for multi-gigabyte file support

From: Serassio Guido <guido.serassio@dont-contact.us>
Date: Sun, 13 Mar 2005 09:56:48 +0100

Hi Henrik,

At 02.16 13/03/2005, Henrik Nordstrom wrote:

>On Sat, 12 Mar 2005, Serassio Guido wrote:
>
>>Again Henrik, what about to use the PRIxxxx macros defined in inttypes.h ?
>
>After some consideration I think I'll settle for the following
>
>#if SIZEOF_LONG < 8 && defined(PRId64) && defined(INT64_MAX) && HAVE_STRTOLL
>typedef int64_t squid_off_t;
># define SIZEOF_SQUID_OFF_T SIZEOF_INT64_T
># define PRINTF_OFF_T PRId64
># define strto_off_t (int64_t)strtoll
>#else
>typedef long squid_off_t;
># define SIZEOF_SQUID_OFF_T SIZEOF_LONG
># define PRINTF_OFF_T "ld"
># define strto_off_t strtol
>#endif
>
>If the platform doesn't have inttypes.h with it's defined printf format
>specifier then the support for 64 bit types is probably a bit sketchy and
>better fall back on plain long.

I agree, more conservative.

>For Windows you can clean up the types in include/squid_types.h if needed
>
>typedef __int64_t int64_t;
>#define PRId64 "I64d"
>#define INT64_MAX 0x7FFFFFFFFFFFFFFFLL

 From limits.h of MS Visual Studio:

/* minimum signed 64 bit value */
#define _I64_MIN (-9223372036854775807i64 - 1)
/* maximum signed 64 bit value */
#define _I64_MAX 9223372036854775807i64
/* maximum unsigned 64 bit value */
#define _UI64_MAX 0xffffffffffffffffui64

They use the "i64" suffix instead of "LL" .....

No comment .... :-(

So I will have:

typedef __int64 int64_t;
#define PRId64 "I64d"
#define INT64_MAX _I64_MAX

Regards

Guido

-
========================================================
Guido Serassio
Acme Consulting S.r.l. - Microsoft Certified Partner
Via Lucia Savarino, 1 10098 - Rivoli (TO) - ITALY
Tel. : +39.011.9530135 Fax. : +39.011.9781115
Email: guido.serassio@acmeconsulting.it
WWW: http://www.acmeconsulting.it/
Received on Sun Mar 13 2005 - 01:57:10 MST

This archive was generated by hypermail pre-2.1.9 : Fri Apr 01 2005 - 12:00:04 MST