linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andreas Dilger <adilger@dilger.ca>
To: tytso@mit.edu
Cc: linux-ext4@vger.kernel.org, Andreas Dilger <adilger@dilger.ca>
Subject: [PATCH] blkid,ext2fs: avoid name clash with __u{8,16,32,64}
Date: Thu,  8 May 2014 15:23:56 -0600	[thread overview]
Message-ID: <1399584236-17686-1-git-send-email-adilger@dilger.ca> (raw)

Try to avoid name clashes with definitions of __u8, __u16, __u32,
and __u64 in userspace, in case other headers also define these
types.  Define HAVE___{S,U}{8,16,32,64} preprocessor macros to
show that these types are already defined.

This would avoid the need to check for _BLKID_TYPES_H in ext2_types.h
and _EXT2_TYPES_H in blkid_types.h, but since older versions of these
headers did not use HAVE___U8 et.al. keep these checks around for now.

Report an error if there are no 64-bit types available.  The code
will not compile if these are not available.

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
---
 lib/blkid/blkid_types.h.in |   39 ++++++++++++++++++++++++++++++++++++---
 lib/ext2fs/ext2_types.h.in |   35 ++++++++++++++++++++++++++++++++++-
 2 files changed, 70 insertions(+), 4 deletions(-)

diff --git a/lib/blkid/blkid_types.h.in b/lib/blkid/blkid_types.h.in
index 2edc0da..d4c81d0 100644
--- a/lib/blkid/blkid_types.h.in
+++ b/lib/blkid/blkid_types.h.in
@@ -9,18 +9,26 @@
 
 @ASM_TYPES_HEADER@
 
+#ifndef HAVE___U8
+#define HAVE___U8
 #ifdef __U8_TYPEDEF
 typedef __U8_TYPEDEF __u8;
 #else
 typedef unsigned char __u8;
 #endif
+#endif /* HAVE___U8 */
 
+#ifndef HAVE___S8
+#define HAVE___S8
 #ifdef __S8_TYPEDEF
 typedef __S8_TYPEDEF __s8;
 #else
 typedef signed char __s8;
 #endif
+#endif /* HAVE___S8 */
 
+#ifndef HAVE___U16
+#define HAVE___U16
 #ifdef __U16_TYPEDEF
 typedef __U16_TYPEDEF __u16;
 #else
@@ -30,11 +38,15 @@ typedef	unsigned int	__u16;
 #if (@SIZEOF_SHORT@ == 2)
 typedef	unsigned short	__u16;
 #else
+#undef HAVE___U16
   ?==error: undefined 16 bit type
 #endif /* SIZEOF_SHORT == 2 */
 #endif /* SIZEOF_INT == 2 */
 #endif /* __U16_TYPEDEF */
+#endif /* HAVE___U16 */
 
+#ifndef HAVE___S16
+#define HAVE___S16
 #ifdef __S16_TYPEDEF
 typedef __S16_TYPEDEF __s16;
 #else
@@ -44,12 +56,15 @@ typedef	int		__s16;
 #if (@SIZEOF_SHORT@ == 2)
 typedef	short		__s16;
 #else
+#undef HAVE___S16
   ?==error: undefined 16 bit type
 #endif /* SIZEOF_SHORT == 2 */
 #endif /* SIZEOF_INT == 2 */
 #endif /* __S16_TYPEDEF */
+#endif /* HAVE___S16 */
 
-
+#ifndef HAVE___U32
+#define HAVE___U32
 #ifdef __U32_TYPEDEF
 typedef __U32_TYPEDEF __u32;
 #else
@@ -62,12 +77,16 @@ typedef	unsigned long	__u32;
 #if (@SIZEOF_SHORT@ == 4)
 typedef	unsigned short	__u32;
 #else
+#undef HAVE___U32
  ?== error: undefined 32 bit type
 #endif /* SIZEOF_SHORT == 4 */
 #endif /* SIZEOF_LONG == 4 */
 #endif /* SIZEOF_INT == 4 */
 #endif /* __U32_TYPEDEF */
