]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - base64.c
base64: Use para_isspace() everywhere.
[paraslash.git] / base64.c
index 382f1519370d77cd33f473023f493571caf0a53a..cee51571a7416b396583932be2376398e0670573 100644 (file)
--- a/base64.c
+++ b/base64.c
 
 static const char Base64[] =
        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-static const char Pad64 = '=';
 
 /** Maximal possible size of the decoded data. */
 #define BASE64_MAX_DECODED_SIZE(_encoded_size) ((_encoded_size) / 4 * 3)
 
+#define PAD64 '='
 /**
  * base64-decode a buffer.
  *
@@ -59,7 +59,7 @@ int base64_decode(char const *src, size_t encoded_size, char **result,
                if (para_isspace(ch)) /* Skip whitespace anywhere. */
                        continue;
 
-               if (ch == Pad64)
+               if (ch == PAD64)
                        break;
 
                pos = strchr(Base64, ch);
@@ -90,40 +90,36 @@ int base64_decode(char const *src, size_t encoded_size, char **result,
                        break;
                }
        }
-
        /*
         * We are done decoding Base-64 chars.  Let's see if we ended
         * on a byte boundary, and/or with erroneous trailing characters.
         */
-
-       if (*src == Pad64) {            /* We got a pad char. */
-               ch = *src++;            /* Skip it, get next. */
+       if (*src == PAD64) { /* We got a pad char. */
+               ch = *src++; /* Skip it, get next. */
                switch (state) {
-               case 0:         /* Invalid = in first position */
-               case 1:         /* Invalid = in second position */
+               case 0: /* Invalid = in first position */
+               case 1: /* Invalid = in second position */
                        goto fail;
 
-               case 2:         /* Valid, means one byte of info */
+               case 2: /* Valid, means one byte of info */
                        /* Skip any number of spaces. */
                        for (; ch != '\0'; ch = *src++)
-                               if (!isspace(ch))
+                               if (!para_isspace(ch))
                                        break;
                        /* Make sure there is another trailing = sign. */
-                       if (ch != Pad64)
+                       if (ch != PAD64)
                                goto fail;
                        ch = *src++;            /* Skip the = */
                        /* Fall through to "single trailing =" case. */
-                       /* FALLTHROUGH */
 
-               case 3:         /* Valid, means two bytes of info */
+               case 3: /* Valid, means two bytes of info */
                        /*
                         * We know this char is an =.  Is there anything but
                         * whitespace after it?
                         */
                        for (; ch != '\0'; ch = *src++)
-                               if (!isspace(ch))
+                               if (!para_isspace(ch))
                                        goto fail;
-
                        /*
                         * Now make sure for cases 2 and 3 that the "extra"
                         * bits that slopped past the last full byte were