diff options
Diffstat (limited to 'maildrop/exittrap.h')
| -rw-r--r-- | maildrop/exittrap.h | 34 | 
1 files changed, 34 insertions, 0 deletions
| diff --git a/maildrop/exittrap.h b/maildrop/exittrap.h new file mode 100644 index 0000000..e73571e --- /dev/null +++ b/maildrop/exittrap.h @@ -0,0 +1,34 @@ +#ifndef	exittrap_h +#define	exittrap_h + + +#include	"config.h" + +////////////////////////////////////////////////////////////////////////// +// +// ExitTrap implements exit traps - cleanup functions that must be called +// in case of an abnormal program termination. +// +// This class does NOT do anything like trap signals, etcetera.  The main +// program should do that, and call onexit() in order to call the cleanup() +// virtual function. +// +////////////////////////////////////////////////////////////////////////// + +class ExitTrap { + +	ExitTrap	*next, *prev; +	virtual void	cleanup()=0; +	virtual void	forked()=0; +	int	callcleanup; +protected: +	void	destroying() { callcleanup=0; } +	void	constructed() { callcleanup=1; } +public: +	ExitTrap(); +	virtual ~ExitTrap(); + +static	void	onexit(); +static	void	onfork(); +} ; +#endif | 
