Paul Eggert <[EMAIL PROTECTED]> writes: > Simon Josefsson <[EMAIL PROTECTED]> writes: > >> Is there a clean fix? > > How about something like this? > > #if UCHAR_MAX == 255 > # define uchar_in_range(c) true > #else > # define uchar_in_range(c) ((c) <= 255) > #endif > > and then use uchar_in_range in the rest of your code.
I like that better than Bruno's patch (I dislike #if's inside functions), so I installed the patch below. 2006-01-12 Simon Josefsson <[EMAIL PROTECTED]> * base64.c: Fix warning, reported by Bruno Haible <[EMAIL PROTECTED]> and patch by Paul Eggert <[EMAIL PROTECTED]>. --- base64.c 13 Sep 2005 10:03:09 +0200 1.5 +++ base64.c 12 Jan 2006 09:56:12 +0100 @@ -1,5 +1,5 @@ /* base64.c -- Encode binary data using printable characters. - Copyright (C) 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,6 +50,9 @@ /* Get malloc. */ #include <stdlib.h> +/* Get UCHAR_MAX. */ +#include <limits.h> + /* C89 compliant way to cast 'char' to 'unsigned char'. */ static inline unsigned char to_uchar (char ch) @@ -278,10 +281,16 @@ B64 (252), B64 (253), B64 (254), B64 (255) }; +#if UCHAR_MAX == 255 +# define uchar_in_range(c) true +#else +# define uchar_in_range(c) ((c) <= 255) +#endif + bool isbase64 (char ch) { - return to_uchar (ch) <= 255 && 0 <= b64[to_uchar (ch)]; + return uchar_in_range (to_uchar (ch)) && 0 <= b64[to_uchar (ch)]; } /* Decode base64 encoded input array IN of length INLEN to output _______________________________________________ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib