Re: should "man feature_test_macros" mention _LARGEFILE_SOURCE?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue 18 Mar 2014 15:46:43 Robert P. J. Day wrote:
>   just noticed under /usr/include on my fedora rawhide system the
> following:
> 
> /usr/include/bits/environments.h:# define __ILP32_OFFBIG_CFLAGS	"-m32
> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
> /usr/include/python3.3m/pyconfig-64.h:#define _LARGEFILE_SOURCE 1
> /usr/include/features.h:   _LARGEFILE_SOURCE	Some more functions for 
correct
> standard I/O. /usr/include/features.h:#  undef _LARGEFILE_SOURCE
> /usr/include/features.h:#  define _LARGEFILE_SOURCE	1
> /usr/include/features.h:#ifdef _LARGEFILE_SOURCE
> /usr/include/python2.7/pyconfig-64.h:#define _LARGEFILE_SOURCE 1
> 
> but there's no mention of "_LARGEFILE_SOURCE" in "man
> feature_test_macros". is that assumed to be implied by
> _LARGEFILE64_SOURCE? it's not clear.

nope, none of the three LFS flags imply each other, nor should they.  they're 
related, but orthogonal by design.

i could have sworn i saw a description of them in POSIX, but i can't find it 
now.  the GNU C library manual covers it though:
https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html

here's a terse summary off the top of my head:

_LARGEFILE_SOURCE: expose prototypes for new funcs which POSIX got wrong 
originally.  e.g. fseek & ftell utilize "long", so fseeko & ftello were added 
which use "off_t".

_LARGEFILE64_SOURCE: expose prototypes for 64-bit variant funcs w/out 
affecting any existing funcs.  e.g. you now have fseeko64 & ftello64 which 
take explicit off64_t types while fseeko and ftello are unchanged.  makes 
sense when sizeof(off_t) == 4 && sizeof(off64_t) == 8.

_FILE_OFFSET_BITS: explicitly set the off_t size.  set it to 32 if you want 
sizeof(off_t) == 4, or set it to 64 if you want sizeof(off_t) == 8.

in the ideal world, _FILE_OFFSET_BITS should default to 64 and 
_LARGEFILE_SOURCE should default to defined.  in our crap world, apps should 
be always building with these in their CPPFLAGS.
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux