move some decoding functions right into the str module, with a bit more
[apps/madmutt.git] / base64.c
index 69ae3a7..df55689 100644 (file)
--- a/base64.c
+++ b/base64.c
@@ -46,8 +46,6 @@
 #include "mutt.h"
 #include "mime.h"
 
-#define BAD     -1
-
 /* raw bytes to null-terminated base 64 string */
 void mutt_to_base64 (unsigned char *out, const unsigned char *in, size_t len,
                      size_t olen)
@@ -86,32 +84,31 @@ int mutt_from_base64 (char *out, const char *in)
 
   do {
     digit1 = in[0];
-    if (digit1 > 127 || base64val (digit1) == BAD)
+    if (base64val(digit1) < 0)
       return -1;
     digit2 = in[1];
-    if (digit2 > 127 || base64val (digit2) == BAD)
+    if (base64val(digit2) < 0)
       return -1;
     digit3 = in[2];
-    if (digit3 > 127 || ((digit3 != '=') && (base64val (digit3) == BAD)))
+    if (digit3 != '=' && base64val(digit3) < 0)
       return -1;
     digit4 = in[3];
-    if (digit4 > 127 || ((digit4 != '=') && (base64val (digit4) == BAD)))
+    if (digit4 != '=' && base64val(digit4) < 0)
       return -1;
     in += 4;
 
     /* digits are already sanity-checked */
-    *out++ = (base64val (digit1) << 2) | (base64val (digit2) >> 4);
+    *out++ = (base64val(digit1) << 2) | (base64val(digit2) >> 4);
     len++;
     if (digit3 != '=') {
-      *out++ = ((base64val (digit2) << 4) & 0xf0) | (base64val (digit3) >> 2);
+      *out++ = ((base64val(digit2) << 4) & 0xf0) | (base64val(digit3) >> 2);
       len++;
       if (digit4 != '=') {
-        *out++ = ((base64val (digit3) << 6) & 0xc0) | base64val (digit4);
+        *out++ = ((base64val(digit3) << 6) & 0xc0) | base64val(digit4);
         len++;
       }
     }
-  }
-  while (*in && digit4 != '=');
+  } while (*in && digit4 != '=');
 
   return len;
 }