Commit 252f72a0 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/users/lthalmann/bkroot/mysql-5.0

into  mysql.com:/users/lthalmann/bk/mysql-5.0-base64

parents 45feb666 ca4e27b0
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -27,9 +27,13 @@ static char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
int
base64_needed_encoded_length(int length_of_data)
{
  return ceil(length_of_data * 4 / 3) /* base64 chars */ +
    ceil(length_of_data / (76 * 3 / 4)) /* Newlines */ +
    3 /* Padding */;
  int nb_base64_chars;
  nb_base64_chars= (length_of_data + 2) / 3 * 4;

  return
    nb_base64_chars +            /* base64 char incl padding */
    (nb_base64_chars - 1)/ 76 +  /* newlines */
    1;                           /* NUL termination of string */
}


@@ -89,6 +93,7 @@ base64_encode(const void *src, size_t src_len, char *dst)
    else
      *dst++= base64_table[(c >> 0) & 0x3f];
  }
  *dst= '\0';

  return 0;
}
@@ -209,6 +214,7 @@ main(void)
  size_t j;
  size_t k, l;
  size_t dst_len;
  size_t needed_length;

  for (i= 0; i < 500; i++)
  {
@@ -227,8 +233,12 @@ main(void)
    }

    /* Encode */
    str= (char *) malloc(base64_needed_encoded_length(src_len));
    needed_length= base64_needed_encoded_length(src_len);
    str= (char *) malloc(needed_length);
    for (k= 0; k < needed_length; k++)
      str[k]= 0xff; /* Fill memory to check correct NUL termination */
    require(base64_encode(src, src_len, str) == 0);
    require(needed_length == strlen(str) + 1);

    /* Decode */
    dst= (char *) malloc(base64_needed_decoded_length(strlen(str)));