/*
 * setjmptest.c
 */

#include <stdio.h>
#include <setjmp.h>

static jmp_buf buf;

void do_stuff(int v)
{
	printf("calling longjmp with %d... ", v + 1);
	longjmp(buf, v + 1);
}

void recurse(int ctr, int v)
{
	if (ctr--) {
		recurse(ctr, v);
	} else {
		do_stuff(v);
	}

	printf("ERROR!\n");	/* We should never get here... */
}

int main(void)
{
	int v;

	v = setjmp(buf);
	printf("setjmp returned %d\n", v);

	if (v < 256)
		recurse(v, v);

	return 0;
}
