From patchwork Thu May 8 21:23:56 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Dilger X-Patchwork-Id: 347257 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 570401400A8 for ; Fri, 9 May 2014 07:33:35 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755492AbaEHVde (ORCPT ); Thu, 8 May 2014 17:33:34 -0400 Received: from smtp-out-05.shaw.ca ([64.59.134.13]:36390 "EHLO smtp-out-05.shaw.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755378AbaEHVde (ORCPT ); Thu, 8 May 2014 17:33:34 -0400 X-Greylist: delayed 575 seconds by postgrey-1.27 at vger.kernel.org; Thu, 08 May 2014 17:33:33 EDT X-Cloudmark-SP-Filtered: true X-Cloudmark-SP-Result: v=1.1 cv=EE1YNWrmHkZ7CGDLFJuuVRk2fksVIUvL4LZRHWJDZ98= c=1 sm=1 a=3TicpdR8YAYA:10 a=BLceEmwcHowA:10 a=sQcIUxX0G8DGr1HsvJ29bQ==:17 a=qNzVxNU_nZGBLlER3gAA:9 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 Received: from unknown (HELO sookie-gig.adilger.int) ([96.51.76.157]) by smtp-out-05.shaw.ca with ESMTP; 08 May 2014 15:23:57 -0600 From: Andreas Dilger To: tytso@mit.edu Cc: linux-ext4@vger.kernel.org, Andreas Dilger Subject: [PATCH] blkid,ext2fs: avoid name clash with __u{8,16,32,64} Date: Thu, 8 May 2014 15:23:56 -0600 Message-Id: <1399584236-17686-1-git-send-email-adilger@dilger.ca> X-Mailer: git-send-email 1.7.3.4 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org 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 --- 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