int setjmp(jmp_buf env);
setjmp saves its calling environment in the env for later use by the longjmp function.
On return from a direct invocation setjmp returns the value zero. On return from a call to the longjmp function, the setjmp returns a nonzero value determined by the call to longjmp.
The environment saved by a call to setjmp consists of information sufficient for a call to the longjmp function to return execution to the correct block and invocation of that block, were it called recursively.