#include static int _catchval; /* catch/throw return value */ int catch(id, fn) /* execute fn() within a catch frame */ register jmp_buf id; register int (*fn)(void); { return(setjmp(id) ? _catchval : ((*fn)())); } void throw(id, rv) /* return rv to the id catch */ register jmp_buf id; register int rv; { _catchval = rv; longjmp(id, 1); }