diff src/base64/base64.c @ 10:26e34ae9a3e3

changed indention and line wrapping to a more consistent style
author meillo@marmaro.de
date Mon, 27 Oct 2008 16:23:10 +0100
parents 08114f7dcc23
children 589c365d90b1
line wrap: on
line diff
--- a/src/base64/base64.c	Mon Oct 27 16:21:27 2008 +0100
+++ b/src/base64/base64.c	Mon Oct 27 16:23:10 2008 +0100
@@ -4,7 +4,7 @@
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -25,104 +25,109 @@
 #include <string.h>
 #include "base64.h"
 
-gchar *base64_encode(guchar *buf, gint len)
-{
-  guchar *outbuf, *q;
-  gchar enc[64];
-  gint i = 0, j = 0;
-  guint in0, in1, in2;
-
-  for(; i < 26; i++) enc[i] = (gchar)('A' + j++); j = 0;
-  for(; i < 52; i++) enc[i] = (gchar)('a' + j++); j = 0;
-  for(; i < 62; i++) enc[i] = (gchar)('0' + j++);
-  enc[i++] = '+';
-  enc[i++] = '/';
-
-  outbuf = g_malloc(((len+3) * 8)/6);
-  q = outbuf;
-
-  i = 0;
-  while(i < len-2){
-    in0 = buf[i++];
-    in1 = buf[i++];
-    in2 = buf[i++];
-
-    *(q++) = enc[(in0 >> 2) & 0x3f];
-    *(q++) = enc[((in0 << 4) | (in1 >> 4)) & 0x3f];
-    *(q++) = enc[((in1 << 2) | (in2 >> 6)) & 0x3f];
-    *(q++) = enc[in2 & 0x3f];
-  }
-  if((len - i) == 1){
-    in0 = buf[i++];
-    *(q++) = enc[(in0 >> 2) & 0x3f];
-    *(q++) = enc[(in0 << 4) & 0x3f];
-    *(q++) = '=';
-    *(q++) = '=';
-  }else if((len - i) == 2){
-    in0 = buf[i++];
-    in1 = buf[i++];
-    *(q++) = enc[(in0 >> 2) & 0x3f];
-    *(q++) = enc[((in0 << 4) | (in1 >> 4)) & 0x3f];
-    *(q++) = enc[(in1 << 2) & 0x3f];
-    *(q++) = '=';
-  }
-  *q = 0;
-  
-  return outbuf;
-}
-    
-gchar *base64_decode(gchar *buf, gint *size)
+gchar*
+base64_encode(guchar * buf, gint len)
 {
-  guchar *p = buf, *q;
-  guint in[4];
-  //  gchar *out = g_malloc(((strlen(buf)+3) * 3) / 4 + 1);
-  gchar *out = g_malloc((strlen(buf)+3) + 1);
+	guchar *outbuf, *q;
+	gchar enc[64];
+	gint i = 0, j = 0;
+	guint in0, in1, in2;
 
-  q = out;
-  *size = 0;
+	for (; i < 26; i++)
+		enc[i] = (gchar) ('A' + j++);
+	j = 0;
+	for (; i < 52; i++)
+		enc[i] = (gchar) ('a' + j++);
+	j = 0;
+	for (; i < 62; i++)
+		enc[i] = (gchar) ('0' + j++);
+	enc[i++] = '+';
+	enc[i++] = '/';
 
-  *q = 0;
+	outbuf = g_malloc(((len + 3) * 8) / 6);
+	q = outbuf;
 
-  while(*p){
-    int i = 0;
-    while(i < 4){
-      if(!*p) break;
-      if((*p >= 'A') && (*p <= 'Z'))
-	 in[i++] = *p - 'A';
-      else if((*p >= 'a') && (*p <= 'z'))
-	in[i++] = (*p - 'a') + 26;
-      else if((*p >= '0') && (*p <= '9'))
-	in[i++] = (*p - '0') + 52;
-      else if(*p == '+')
-	in[i++] = 62;
-      else if(*p == '/')
-	in[i++] = 63;
-      else if(*p == '='){
-	in[i++] = 0;
-	p++;
-	break;
-      }else if((*p != '\r') && (*p != '\n')){
-	p++;
-	break;
-      }
-      p++;
-    }
-    if((i == 4) || (p[-1] == '=')){
-      *(q++) = ((in[0] << 2) | (in[1] >> 4));
-      *(q++) = ((in[1] << 4) | (in[2] >> 2));
-      *(q++) = ((in[2] << 6) | in[3]);
-      if(p[-1] == '='){
-	if(i == 3){
-	  (*size)++;
+	i = 0;
+	while (i < len - 2) {
+		in0 = buf[i++];
+		in1 = buf[i++];
+		in2 = buf[i++];
+
+		*(q++) = enc[(in0 >> 2) & 0x3f];
+		*(q++) = enc[((in0 << 4) | (in1 >> 4)) & 0x3f];
+		*(q++) = enc[((in1 << 2) | (in2 >> 6)) & 0x3f];
+		*(q++) = enc[in2 & 0x3f];
 	}
-	else if(i == 4){
-	  (*size) += 2;
+	if ((len - i) == 1) {
+		in0 = buf[i++];
+		*(q++) = enc[(in0 >> 2) & 0x3f];
+		*(q++) = enc[(in0 << 4) & 0x3f];
+		*(q++) = '=';
+		*(q++) = '=';
+	} else if ((len - i) == 2) {
+		in0 = buf[i++];
+		in1 = buf[i++];
+		*(q++) = enc[(in0 >> 2) & 0x3f];
+		*(q++) = enc[((in0 << 4) | (in1 >> 4)) & 0x3f];
+		*(q++) = enc[(in1 << 2) & 0x3f];
+		*(q++) = '=';
 	}
-      }else{
-	*size += 3;
-      }
-    }
-  }
-  return out;
+	*q = 0;
+
+	return outbuf;
 }
 
+gchar *base64_decode(gchar * buf, gint * size)
+{
+	guchar *p = buf, *q;
+	guint in[4];
+	/* gchar *out = g_malloc(((strlen(buf)+3) * 3) / 4 + 1); */
+	gchar *out = g_malloc((strlen(buf) + 3) + 1);
+
+	q = out;
+	*size = 0;
+
+	*q = 0;
+
+	while (*p) {
+		int i = 0;
+		while (i < 4) {
+			if (!*p)
+				break;
+			if ((*p >= 'A') && (*p <= 'Z'))
+				in[i++] = *p - 'A';
+			else if ((*p >= 'a') && (*p <= 'z'))
+				in[i++] = (*p - 'a') + 26;
+			else if ((*p >= '0') && (*p <= '9'))
+				in[i++] = (*p - '0') + 52;
+			else if (*p == '+')
+				in[i++] = 62;
+			else if (*p == '/')
+				in[i++] = 63;
+			else if (*p == '=') {
+				in[i++] = 0;
+				p++;
+				break;
+			} else if ((*p != '\r') && (*p != '\n')) {
+				p++;
+				break;
+			}
+			p++;
+		}
+		if ((i == 4) || (p[-1] == '=')) {
+			*(q++) = ((in[0] << 2) | (in[1] >> 4));
+			*(q++) = ((in[1] << 4) | (in[2] >> 2));
+			*(q++) = ((in[2] << 6) | in[3]);
+			if (p[-1] == '=') {
+				if (i == 3) {
+					(*size)++;
+				} else if (i == 4) {
+					(*size) += 2;
+				}
+			} else {
+				*size += 3;
+			}
+		}
+	}
+	return out;
+}