On Fri, 18 Aug 2006, Mark Crispin wrote:
; I've never tried to make imapd work in 64-bit mode, or for that matter
; build it. The problem is that imapd was written according to K&R and the
; principles expressed in K&R. Thus, it assumes that a 64-bit compilers
; would have 64-bit longs; whereas most 64-bit compilers have 32-bit ints
; and longs and use the new "long long" type which wasn't in K&R.
(I appreciate that 64-bit isn't supported but this might be useful)
Most 64-bit compilers do have 64-bit longs and that's where
the problems are usually found.
The most common problem I've come across when porting applications to
64-bit is the use of a 64-bit data type where a 32-bit one is expected.
Most networking functions work with 32-bit data types and dereferencing is
common practise so this is one place where problems tend to be concentrated.
For example in ip4unix.c the following line is within ip_nametoaddr()
if (len) *len = he->h_length;
but len is defined as size_t in the calling function. On 64-bit size_t
is 64-bit but he->h_length is 32-bit. Depending on your byte order
this can result in len being set to 0.
Unless an application has been specifically written with 64-bit in mind
it is unlikely to work out of the box and even if you do get it compile
and run then without detailed code analysis something will bite you
one day.
In summary, stick with 32-bit as Mark says!
_______________________________________________
Imap-uw mailing list
[email protected]
https://mailman1.u.washington.edu/mailman/listinfo/imap-uw