chiark / gitweb /
Document hex encoding.
[mLib] / base64.c
index 6e5d3bff55526e74ea5b6e189d41405806fa9890..0af744c218634393c48710380ef28b98f23b5651 100644 (file)
--- a/base64.c
+++ b/base64.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: base64.c,v 1.4 1999/10/15 21:08:46 mdw Exp $
+ * $Id: base64.c,v 1.6 2003/05/16 00:22:58 mdw Exp $
  *
  * Base64 encoding and decoding.
  *
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: base64.c,v $
+ * Revision 1.6  2003/05/16 00:22:58  mdw
+ * Test base64 and hex encoding.
+ *
+ * Revision 1.5  2002/01/13 13:26:16  mdw
+ * Change names for internal tables.
+ *
  * Revision 1.4  1999/10/15 21:08:46  mdw
  * Change support for erroneous Base64 streams with length 1 mod 4.
  *
 
 /*----- Important tables --------------------------------------------------*/
 
-static const char base64_encodeMap[] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                                        "abcdefghijklmnopqrstuvwxyz" 
-                                        "0123456789+/" };
+static const char encodemap[] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                                 "abcdefghijklmnopqrstuvwxyz" 
+                                 "0123456789+/" };
 
-static const signed char base64_decodeMap[] = {
+static const signed char decodemap[] = {
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  /* 0x */
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  /* 1x */
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,  /* 2x */
@@ -99,10 +105,10 @@ void base64_encode(base64_ctx *ctx,
       qsz++;
       sz--;
       if (qsz == 3) {
-       DPUTC(d, base64_encodeMap[(acc >> 18) & 0x3f]);
-       DPUTC(d, base64_encodeMap[(acc >> 12) & 0x3f]);
-       DPUTC(d, base64_encodeMap[(acc >>  6) & 0x3f]);
-       DPUTC(d, base64_encodeMap[(acc >>  0) & 0x3f]);
+       DPUTC(d, encodemap[(acc >> 18) & 0x3f]);
+       DPUTC(d, encodemap[(acc >> 12) & 0x3f]);
+       DPUTC(d, encodemap[(acc >>  6) & 0x3f]);
+       DPUTC(d, encodemap[(acc >>  0) & 0x3f]);
        ctx->lnlen += 4;
        if (ctx->maxline && ctx->lnlen >= ctx->maxline) {
          dstr_puts(d, ctx->indent);
@@ -124,17 +130,17 @@ void base64_encode(base64_ctx *ctx,
        break;
       case 1:
        acc <<= 16;
-       DPUTC(d, base64_encodeMap[(acc >> 18) & 0x3f]);
-       DPUTC(d, base64_encodeMap[(acc >> 12) & 0x3f]);
+       DPUTC(d, encodemap[(acc >> 18) & 0x3f]);
+       DPUTC(d, encodemap[(acc >> 12) & 0x3f]);
        DPUTC(d, '=');
        DPUTC(d, '=');
        ctx->lnlen += 4;
        break;
       case 2:
        acc <<= 8;
-       DPUTC(d, base64_encodeMap[(acc >> 18) & 0x3f]);
-       DPUTC(d, base64_encodeMap[(acc >> 12) & 0x3f]);
-       DPUTC(d, base64_encodeMap[(acc >>  6) & 0x3f]);
+       DPUTC(d, encodemap[(acc >> 18) & 0x3f]);
+       DPUTC(d, encodemap[(acc >> 12) & 0x3f]);
+       DPUTC(d, encodemap[(acc >>  6) & 0x3f]);
        DPUTC(d, '=');
        ctx->lnlen += 4;
        break;
@@ -175,7 +181,7 @@ void base64_decode(base64_ctx *ctx,
       if (ch >= 128 || ch < 0)
        ch = -1;
       else
-       ch = base64_decodeMap[ch];
+       ch = decodemap[ch];
       sz--;
       if (ch == -1)
        continue;
@@ -269,7 +275,7 @@ int main(int argc, char *argv[])
   unsigned char buf[BUFSIZ];
   dstr d = DSTR_INIT;
   base64_ctx ctx;
-  void (*proc)(base64_ctx *, const unsigned char *, size_t, dstr *);
+  void (*proc)(base64_ctx *, const void *, size_t, dstr *);
   size_t sz;
 
   base64_init(&ctx);