Updated documentation
parent
923efa865b
commit
f7c8251a08
19
ossig.h
19
ossig.h
|
|
@ -20,11 +20,22 @@ NAMESPACE_BEGIN(CryptoPP)
|
||||||
#if defined(CRYPTOPP_BSD_AVAILABLE) || defined(CRYPTOPP_UNIX_AVAILABLE) || defined(CRYPTOPP_DOXYGEN_PROCESSING)
|
#if defined(CRYPTOPP_BSD_AVAILABLE) || defined(CRYPTOPP_UNIX_AVAILABLE) || defined(CRYPTOPP_DOXYGEN_PROCESSING)
|
||||||
|
|
||||||
//! \brief Signal handler function pointer
|
//! \brief Signal handler function pointer
|
||||||
//! \sa SignalHandler
|
//! \details SignalHandlerFn is provided as a stand alone function pointer with external "C" linkage
|
||||||
|
//! \sa SignalHandler, NullSignalHandler
|
||||||
extern "C" {
|
extern "C" {
|
||||||
typedef void (*SignalHandlerFn) (int);
|
typedef void (*SignalHandlerFn) (int);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//! \brief Null signal handler function
|
||||||
|
//! \param unused the signal number
|
||||||
|
//! \details NullSignalHandler is provided as a stand alone function with external "C" linkage
|
||||||
|
//! and not a static member function due to the the member function's implicit
|
||||||
|
//! external "C++" linkage.
|
||||||
|
//! \sa SignalHandler, SignalHandlerFn
|
||||||
|
extern "C" {
|
||||||
|
inline void NullSignalHandler(int unused) {CRYPTOPP_UNUSED(unused);}
|
||||||
|
};
|
||||||
|
|
||||||
//! Signal handler for Linux and Unix compatibles
|
//! Signal handler for Linux and Unix compatibles
|
||||||
//! \tparam S Signal number
|
//! \tparam S Signal number
|
||||||
//! \tparam O Flag indicating exsting handler should be overwriiten
|
//! \tparam O Flag indicating exsting handler should be overwriiten
|
||||||
|
|
@ -38,7 +49,7 @@ extern "C" {
|
||||||
//! \warning Do not use SignalHandler in a code block that uses <tt>setjmp</tt> or <tt>longjmp</tt>
|
//! \warning Do not use SignalHandler in a code block that uses <tt>setjmp</tt> or <tt>longjmp</tt>
|
||||||
//! because the destructor may not run.
|
//! because the destructor may not run.
|
||||||
//! \since Crypto++ 5.6.5
|
//! \since Crypto++ 5.6.5
|
||||||
//! \sa SignalHandlerFn, \ref CRYPTOPP_ASSERT "CRYPTOPP_ASSERT", DebugTrapHandler
|
//! \sa NullSignalHandler, SignalHandlerFn, \ref CRYPTOPP_ASSERT "CRYPTOPP_ASSERT", DebugTrapHandler
|
||||||
template <int S, bool O=false>
|
template <int S, bool O=false>
|
||||||
struct SignalHandler
|
struct SignalHandler
|
||||||
{
|
{
|
||||||
|
|
@ -72,7 +83,7 @@ struct SignalHandler
|
||||||
if (m_old.sa_handler != 0 && !O) break;
|
if (m_old.sa_handler != 0 && !O) break;
|
||||||
|
|
||||||
// Sun Studio 12.2-12.4 needs the two casts, and they must be C-style casts
|
// Sun Studio 12.2-12.4 needs the two casts, and they must be C-style casts
|
||||||
new_handler.sa_handler = (SignalHandlerFn)(pfn ? pfn : (SignalHandlerFn)&SignalHandler::NullHandler);
|
new_handler.sa_handler = (pfn ? pfn : &NullSignalHandler);
|
||||||
new_handler.sa_flags = (pfn ? flags : 0);
|
new_handler.sa_flags = (pfn ? flags : 0);
|
||||||
|
|
||||||
ret = sigemptyset (&new_handler.sa_mask);
|
ret = sigemptyset (&new_handler.sa_mask);
|
||||||
|
|
@ -97,8 +108,6 @@ private:
|
||||||
struct sigaction m_old;
|
struct sigaction m_old;
|
||||||
bool m_installed;
|
bool m_installed;
|
||||||
|
|
||||||
static void NullHandler(int /*unused*/) { /* continue*/ }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Not copyable
|
// Not copyable
|
||||||
SignalHandler(const SignalHandler &);
|
SignalHandler(const SignalHandler &);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue