view base85.c @ 0:cd351af3a8d2 migout

import source
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Thu, 27 Mar 2008 20:03:52 -0400
parents
children
line wrap: on
line source

#include "types.h"
#include "base85.h"

int base85_encode(u8 *in, u8 *out, int inlen)
{
	u32 t;
	u8 *src = in;
	u8 *dst = out;

	while (in + inlen > src) {
		t = ((u32) src[0] << 24) |
		    ((u32) src[1] << 16) |
		    ((u32) src[2] << 8)  |
		    ((u32) src[3]);
		src += 4;

		/* compression of all zero group */
		if (!t) {
			*dst = 'z';
			dst++;
			continue;
		}

		dst[4] = (t % 85) + 33;   t /= 85;
		dst[3] = (t % 85) + 33;   t /= 85;
		dst[2] = (t % 85) + 33;   t /= 85;
		dst[1] = (t % 85) + 33;   t /= 85;
		dst[0] = t + 33;
		dst += 5;
	}

	return (int) (dst - out);
}