summaryrefslogtreecommitdiff
path: root/utils/Signal.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/Signal.h')
-rw-r--r--utils/Signal.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/utils/Signal.h b/utils/Signal.h
new file mode 100644
index 0000000..c51b070
--- /dev/null
+++ b/utils/Signal.h
@@ -0,0 +1,79 @@
+/*
+ * CENA C++ Utilities
+ *
+ * by Stephane Chatty
+ *
+ * Copyright 1992
+ * Centre d'Etudes de la Navigation Aerienne (CENA)
+ *
+ * Signal handling
+ *
+ * $Id$
+ * $CurLog$
+ */
+
+#ifndef Signal_H_
+#define Signal_H_
+
+#include "cplus_bugs.h"
+class CcuList;
+
+#ifdef CPLUS_BUG21
+#ifdef sun
+#define NSIG 32
+#else
+#include <signal.h>
+#endif
+#endif
+
+class CcuBaseSignalHandler {
+private:
+static CcuList* HandlerStacks;
+static void ClassInit ();
+ void Install ();
+static void InstallNone (int);
+static void DoHandle (int);
+
+public:
+ CcuBaseSignalHandler (int);
+virtual ~CcuBaseSignalHandler ();
+
+protected:
+ int Signal;
+/*?public?*/
+virtual void Handle ();
+
+};
+
+extern const int AllSigs, SigHup, SigInt, SigQuit, SigIll, SigTrap, SigAbrt, SigEmt, SigFpe,
+ SigKill, SigBus, SigSegv, SigSys, SigPipe, SigAlrm, SigTerm, SigUsr1,
+ SigUsr2, SigChld, SigVtalrm, SigIo, SigStop,
+ SigTstp, SigCont, SigTtin, SigTtou, SigUrg, SigLost;
+
+class CcuSignalHandler : public CcuBaseSignalHandler {
+protected:
+ void (*Handler) (int);
+ void Handle ();
+
+public:
+ CcuSignalHandler (int, void (*) (int));
+ ~CcuSignalHandler ();
+};
+
+
+class CcuSignalBlocker {
+private:
+#ifndef CPLUS_BUG21
+static int BlockCounts [];
+#else
+static int BlockCounts [NSIG-1];
+#endif
+protected:
+ int Signal:6;
+public:
+ CcuSignalBlocker (int);
+ ~CcuSignalBlocker ();
+};
+
+#endif /* Signal_H_ */
+