changeset 6554:99e42c0a09e1

Fix warning, reported by Bruno Haible <bruno@clisp.org> and patch by Paul Eggert <eggert@CS.UCLA.EDU>.
author Simon Josefsson <simon@josefsson.org>
date Thu, 12 Jan 2006 08:59:35 +0000
parents 8041d378a5a1
children ed2b5c29e4cb
files lib/ChangeLog lib/base64.c
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-12  Simon Josefsson  <jas@extundo.com>
+
+	* base64.c: Fix warning, reported by Bruno Haible
+	<bruno@clisp.org> and patch by Paul Eggert <eggert@CS.UCLA.EDU>.
+
 2006-01-11  Paul Eggert  <eggert@cs.ucla.edu>
 
 	Sync from coreutils.
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -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