From: Daniel Stenberg Date: Thu, 21 Sep 2000 08:46:44 +0000 (+0000) Subject: new interface to the base64 encoder X-Git-Tag: curl-7_3~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37249c3a4161c9cfa88b4f2fd86f12d3ee61fdb2;p=thirdparty%2Fcurl.git new interface to the base64 encoder --- diff --git a/lib/base64.c b/lib/base64.c index c857fbce32..67204771a8 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -44,19 +44,40 @@ static char table64[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -void base64Encode(char *intext, char *output) +/* + * base64Encode() + * + * Returns the length of the newly created base64 string. The third argument + * is a pointer to an allocated area holding the base64 data. If something + * went wrong, -1 is returned. + * + * Modifed my version to resemble the krb4 one. The krb4 sources then won't + * need its own. + * + */ +int base64Encode(char *indata, int insize, char **outptr) { unsigned char ibuf[3]; unsigned char obuf[4]; int i; int inputparts; + char *output; + char *base64data; - while(*intext) { + if(0 == insize) + insize = strlen(indata); + + base64data = output = (char*)malloc(insize*4/3+4); + if(NULL == output) + return -1; + + while(insize > 0) { for (i = inputparts = 0; i < 3; i++) { - if(*intext) { + if(*indata) { inputparts++; - ibuf[i] = *intext; - intext++; + ibuf[i] = *indata; + indata++; + insize--; } else ibuf[i] = 0; @@ -90,5 +111,8 @@ void base64Encode(char *intext, char *output) output += 4; } *output=0; + *outptr = base64data; /* make it return the actual data memory */ + + return strlen(base64data); /* return the length of the new data */ } /* ---- End of Base64 Encoding ---- */ diff --git a/lib/base64.h b/lib/base64.h index d8770f3250..05ff71f0ca 100644 --- a/lib/base64.h +++ b/lib/base64.h @@ -40,5 +40,5 @@ * ------------------------------------------------------------ ****************************************************************************/ -void base64Encode(char *intext, char *output); +int base64Encode(char *indata, int insize, char **output); #endif