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.
As for opening nsswitch.conf, that's done by the C runtime library and not
by imapd. imapd just does gethostbyname()/gethostbyaddr() when built IPv4
only, and getnameinfo()/getaddrinfo() when built for IPv6. So I can't
help you as to why imapd didn't open nsswitch.conf in 64-bit mode.
As for opening /etc/services, that's probably the getservbyname() calls in
routine server_init() in env_unix.c. That code is also what decides
whether the session is SSL or not. That code is skipped entirely if it
can't determine what server port was used to connect; this is obtained by
use of getsockname() and then looking at the sa_family of the returned
sockaddr to determine whether to treat it as a sockaddr_in struct and get
the sin_port, or a sockaddr_in6 struct to get the sin6_port. [Memo: IPv6
sockets are incredibly badly designed.]
How 32 vs. 64 bit mode figures into all of this I don't know, but that's
the story.
In any case, I don't promise that a 64-bit build will work, even if it
compiles. I only support 32-bit builds.
-- Mark --
http://staff.washington.edu/mrc
Science does not emerge from voting, party politics, or public debate.
Si vis pacem, para bellum.
_______________________________________________
Imap-uw mailing list
[email protected]
https://mailman1.u.washington.edu/mailman/listinfo/imap-uw