You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by di...@hyperreal.org on 1999/04/20 14:03:30 UTC

cvs commit: apache-1.3/src/support ab.c

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;
   }
  -
   
   /* --------------------------------------------------------- */