#include <u.h>
#include <libc.h>
#include <bio.h>

const Rune lg = 0x0300;
const Rune hg = 0x036F;

int
ismark(Rune r)
{
	return r >= lg && r <= hg;
}

int
clusterize(Biobuf *in, Biobuf *out)
{
	int i;
	Rune r;
	i = 0;

	r = Bgetrune(in);
	if (r == (Rune)Beof)
		return 0;

	Bputrune(out, r);
	i = 1;

	while ((r = Bgetrune(in)) != (Rune)Beof)
		if (ismark(r)) {
			i++;
			Bputrune(out, r);
		} else {
			Bungetrune(in);
			break;
		}
	return i;
}

void
main(void)
{
	int count;
	int runes;
	Biobuf bstdin, bstdout;
	if (Binit(&bstdin, 0, OREAD) == Beof) {
		fprint(2, "can't connect stdin to bio: %r");
		exits("Binit");
	}
	if (Binit(&bstdout, 1, OWRITE) == Beof) {
		fprint(2, "can't connect stdout to bio: %r");
		exits("Binit");
	}
	count = 0;
	while ((runes = clusterize(&bstdin, &bstdout)) != 0) {
		Bprint(&bstdout, "\n\n  runes: %d\n\n", runes);
		count++;
	}
	Bterm(&bstdin);
	Bterm(&bstdout);
	print("\n\nlen: %d\n", count);
	exits(0);
}