int error;
};
-static struct b64_state *
-b64_start (struct b64_state *b64s)
+static void
+base64_start(msgproc *m)
{
- bzero(b64s, sizeof(*b64s));
- return b64s;
+ struct b64_state *b64s = malloc(sizeof(struct b64_state));
+ if (b64s)
+ bzero(b64s, sizeof(*b64s));
+ msgproc_setpriv(m, (void *)b64s);
}
static void
-b64_stop (struct b64_state *b64s)
+base64_finish(msgproc *m)
{
- bzero(b64s, sizeof(*b64s));
+ struct b64_state *b64s = msgproc_getpriv(m);
+ if (b64s)
+ free(b64s);
+ msgproc_free(m);
}
static int
return p - s;
}
-#ifdef _UNIT_TEST
-#include <stdio.h>
-
-int main(void) {
- char *intext = "aGVsbG8sIHdvcmxkCg==";
- char *s, out[80];
- int outlen, i;
- struct b64_state b64s;
-
- base64_init();
-
- b64_start(&b64s);
- for (s = intext; *s; s += 4) {
- b64_decode(&b64s, s, 4, out, sizeof(out), &outlen);
- if (outlen)
- for (i = 0; i < outlen; i++) putchar(out[i]);
- }
- b64_stop(&b64s);
- return 0;
-}
-#endif
-
-static void
-base64_start(msgproc *m)
-{
- struct b64_state *b64s = malloc(sizeof(b64s));
- b64_start(b64s);
- msgproc_setpriv(m, (void *)b64s);
-}
static void
base64_process(msgproc *m, char *buf, size_t len)
}
}
-static void
-base64_finish(msgproc *m)
-{
- struct b64_state *b64s = msgproc_getpriv(m);
- if (b64s) {
- b64_stop(b64s);
- free(b64s);
- }
- msgproc_free(m);
-}
msgproc_module msgproc_base64 = {
MSGPROC_BASE64, /* type */