Only define loff_t for __USE_MISC (bug 14553)
Commit Message
Bug 14553 reports that sys/types.h defines loff_t unconditionally,
despite it not being part of any supported standard. This is
permitted by the POSIX *_t reservation, but as a
quality-of-implementation issue it's still best not to define it
except for __USE_MISC. This patch conditions the definition
accordingly, updating a macro in sysdeps/unix/sysv/linux/sys/quota.h
to use __loff_t so it still works even if __USE_MISC is not defined.
codesearch.debian.net suggests there are quite a lot of loff_t uses
outside glibc, but it might well make sense to change all (few) uses
of loff_t or __loff_t inside glibc to use off64_t or __off64_t
instead, leaving only the definitions, treating this name as
obsolescent.
Tested for x86_64.
2018-02-01 Joseph Myers <joseph@codesourcery.com>
[BZ #14553]
* posix/sys/types.h (loff_t): Only define for [__USE_MISC].
* sysdeps/unix/sysv/linux/sys/quota.h (dqoff): Use __loff_t
instead of loff_t.
Comments
Ping. This patch
<https://sourceware.org/ml/libc-alpha/2018-02/msg00034.html> is pending
review.
On 02/01/2018 09:36 PM, Joseph Myers wrote:
> [BZ #14553]
> * posix/sys/types.h (loff_t): Only define for [__USE_MISC].
> * sysdeps/unix/sysv/linux/sys/quota.h (dqoff): Use __loff_t
> instead of loff_t.
Looks okay.
Thanks,
Florian
@@ -39,9 +39,8 @@ typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
# define __u_char_defined
# endif
-#endif
-
typedef __loff_t loff_t;
+#endif
#ifndef __ino_t_defined
# ifndef __USE_FILE_OFFSET64
@@ -114,7 +114,7 @@ struct dqblk
#define dq_btime dq_dqb.dqb_btime
#define dq_itime dq_dqb.dqb_itime
-#define dqoff(UID) ((loff_t)((UID) * sizeof (struct dqblk)))
+#define dqoff(UID) ((__loff_t)((UID) * sizeof (struct dqblk)))
/* Old name for struct if_dqinfo. */
struct dqinfo