SETJMP(3) 1990 SETJMP(3) NNAAMMEE sigsetjmp, siglongjmp, setjmp, longjmp, _setjmp, _longjmp longjmperror - non-local jumps SSYYNNOOPPSSIISS ##iinncclluuddee <<sseettjjmmpp..hh>> ssiiggsseettjjmmpp((ssiiggjjmmpp__bbuuff eennvv,, iinntt ssaavveemmaasskk));; vvooiidd ssiigglloonnggjjmmpp((ssiiggjjmmpp__bbuuff eennvv,, iinntt vvaall));; sseettjjmmpp((jjmmpp__bbuuff eennvv));; vvooiidd lloonnggjjmmpp((jjmmpp__bbuuff eennvv,, iinntt vvaall));; __sseettjjmmpp((jjmmpp__bbuuff eennvv));; vvooiidd __lloonnggjjmmpp((jjmmpp__bbuuff eennvv,, iinntt vvaall));; vvooiidd lloonnggjjmmppeerrrroorr(());; DDEESSCCRRIIPPTTIIOONN The _s_i_g_s_e_t_j_m_p, _s_e_t_j_m_p, and __s_e_t_j_m_p functions save their cal- ling environment in _e_n_v. Each of these functions returns 0. The corresponding _l_o_n_g_j_m_p functions restore the environment saved by their respective versions of the _s_e_t_j_m_p function. They then return so that program execution continues as if the _s_e_t_j_m_p call had returned _v_a_l, instead of 0. Pairs of calls may be intermixed, i.e. both _s_i_g_s_e_t_j_m_p and _s_i_g_l_o_n_g_j_m_p and _s_e_t_j_m_p and _l_o_n_g_j_m_p combinations may be used in the same program, however, individual calls may not, i.e. the _e_n_v argument to _s_i_g_s_e_t_j_m_p may not be passed to _l_o_n_g_j_m_p. The _l_o_n_g_j_m_p routines may not be called after the routine which called the _s_e_t_j_m_p routines returns. All accessible data have values as of the time the _l_o_n_g_j_m_p routine was called. _S_e_t_j_m_p/_l_o_n_g_j_m_p pairs save and restore the signal mask (see _s_i_g_m_a_s_k(2)), while __s_e_t_j_m_p/__l_o_n_g_j_m_p pairs save and restore only the register set and the stack. _S_i_g_s_e_t_j_m_p/_s_i_g_l_o_n_g_j_m_p pairs save and restore the signal mask if the argument _s_a_v_e_m_a_s_k is non-zero, otherwise only the register set and the stack are saved. Printed 7/27/90 May 1 SETJMP(3) 1990 SETJMP(3) EERRRROORRSS If the contents of the _e_n_v are corrupted, or correspond to an environment that has already returned, the _l_o_n_g_j_m_p rou- tine calls the routine _l_o_n_g_j_m_p_e_r_r_o_r(3). If _l_o_n_g_j_m_p_e_r_r_o_r returns the program is aborted (see abort(2)). The default version of _l_o_n_g_j_m_p_e_r_r_o_r prints the message ``longjmp botch'' to standard error and returns. User programs wishing to exit more gracefully should write their own versions of _l_o_n_g_j_m_p_e_r_r_o_r. SSEEEE AALLSSOO sigvec(2), sigstack(2), signal(3) Printed 7/27/90 May 2