* base64.c (B64): Use _ as the formal parameter, not x, to avoid
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 26 Jun 2006 21:30:03 +0000 (21:30 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 26 Jun 2006 21:30:03 +0000 (21:30 +0000)
bug in IBM C V6 for AIX.

lib/ChangeLog
lib/base64.c

index 809b26e..9870838 100644 (file)
@@ -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
index 4dbd80a..3316d1c 100644 (file)
@@ -149,72 +149,75 @@ base64_encode_alloc (const char *in, size_t inlen, char **out)
    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] = {