19 const char *
Base64Map(
void) {
return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";}
 
   20 const char *
base64Map = 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
   27     int outputOffset, charCount;
 
   33     write3Count=dataLength/3;
 
   34     for (j=0; j < write3Count; j++)
 
   37         outputData[outputOffset++]=
base64Map[inputData[j*3+0] >> 2];
 
   38         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   41         outputData[outputOffset++]=
base64Map[((inputData[j*3+0] << 4) | (inputData[j*3+1] >> 4)) & 63];
 
   42         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   45         outputData[outputOffset++]=
base64Map[((inputData[j*3+1] << 2) | (inputData[j*3+2] >> 6)) & 63]; 
 
   46         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   49         outputData[outputOffset++]=
base64Map[inputData[j*3+2] & 63];
 
   50         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   53     if (dataLength % 3==1)
 
   56         outputData[outputOffset++]=
base64Map[inputData[j*3+0] >> 2];
 
   57         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   60         outputData[outputOffset++]=
base64Map[((inputData[j*3+0] << 4) | (inputData[j*3+1] >> 4)) & 63];
 
   61         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   64         outputData[outputOffset++]=
'=';
 
   65         outputData[outputOffset++]=
'=';
 
   67     else if (dataLength % 3==2)
 
   72         outputData[outputOffset++]=
base64Map[inputData[j*3+0] >> 2];
 
   73         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   76         outputData[outputOffset++]=
base64Map[((inputData[j*3+0] << 4) | (inputData[j*3+1] >> 4)) & 63];
 
   77         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   80         outputData[outputOffset++]=
base64Map[(inputData[j*3+1] << 2) & 63]; 
 
   81         if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
 
   84         outputData[outputOffset++]=
'=';
 
   89     outputData[outputOffset++]=
'\r';
 
   90     outputData[outputOffset++]=
'\n';
 
   91     outputData[outputOffset]=0;