Hi Rich, what is the reason for loff_t being defined in <fcntl.h> ? It was defined some time ago, in v0.9.5. glibc (and thus uclibc; + also Bionic) has it in <sys/types.h>, defined long time before. Who is correct? I guess loff_t not being posix, therefore it shouldn't be in <sys/types.h> ? I'm asking because it'd be nice to have it for both in single header (portability). Kind regards, Petr
On Wed, Oct 16, 2019 at 11:28:38PM +0200, Petr Vorel wrote:
> Hi Rich,
>
> what is the reason for loff_t being defined in <fcntl.h> ?
> It was defined some time ago, in v0.9.5.
>
> glibc (and thus uclibc; + also Bionic) has it in <sys/types.h>, defined long
> time before. Who is correct? I guess loff_t not being posix, therefore it
> shouldn't be in <sys/types.h> ?
>
> I'm asking because it'd be nice to have it for both in single header
> (portability).
The reason it's defined in fcntl.h is because that's where the
declarations for the only functions which use it in their interfaces
reside. If it needs to be made available from multiple places, that
could be done at some point, but this is a really minor type that
shouldn't be used except with with functions defined in terms of it.
Rich
Hi Rich, > > what is the reason for loff_t being defined in <fcntl.h> ? > > It was defined some time ago, in v0.9.5. > > glibc (and thus uclibc; + also Bionic) has it in <sys/types.h>, defined long > > time before. Who is correct? I guess loff_t not being posix, therefore it > > shouldn't be in <sys/types.h> ? > > I'm asking because it'd be nice to have it for both in single header > > (portability). > The reason it's defined in fcntl.h is because that's where the > declarations for the only functions which use it in their interfaces > reside. If it needs to be made available from multiple places, that > could be done at some point, but this is a really minor type that > shouldn't be used except with with functions defined in terms of it. Thanks for info. So maybe glibc shouldn't have defined it in <sys/types.h>. FYI I'm handling compatibility issues for LTP [1], which often uses kernel API in order to test it. Probably normal user space applications don't have needs we have in LTP. Kind regards, Petr [1] https://github.com/linux-test-project/ltp/
On Fri, Oct 18, 2019 at 12:52:05AM +0200, Petr Vorel wrote:
> Hi Rich,
>
> > > what is the reason for loff_t being defined in <fcntl.h> ?
> > > It was defined some time ago, in v0.9.5.
>
> > > glibc (and thus uclibc; + also Bionic) has it in <sys/types.h>, defined long
> > > time before. Who is correct? I guess loff_t not being posix, therefore it
> > > shouldn't be in <sys/types.h> ?
>
> > > I'm asking because it'd be nice to have it for both in single header
> > > (portability).
>
> > The reason it's defined in fcntl.h is because that's where the
> > declarations for the only functions which use it in their interfaces
> > reside. If it needs to be made available from multiple places, that
> > could be done at some point, but this is a really minor type that
> > shouldn't be used except with with functions defined in terms of it.
> Thanks for info. So maybe glibc shouldn't have defined it in <sys/types.h>.
>
> FYI I'm handling compatibility issues for LTP [1], which often uses kernel API
> in order to test it. Probably normal user space applications don't have needs we
> have in LTP.
What did you encounter that needs it that's not declared in fcntl.h?
Are you sure you're not using loff_t where off_t would be the right
type? loff_t only appears in some kernel interfaces that were intended
to work the same regardless of whether glibc was configured for 32-bit
or 64-bit off_t.
Rich