summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/exitcodes.h48
-rw-r--r--include/inspircd.h4
-rw-r--r--src/inspircd.cpp2
3 files changed, 51 insertions, 3 deletions
diff --git a/include/exitcodes.h b/include/exitcodes.h
new file mode 100644
index 000000000..b42222697
--- /dev/null
+++ b/include/exitcodes.h
@@ -0,0 +1,48 @@
+#ifndef __EXITCODE_H__
+#define __EXITCODE_H__
+
+/** Valid exit codes to be used with InspIRCd::Exit()
+ * */
+enum ExitStatus
+{
+ EXIT_STATUS_NOERROR = 0,
+ EXIT_STATUS_DIE = 1,
+ EXIT_STATUS_FAILED_EXEC = 2,
+ EXIT_STATUS_INTERNAL = 3,
+ EXIT_STATUS_CONFIG = 4,
+ EXIT_STATUS_LOG = 5,
+ EXIT_STATUS_FORK = 6,
+ EXIT_STATUS_ARGV = 7,
+ EXIT_STATUS_BIND = 8,
+ EXIT_STATUS_PID = 9,
+ EXIT_STATUS_SOCKETENGINE = 10,
+ EXIT_STATUS_ROOT = 11,
+ EXIT_STATUS_DIETAG = 12,
+ EXIT_STATUS_MODULE = 13,
+ EXIT_STATUS_SIGTERM = 15 /* Note: dont move this value. It corresponds with the value of #define SIGTERM. */
+};
+
+/** Array that maps exit codes (ExitStatus types) to
+ * * human-readable strings to be shown on shutdown.
+ * */
+const char* ExitCodes[] =
+{
+ "No error", /* 0 */
+ "DIE command", /* 1 */
+ "execv() failed", /* 2 */
+ "Internal error", /* 3 */
+ "Config file error", /* 4 */
+ "Logfile error", /* 5 */
+ "Fork failed", /* 6 */
+ "Bad commandline parameters", /* 7 */
+ "No ports could be bound", /* 8 */
+ "Can't write PID file", /* 9 */
+ "SocketEngine could not initialize", /* 10 */
+ "Refusing to start up as root", /* 11 */
+ "Found a <die> tag!", /* 12 */
+ "Couldn't load module on startup", /* 13 */
+ "", /* 14 */
+ "Received SIGTERM", /* 15 */
+};
+
+#endif
diff --git a/include/inspircd.h b/include/inspircd.h
index a15c1fd68..4aa61e943 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -26,8 +26,7 @@
#include "command_parse.h"
#include "snomasks.h"
-/** Returned by some functions to indicate failure,
- * and the exit code of the program if it terminates.
+/** Returned by some functions to indicate failure.
*/
#define ERROR -1
@@ -655,6 +654,7 @@ class InspIRCd : public classbase
/** Causes the server to exit immediately
* @param The exit code to give to the operating system
+ * (See the ExitStatus enum for valid values)
*/
static void Exit(int status);
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index ab438df16..ceeaf6650 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -167,7 +167,7 @@ bool InspIRCd::DaemonSeed()
*/
while (kill(childpid, 0) != -1)
sleep(1);
- Exit(EXIT_STATUS_FORK);
+ exit(0);
}
setsid ();
umask (007);