#include <setjmp.h>
#include <stdio.h>
jmp_buf x;
void f()
{
longjmp(x,5);
}
int main()
{
int i = 0;
if ((i = setjmp(x)) == 0)
{
f();
}
else
{
switch(i)
{
case 1: /* ... */ break;
case 2: /* ... */ break;
default: fprintf(stdout, "error code = %d\n", i); break;
}
}
return 0;
}
I2luY2x1ZGUgPHNldGptcC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCmptcF9idWYgeDsKCnZvaWQgZigpCnsKICBsb25nam1wKHgsNSk7Cn0KCmludCBtYWluKCkKewogIGludCBpID0gMDsKCiAgaWYgKChpID0gc2V0am1wKHgpKSA9PSAwKQogIHsKICAgIGYoKTsKICB9CiAgZWxzZQogIHsKICAgIHN3aXRjaChpKQogICAgewogICAgICBjYXNlICAxOiAvKiAuLi4gKi8gYnJlYWs7CiAgICAgIGNhc2UgIDI6IC8qIC4uLiAqLyBicmVhazsKICAgICAgZGVmYXVsdDogZnByaW50ZihzdGRvdXQsICJlcnJvciBjb2RlID0gJWRcbiIsIGkpOyBicmVhazsKICAgIH0KICB9CiAgcmV0dXJuIDA7Cn0=