#include "cache.h"

int main(int ac, char **av)
{
	git_SHA_CTX ctx;
	unsigned char sha1[20];
	unsigned bufsz = 8192;
	int binary = 0;
	char *buffer;

	if (ac == 2) {
		if (!strcmp(av[1], "-b"))
			binary = 1;
		else
			bufsz = strtoul(av[1], NULL, 10) * 1024 * 1024;
	}

	if (!bufsz)
		bufsz = 8192;

	while ((buffer = malloc(bufsz)) == NULL) {
		fprintf(stderr, "bufsz %u is too big, halving...\n", bufsz);
		bufsz /= 2;
		if (bufsz < 1024)
			die("OOPS");
	}

	git_SHA1_Init(&ctx);

	while (1) {
		ssize_t sz, this_sz;
		char *cp = buffer;
		unsigned room = bufsz;
		this_sz = 0;
		while (room) {
			sz = xread(0, cp, room);
			if (sz == 0)
				break;
			if (sz < 0)
				die_errno("test-sha1");
			this_sz += sz;
			cp += sz;
			room -= sz;
		}
		if (this_sz == 0)
			break;
		git_SHA1_Update(&ctx, buffer, this_sz);
	}
	git_SHA1_Final(sha1, &ctx);

	if (binary)
		fwrite(sha1, 1, 20, stdout);
	else
		puts(sha1_to_hex(sha1));
	exit(0);
}
