problem with detzcode on machines w/64 bit longs

Chris Torek torek at BSDI.COM
Fri Mar 10 20:00:53 UTC 1995


>However, not all operating systems have [int32_t] ... Probably a case
>for #ifdef'ing the code.

Hm, good point, I was thinking of BSD systems specifically.  (It is
these `soma' muscle relaxant pills!  I swear! :-) )

If one is to resort to #ifdef's, the original suggestion of testing
the top bit and OR'ing in ~0L << 32 should work, using something like:

	#if LONG_MAX > 2147483647	/* long > 32 bits */
		if (result & (1L << 31))
			result |= ~0L << 32;
	#endif
		return (result);

The (long)(int32_t) method may produce better code on an Alpha,

Chris



More information about the tz mailing list