]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspircd.h
Extract command line option parsing to a function.
[user/henk/code/inspircd.git] / include / inspircd.h
index 1e0ca19259dad3fb74d61fb4b39a01fe8b58d043..f3e718dcc5d3f5711a620bcbb39fd7c0496fa06a 100644 (file)
 
 #pragma once
 
+// If the system has a pre-C11 stdint header this must be defined in
+// order to use the numeric limit macros.
+#define __STDC_LIMIT_MACROS
+
 #include <cfloat>
 #include <climits>
 #include <cmath>
@@ -70,6 +74,7 @@ struct fakederef
 #include "dynref.h"
 #include "consolecolors.h"
 #include "cull_list.h"
+#include "serialize.h"
 #include "extensible.h"
 #include "fileutils.h"
 #include "ctables.h"
@@ -176,15 +181,6 @@ class serverstats
 class CoreExport InspIRCd
 {
  private:
-       /** Set up the signal handlers
-        */
-       void SetSignals();
-
-       /** Daemonize the ircd and close standard input/output streams
-        * @return True if the program daemonized succesfully
-        */
-       bool DaemonSeed();
-
        /** The current time, updated in the mainloop
         */
        struct timespec TIME;
@@ -196,11 +192,6 @@ class CoreExport InspIRCd
 
        ClientProtocol::RFCEvents rfcevents;
 
-       /** Check we aren't running as root, and exit if we are
-        * with exit code EXIT_STATUS_ROOT.
-        */
-       void CheckRoot();
-
  public:
 
        UIDGenerator UIDGen;
@@ -284,7 +275,7 @@ class CoreExport InspIRCd
         */
        TimerManager Timers;
 
-       /** X-Line manager. Handles G/K/Q/E line setting, removal and matching
+       /** X-line manager. Handles G/K/Q/E-line setting, removal and matching
         */
        XLineManager* XLines;
 
@@ -300,7 +291,7 @@ class CoreExport InspIRCd
         */
        std::vector<ListenSocket*> ports;
 
-       /** Set to the current signal recieved
+       /** Set to the current signal received
         */
        static sig_atomic_t s_signal;
 
@@ -403,12 +394,12 @@ class CoreExport InspIRCd
        static bool IsSID(const std::string& sid);
 
        /** Handles incoming signals after being set
-        * @param signal the signal recieved
+        * @param signal the signal received
         */
        void SignalHandler(int signal);
 
-       /** Sets the signal recieved
-        * @param signal the signal recieved
+       /** Sets the signal received
+        * @param signal the signal received
         */
        static void SetSignal(int signal);
 
@@ -502,6 +493,26 @@ class CoreExport InspIRCd
         */
        static unsigned long Duration(const std::string& str);
 
+       /** Calculate a duration in seconds from a string in the form 1y2w3d4h6m5s
+        * @param str A string containing a time in the form 1y2w3d4h6m5s
+        * (one year, two weeks, three days, four hours, six minutes and five seconds)
+        * @param duration The location to place the parsed duration valur
+        * @return Whether the duration was a valid format or not
+        */
+       static bool Duration(const std::string& str, unsigned long& duration);
+
+       /** Determines whether a string contains a valid duration.
+        * @param str A string containing a time in the form 1y2w3d4h6m5s
+        * @return True if the string is a valid duration; otherwise, false.
+        */
+       static bool IsValidDuration(const std::string& str);
+
+       /** Return a duration in seconds as a human-readable string.
+        * @param duration The duration in seconds to convert to a human-readable string.
+        * @return A string representing the given duration.
+        */
+       static std::string DurationString(time_t duration);
+
        /** Attempt to compare a password to a string from the config file.
         * This will be passed to handling modules which will compare the data
         * against possible hashed equivalents in the input string.