about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--decode.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/decode.c b/decode.c
index 2604f73..8578c41 100644
--- a/decode.c
+++ b/decode.c
@@ -90,11 +90,6 @@ static const char Base64[64] = {
 	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 };
 
-static uint8_t unbase64(char ch) {
-	const char *ptr = strchr(Base64, ch);
-	return (ptr ? ptr - Base64 : 0);
-}
-
 static void decodeBase64(struct Buffer *dst, const char *src) {
 	while (src[0] && src[1] && src[2] && src[3]) {
 		if (!strchr(Base64, src[0])) {
@@ -104,7 +99,7 @@ static void decodeBase64(struct Buffer *dst, const char *src) {
 		uint32_t bits = 0;
 		for (int i = 0; i < 4; ++i) {
 			bits <<= 6;
-			bits |= unbase64(src[i]);
+			bits |= strchr(Base64, src[i]) - Base64;
 		}
 		*bufferDest(dst, 1) = bits >> 16;
 		if (src[2] != '=') *bufferDest(dst, 1) = bits >> 8;
@@ -116,8 +111,7 @@ static void decodeBase64(struct Buffer *dst, const char *src) {
 static char unhex(char ch) {
 	if (ch <= '9') return ch - '0';
 	if (ch <= 'F') return 0xA + ch - 'A';
-	if (ch <= 'f') return 0xA + ch - 'a';
-	return 0;
+	return 0xA + ch - 'a';
 }
 
 static void decodeQ(struct Buffer *dst, const char *src) {