190792Sgshapiro/* 290792Sgshapiro * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers. 390792Sgshapiro * All rights reserved. 490792Sgshapiro * 590792Sgshapiro * By using this file, you agree to the terms and conditions set 690792Sgshapiro * forth in the LICENSE file which can be found at the top level of 790792Sgshapiro * the sendmail distribution. 890792Sgshapiro * 998121Sgshapiro * $Id: setjmp.h,v 1.3 2001/03/08 03:23:08 ca Exp $ 1090792Sgshapiro */ 1190792Sgshapiro 1290792Sgshapiro#ifndef SM_SETJMP_H 1390792Sgshapiro# define SM_SETJMP_H 1490792Sgshapiro 1590792Sgshapiro# include <sm/config.h> 1690792Sgshapiro# include <setjmp.h> 1790792Sgshapiro 1890792Sgshapiro/* 1990792Sgshapiro** sm_setjmp_sig is a setjmp that saves the signal mask. 2090792Sgshapiro** sm_setjmp_nosig is a setjmp that does *not* save the signal mask. 2190792Sgshapiro** SM_JMPBUF_T is used with both of the above macros. 2290792Sgshapiro** 2390792Sgshapiro** On most systems, these can be implemented using sigsetjmp. 2490792Sgshapiro** Some old BSD systems do not have sigsetjmp, but they do have 2590792Sgshapiro** setjmp and _setjmp, which are just as good. 2690792Sgshapiro*/ 2790792Sgshapiro 2890792Sgshapiro# if SM_CONF_SIGSETJMP 2990792Sgshapiro 3090792Sgshapirotypedef sigjmp_buf SM_JMPBUF_T; 3190792Sgshapiro# define sm_setjmp_sig(buf) sigsetjmp(buf, 1) 3290792Sgshapiro# define sm_setjmp_nosig(buf) sigsetjmp(buf, 0) 3390792Sgshapiro# define sm_longjmp_sig(buf, val) siglongjmp(buf, val) 3490792Sgshapiro# define sm_longjmp_nosig(buf, val) siglongjmp(buf, val) 3590792Sgshapiro 3690792Sgshapiro# else /* SM_CONF_SIGSETJMP */ 3790792Sgshapiro 3890792Sgshapirotypedef jmp_buf SM_JMPBUF_T; 3990792Sgshapiro# define sm_setjmp_sig(buf) setjmp(buf) 4090792Sgshapiro# define sm_longjmp_sig(buf, val) longjmp(buf, val) 4190792Sgshapiro# define sm_setjmp_nosig(buf) _setjmp(buf) 4290792Sgshapiro# define sm_longjmp_nosig(buf, val) _longjmp(buf, val) 4390792Sgshapiro 4490792Sgshapiro# endif /* SM_CONF_SIGSETJMP */ 4590792Sgshapiro 4690792Sgshapiro#endif /* ! SM_SETJMP_H */ 47