inodes as doubles in lib/doscalls.c
Jeremy Allison
jeremy at valinux.com
Mon Jan 24 19:42:44 GMT 2000
Steve Langasek wrote:
>
> 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
Nope - IRIX uses 64 bit ints for inodes.
> 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...
Yes, that's exactly right. %ll is not standard accross all
printfs I'm afraid.
Jeremy.
--
--------------------------------------------------------
Buying an operating system without source is like buying
a self-assembly Space Shuttle with no instructions.
--------------------------------------------------------
More information about the samba-technical
mailing list