changeset 6871:3f3ba5c21147

* base64.c (B64): Use _ as the formal parameter, not x, to avoid bug in IBM C V6 for AIX.
author Paul Eggert <eggert@cs.ucla.edu>
date Mon, 26 Jun 2006 21:30:03 +0000
parents 26528749c48b
children ed4106144765
files lib/ChangeLog lib/base64.c
diffstat 2 files changed, 75 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* base64.c (B64): Use _ as the formal parameter, not x, to avoid
+	bug in IBM C V6 for AIX.  Problem reported by Larry Jones in
+	<http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00181.html>.
+
 2006-06-26  Bruno Haible  <bruno@clisp.org>
 
 	* stdlib_.h: Include <wchar.h> if necessary for WCHAR_MIN or
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -149,72 +149,75 @@
    Base64 alphabet (A-Za-z0-9+/) are encoded in 0..255.  POSIX
    1003.1-2001 require that char and unsigned char are 8-bit
    quantities, though, taking care of that problem.  But this may be a
-   potential problem on non-POSIX C99 platforms.  */
-#define B64(x)					\
-  ((x) == 'A' ? 0				\
-   : (x) == 'B' ? 1				\
-   : (x) == 'C' ? 2				\
-   : (x) == 'D' ? 3				\
-   : (x) == 'E' ? 4				\
-   : (x) == 'F' ? 5				\
-   : (x) == 'G' ? 6				\
-   : (x) == 'H' ? 7				\
-   : (x) == 'I' ? 8				\
-   : (x) == 'J' ? 9				\
-   : (x) == 'K' ? 10				\
-   : (x) == 'L' ? 11				\
-   : (x) == 'M' ? 12				\
-   : (x) == 'N' ? 13				\
-   : (x) == 'O' ? 14				\
-   : (x) == 'P' ? 15				\
-   : (x) == 'Q' ? 16				\
-   : (x) == 'R' ? 17				\
-   : (x) == 'S' ? 18				\
-   : (x) == 'T' ? 19				\
-   : (x) == 'U' ? 20				\
-   : (x) == 'V' ? 21				\
-   : (x) == 'W' ? 22				\
-   : (x) == 'X' ? 23				\
-   : (x) == 'Y' ? 24				\
-   : (x) == 'Z' ? 25				\
-   : (x) == 'a' ? 26				\
-   : (x) == 'b' ? 27				\
-   : (x) == 'c' ? 28				\
-   : (x) == 'd' ? 29				\
-   : (x) == 'e' ? 30				\
-   : (x) == 'f' ? 31				\
-   : (x) == 'g' ? 32				\
-   : (x) == 'h' ? 33				\
-   : (x) == 'i' ? 34				\
-   : (x) == 'j' ? 35				\
-   : (x) == 'k' ? 36				\
-   : (x) == 'l' ? 37				\
-   : (x) == 'm' ? 38				\
-   : (x) == 'n' ? 39				\
-   : (x) == 'o' ? 40				\
-   : (x) == 'p' ? 41				\
-   : (x) == 'q' ? 42				\
-   : (x) == 'r' ? 43				\
-   : (x) == 's' ? 44				\
-   : (x) == 't' ? 45				\
-   : (x) == 'u' ? 46				\
-   : (x) == 'v' ? 47				\
-   : (x) == 'w' ? 48				\
-   : (x) == 'x' ? 49				\
-   : (x) == 'y' ? 50				\
-   : (x) == 'z' ? 51				\
-   : (x) == '0' ? 52				\
-   : (x) == '1' ? 53				\
-   : (x) == '2' ? 54				\
-   : (x) == '3' ? 55				\
-   : (x) == '4' ? 56				\
-   : (x) == '5' ? 57				\
-   : (x) == '6' ? 58				\
-   : (x) == '7' ? 59				\
-   : (x) == '8' ? 60				\
-   : (x) == '9' ? 61				\
-   : (x) == '+' ? 62				\
-   : (x) == '/' ? 63				\
+   potential problem on non-POSIX C99 platforms.
+
+   IBM C V6 for AIX mishandles "#define B64(x) ...'x'...", so use "_"
+   as the formal parameter rather than "x".  */
+#define B64(_)					\
+  ((_) == 'A' ? 0				\
+   : (_) == 'B' ? 1				\
+   : (_) == 'C' ? 2				\
+   : (_) == 'D' ? 3				\
+   : (_) == 'E' ? 4				\
+   : (_) == 'F' ? 5				\
+   : (_) == 'G' ? 6				\
+   : (_) == 'H' ? 7				\
+   : (_) == 'I' ? 8				\
+   : (_) == 'J' ? 9				\
+   : (_) == 'K' ? 10				\
+   : (_) == 'L' ? 11				\
+   : (_) == 'M' ? 12				\
+   : (_) == 'N' ? 13				\
+   : (_) == 'O' ? 14				\
+   : (_) == 'P' ? 15				\
+   : (_) == 'Q' ? 16				\
+   : (_) == 'R' ? 17				\
+   : (_) == 'S' ? 18				\
+   : (_) == 'T' ? 19				\
+   : (_) == 'U' ? 20				\
+   : (_) == 'V' ? 21				\
+   : (_) == 'W' ? 22				\
+   : (_) == 'X' ? 23				\
+   : (_) == 'Y' ? 24				\
+   : (_) == 'Z' ? 25				\
+   : (_) == 'a' ? 26				\
+   : (_) == 'b' ? 27				\
+   : (_) == 'c' ? 28				\
+   : (_) == 'd' ? 29				\
+   : (_) == 'e' ? 30				\
+   : (_) == 'f' ? 31				\
+   : (_) == 'g' ? 32				\
+   : (_) == 'h' ? 33				\
+   : (_) == 'i' ? 34				\
+   : (_) == 'j' ? 35				\
+   : (_) == 'k' ? 36				\
+   : (_) == 'l' ? 37				\
+   : (_) == 'm' ? 38				\
+   : (_) == 'n' ? 39				\
+   : (_) == 'o' ? 40				\
+   : (_) == 'p' ? 41				\
+   : (_) == 'q' ? 42				\
+   : (_) == 'r' ? 43				\
+   : (_) == 's' ? 44				\
+   : (_) == 't' ? 45				\
+   : (_) == 'u' ? 46				\
+   : (_) == 'v' ? 47				\
+   : (_) == 'w' ? 48				\
+   : (_) == 'x' ? 49				\
+   : (_) == 'y' ? 50				\
+   : (_) == 'z' ? 51				\
+   : (_) == '0' ? 52				\
+   : (_) == '1' ? 53				\
+   : (_) == '2' ? 54				\
+   : (_) == '3' ? 55				\
+   : (_) == '4' ? 56				\
+   : (_) == '5' ? 57				\
+   : (_) == '6' ? 58				\
+   : (_) == '7' ? 59				\
+   : (_) == '8' ? 60				\
+   : (_) == '9' ? 61				\
+   : (_) == '+' ? 62				\
+   : (_) == '/' ? 63				\
    : -1)
 
 static const signed char b64[0x100] = {