Re: [PATCH] Fix some printf format warnings

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

 



On Wed, 30 Sep 2009, Ramsay Jones wrote:

> 
> commit 51ea551 ("make sure byte swapping is optimal for git"
> 2009-08-18) introduced a "sane definition for ntohl()/htonl()"
> for use on some GNU C platforms. Unfortunately, for some of
> these platforms, this results in the introduction of a problem
> which is essentially the reverse of a problem that commit 6e1c234
> ("Fix some warnings (on cygwin) to allow -Werror" 2008-07-3) was
> intended to fix.
> 
> In particular, on platforms where the uint32_t type is defined
> to be unsigned long, the return type of the new ntohl()/htonl()
> is causing gcc to issue printf format warnings, such as:
> 
>     warning: long unsigned int format, unsigned int arg (arg 3)
> 
> (nine such warnings, covering six different files). The earlier
> commit (6e1c234) needed to suppress these same warnings, except
> that the types were in the opposite direction; namely the format
> specifier ("%u") was 'unsigned int' and the argument type (ie the
> return type of ntohl()) was 'long unsigned int' (aka uint32_t).
> 
> In order to suppress these warnings, the earlier commit used the
> (C99) PRIu32 format specifier, since the definition of this macro
> is suitable for use with the uint32_t type on that platform.
> This worked because the return type of the (original) platform
> ntohl()/htonl() functions was uint32_t.
> 
> In order to suppress these warnings, we change the return type of
> the new byte swapping functions in the compat/bswap.h header file
> from 'unsigned int' to uint32_t.
> 
> Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxx>

Acked-by: Nicolas Pitre <nico@xxxxxxxxxxx>


> ---
>  compat/bswap.h |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/compat/bswap.h b/compat/bswap.h
> index 7246a12..5cc4acb 100644
> --- a/compat/bswap.h
> +++ b/compat/bswap.h
> @@ -9,7 +9,7 @@
>   * Default version that the compiler ought to optimize properly with
>   * constant values.
>   */
> -static inline unsigned int default_swab32(unsigned int val)
> +static inline uint32_t default_swab32(uint32_t val)
>  {
>  	return (((val & 0xff000000) >> 24) |
>  		((val & 0x00ff0000) >>  8) |
> @@ -20,7 +20,7 @@ static inline unsigned int default_swab32(unsigned int val)
>  #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
>  
>  #define bswap32(x) ({ \
> -	unsigned int __res; \
> +	uint32_t __res; \
>  	if (__builtin_constant_p(x)) { \
>  		__res = default_swab32(x); \
>  	} else { \
> -- 
> 1.6.4
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]