dirkx       99/04/20 05:03:29

  Modified:    src/support ab.c
  Log:
  Following the change in
  
   1.159     +4 -0      apache-1.3/src/main/util.c
  
  UUencode in ab has also been updated. Though I seriously doubt
  if ab has ever been tested in an EBCDIC environment :-) Does it
  actually work Martin ?
  
  Dw.
  
  Revision  Changes    Path
  1.22      +34 -12    apache-1.3/src/support/ab.c
  
  Index: ab.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/support/ab.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- ab.c      1999/04/05 13:52:21     1.21
  +++ ab.c      1999/04/20 12:03:29     1.22
  @@ -248,20 +248,42 @@
       char *p;
       char *encoded = (char *) malloc((len + 2) / 3 * 4 + 1);
       p = encoded;
  -    for (i = 0; i < len; i += 3) {
  -     *p++ = basis_64[string[i] >> 2];
  -     *p++ = basis_64[((string[i] & 0x3) << 4) |
  -                     ((int) (string[i + 1] & 0xF0) >> 4)];
  -     *p++ = basis_64[((string[i + 1] & 0xF) << 2) |
  -                     ((int) (string[i + 2] & 0xC0) >> 6)];
  -     *p++ = basis_64[string[i + 2] & 0x3F];
  -    };
  -    *p-- = '\0';
  -    *p-- = '=';
  -    *p-- = '=';
  +#ifndef CHARSET_EBCDIC
  +    for (i = 0; i < len-2; i += 3) {
  +        *p++ = basis_64[(string[i] >> 2) & 0x3F];
  +        *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 
0xF0) >> 4)];
  +        *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((int) (string[i + 2] 
& 0xC0) >> 6)];
  +        *p++ = basis_64[string[i + 2] & 0x3F];
  +    }
  +    if (i < len) {
  +        *p++ = basis_64[(string[i] >> 2) & 0x3F];
  +        *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] & 
0xF0) >> 4)];
  +        if (i == (len-2))
  +           *p++ = basis_64[((string[i + 1] & 0xF) << 2)];
  +        else
  +           *p++ = '=';
  +        *p++ = '=';
  +    }
  +#else /*CHARSET_EBCDIC*/
  +    for (i = 0; i < len-2; i += 3) {
  +        *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F];
  +        *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) 
(os_toascii[string[i + 1]] & 0xF0) >> 4)];
  +        *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2) | ((int) 
(os_toascii[string[i + 2]] & 0xC0) >> 6)];
  +        *p++ = basis_64[os_toascii[string[i + 2]] & 0x3F];
  +    }
  +    if (i < len) {
  +       *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F];
  +       *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int) 
(os_toascii[string[i + 1]] & 0xF0) >> 4)];
  +       if (i == (len-2))
  +           *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2)];
  +       else
  +           *p++ = '=';
  +       *p++ = '=';
  +    }
  +#endif /*CHARSET_EBCDIC*/
  +    *p = '\0';
       return encoded;
   }
  -
   
   /* --------------------------------------------------------- */
   
  
  
  

Reply via email to