summaryrefslogtreecommitdiff
path: root/ossig.h
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2016-09-19 22:35:53 -0400
committerJeffrey Walton <noloader@gmail.com>2016-09-19 22:35:53 -0400
commitf7c8251a088332d7b78f911357539b9b24b582e9 (patch)
tree838a61d564628a73fbce8644dc3fb8870563a125 /ossig.h
parent923efa865b5b1161fb1a4a429b9e57125692f873 (diff)
downloadcryptopp-git-f7c8251a088332d7b78f911357539b9b24b582e9.tar.gz
Updated documentation
Diffstat (limited to 'ossig.h')
-rw-r--r--ossig.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/ossig.h b/ossig.h
index 27df5562..ca5398a4 100644
--- a/ossig.h
+++ b/ossig.h
@@ -20,11 +20,22 @@ NAMESPACE_BEGIN(CryptoPP)
#if defined(CRYPTOPP_BSD_AVAILABLE) || defined(CRYPTOPP_UNIX_AVAILABLE) || defined(CRYPTOPP_DOXYGEN_PROCESSING)
//! \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" {
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
//! \tparam S Signal number
//! \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>
//! because the destructor may not run.
//! \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>
struct SignalHandler
{
@@ -72,7 +83,7 @@ struct SignalHandler
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
- new_handler.sa_handler = (SignalHandlerFn)(pfn ? pfn : (SignalHandlerFn)&SignalHandler::NullHandler);
+ new_handler.sa_handler = (pfn ? pfn : &NullSignalHandler);
new_handler.sa_flags = (pfn ? flags : 0);
ret = sigemptyset (&new_handler.sa_mask);
@@ -97,8 +108,6 @@ private:
struct sigaction m_old;
bool m_installed;
- static void NullHandler(int /*unused*/) { /* continue*/ }
-
private:
// Not copyable
SignalHandler(const SignalHandler &);