inodes as doubles in lib/doscalls.c
Steve Langasek
vorlon at netexpress.net
Thu Jan 20 01:11:57 GMT 2000
Could someone please explain the following line to me (from dos_GetWd() in
lib/doscalls.c):
DEBUG(5,("dos_GetWd %s, inode %.0f, dev %.0f\n",s,(double)st.st_ino,(double)st.st_dev));
The reason I ask is that it's causing problems when trying to build
pam_smbpass against SAMBA_TNG's shared libraries. On RedHat 6.0 with
egcs-2.91.66, the above line of code generates an undefined reference to
__cmpdi2. Apparently, egcs takes care of this on its own when building an
executable, but I can't get it to link properly when building a shared lib.
So is there a reason I'm missing why these values are being cast to doubles
here? I trust that all Unices *do* use ints for inodes... :D Is this done
because there's no integer type large enough that's reliably supported by
the printf() family? I can do away with the cast on my system and use %l or
%ll, and everything works fine...
-Steve Langasek
postmodern programmer
More information about the samba-technical
mailing list