+#endif /* HAVE___U32 */
 
+#ifndef HAVE___S32
+#define HAVE___S32
 #ifdef __S32_TYPEDEF
 typedef __S32_TYPEDEF __s32;
 #else
@@ -80,12 +99,16 @@ typedef	long		__s32;
 #if (@SIZEOF_SHORT@ == 4)
 typedef	short		__s32;
 #else
+#undef HAVE___S32
  ?== error: undefined 32 bit type
 #endif /* SIZEOF_SHORT == 4 */
 #endif /* SIZEOF_LONG == 4 */
 #endif /* SIZEOF_INT == 4 */
 #endif /* __S32_TYPEDEF */
+#endif /* HAVE___S32 */
 
+#ifndef HAVE___U64
+#define HAVE___U64
 #ifdef __U64_TYPEDEF
 typedef __U64_TYPEDEF __u64;
 #else
@@ -97,11 +120,17 @@ typedef unsigned long long	__u64;
 #else
 #if (@SIZEOF_LONG@ == 8)
 typedef unsigned long	__u64;
+#else
+#undef HAVE___U64
+ ?== error: undefined 64 bit type
 #endif /* SIZEOF_LONG == 8 */
 #endif /* SIZEOF_LONG_LONG == 8 */
 #endif /* SIZEOF_INT == 8 */
 #endif /* __U64_TYPEDEF */
+#endif /* HAVE___U64 */
 
+#ifndef HAVE___S64
+#define HAVE___S64
 #ifdef __S64_TYPEDEF
 typedef __S64_TYPEDEF __s64;
 #else
@@ -110,17 +139,21 @@ typedef int		__s64;
 #else
 #if (@SIZEOF_LONG_LONG@ == 8)
 #if defined(__GNUC__)
-typedef __signed__ long long 	__s64;
+typedef __signed__ long long	__s64;
 #else
-typedef signed long long 	__s64;
+typedef signed long long	__s64;
 #endif /* __GNUC__ */
 #else
 #if (@SIZEOF_LONG@ == 8)
 typedef long		__s64;
+#else
+#undef HAVE___S64
+ ?== error: undefined 64 bit type
 #endif /* SIZEOF_LONG == 8 */
 #endif /* SIZEOF_LONG_LONG == 8 */
 #endif /* SIZEOF_INT == 8 */
 #endif /* __S64_TYPEDEF */
+#endif /* HAVE___S64 */
 
 #undef __S8_TYPEDEF
 #undef __U8_TYPEDEF
diff --git a/lib/ext2fs/ext2_types.h.in b/lib/ext2fs/ext2_types.h.in
index 5b98f71..1320431 100644
--- a/lib/ext2fs/ext2_types.h.in
+++ b/lib/ext2fs/ext2_types.h.in
@@ -9,18 +9,26 @@
 
 @ASM_TYPES_HEADER@
 
+#ifndef HAVE___U8
+#define HAVE___U8
 #ifdef __U8_TYPEDEF
 typedef __U8_TYPEDEF __u8;
 #else
 typedef unsigned char __u8;
 #endif
+#endif /* HAVE___U8 */
 
+#ifndef HAVE___S8
+#define HAVE___S8
 #ifdef __S8_TYPEDEF
 typedef __S8_TYPEDEF __s8;
 #else
 typedef signed char __s8;
 #endif
+#endif /* HAVE___S8 */
 
+#ifndef HAVE___U16
+#define HAVE___U16
 #ifdef __U16_TYPEDEF
 typedef __U16_TYPEDEF __u16;
 #else
@@ -30,11 +38,15 @@ typedef	unsigned int	__u16;
 #if (@SIZEOF_SHORT@ == 2)
 typedef	unsigned short	__u16;
 #else
+#undef HAVE___U16
   ?==error: undefined 16 bit type
 #endif /* SIZEOF_SHORT == 2 */
 #endif /* SIZEOF_INT == 2 */
 #endif /* __U16_TYPEDEF */
