#include <u.h>
#include <libc.h>
#include <bio.h>
#include <regexp.h>
#include "hash.h"

Hash hash;

void
usage(void)
{
	fprint(2, "addhash [-o out] file scale [file scale]...\n");
	exits("usage");
}

void
main(int argc, char **argv)
{
	int i, fd, n;
	char err[ERRMAX], *out;
	Biobuf *b, bout;

	out = nil;
	ARGBEGIN{
	case 'o':
		out = EARGF(usage());
		break;
	default:
		usage();
	}ARGEND;

	if(argc==0 || argc%2)
		usage();

	while(argc > 0){
		if((b = Bopenlock(argv[0], OREAD)) == nil)
			sysfatal("open %s: %r", argv[0]);
		n = atoi(argv[1]);
		if(n == 0)
			sysfatal("0 scale given");
		Breadhash(b, &hash, n);
		Bterm(b);
		argv += 2;
		argc -= 2;
	}

	fd = 1;
	if(out){
		for(i=0; i<120; i++){
			if((fd = create(out, OWRITE, 0666|DMEXCL)) >= 0)
				break;
			rerrstr(err, sizeof err);
			if(strstr(err, "file is locked")==nil && strstr(err, "exclusive lock")==nil)
				break;
			sleep(1000);
		}
		if(fd < 0)
			sysfatal("could not open %s: %r\n", out);
	}
		
	Binit(&bout, fd, OWRITE);
	Bwritehash(&bout, &hash);
	Bterm(&bout);
	exits(0);
}