+#endif /* HAVE___U16 */
 
+#ifndef HAVE___S16
+#define HAVE___S16
 #ifdef __S16_TYPEDEF
 typedef __S16_TYPEDEF __s16;
 #else
@@ -44,12 +56,15 @@ typedef	int		__s16;
 #if (@SIZEOF_SHORT@ == 2)
 typedef	short		__s16;
 #else
+#undef HAVE___S16
   ?==error: undefined 16 bit type
 #endif /* SIZEOF_SHORT == 2 */
 #endif /* SIZEOF_INT == 2 */
 #endif /* __S16_TYPEDEF */
+#endif /* HAVE___S16 */
 
-
+#ifndef HAVE___U32
+#define HAVE___U32
 #ifdef __U32_TYPEDEF
 typedef __U32_TYPEDEF __u32;
 #else
@@ -62,12 +77,16 @@ typedef	unsigned long	__u32;
 #if (@SIZEOF_SHORT@ == 4)
 typedef	unsigned short	__u32;
 #else
+#undef HAVE___U32
  ?== error: undefined 32 bit type
 #endif /* SIZEOF_SHORT == 4 */
 #endif /* SIZEOF_LONG == 4 */
 #endif /* SIZEOF_INT == 4 */
 #endif /* __U32_TYPEDEF */
+#endif /* HAVE___U32 */
 
+#ifndef HAVE___S32
+#define HAVE___S32
 #ifdef __S32_TYPEDEF
 typedef __S32_TYPEDEF __s32;
 #else
@@ -80,12 +99,16 @@ typedef	long		__s32;
 #if (@SIZEOF_SHORT@ == 4)
 typedef	short		__s32;
 #else
+#undef HAVE___S32
  ?== error: undefined 32 bit type
 #endif /* SIZEOF_SHORT == 4 */
 #endif /* SIZEOF_LONG == 4 */
 #endif /* SIZEOF_INT == 4 */
 #endif /* __S32_TYPEDEF */
+#endif /* HAVE___S32 */
 
+#ifndef HAVE___U64
+#define HAVE___U64
 #ifdef __U64_TYPEDEF
 typedef __U64_TYPEDEF __u64;
 #else
@@ -97,11 +120,17 @@ typedef unsigned long long	__u64;
 #else
 #if (@SIZEOF_LONG@ == 8)
 typedef unsigned long	__u64;
+#else
+#undef HAVE___U64
+ ?== error: undefined 64 bit type
 #endif /* SIZEOF_LONG_LONG == 8 */
 #endif /* SIZEOF_LONG == 8 */
 #endif /* SIZEOF_INT == 8 */
 #endif /* __U64_TYPEDEF */
+#endif /* HAVE___U64 */
 
+#ifndef HAVE___S64
+#define HAVE___S64
 #ifdef __S64_TYPEDEF
 typedef __S64_TYPEDEF __s64;
 #else
@@ -117,10 +146,14 @@ typedef signed long long	__s64;
 #else
 #if (@SIZEOF_LONG@ == 8)
 typedef long		__s64;
+#else
+#undef HAVE___S64
+ ?== error: undefined 64 bit type
 #endif /* SIZEOF_LONG_LONG == 8 */
 #endif /* SIZEOF_LONG == 8 */
 #endif /* SIZEOF_INT == 8 */
 #endif /* __S64_TYPEDEF */
+#endif /* HAVE___S64 */
 
 #undef __S8_TYPEDEF
 #undef __U8_TYPEDEF
-- 
1.7.3.4


             reply	other threads:[~2014-05-08 21:33 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-08 21:23 Andreas Dilger [this message]
2014-07-05  4:00 ` [PATCH] blkid,ext2fs: avoid name clash with __u{8,16,32,64} Theodore Ts'o

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1399584236-17686-1-git-send-email-adilger@dilger.ca \
    --to=adilger@dilger.ca \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).