X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspircd.h;h=1b88ca0b72cce49b264cea77bfb483b4ace723f2;hb=8c2d96013084de950e3a63be4ae6ed626c4093ab;hp=a933e5c41e59315db2455b01b9829dc885492e10;hpb=d43120ca4a68006811b3645d0d9065ac098ddc65;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspircd.h b/include/inspircd.h index a933e5c41..1b88ca0b7 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -25,6 +25,12 @@ #undef ERROR #endif +#ifdef __GNUC__ +#define CUSTOM_PRINTF(STRING, FIRST) __attribute__((format(printf, STRING, FIRST))) +#else +#define CUSTOM_PRINTF(STRING, FIRST) +#endif + // Required system headers. #include #include @@ -50,6 +56,7 @@ #include "modules.h" #include "configreader.h" #include "inspstring.h" +#include "protocol.h" /** * Used to define the maximum number of parameters a command may have. @@ -227,16 +234,21 @@ DEFINE_HANDLER1(IsNickHandler, bool, const char*); DEFINE_HANDLER1(IsIdentHandler, bool, const char*); DEFINE_HANDLER1(FindDescriptorHandler, User*, int); DEFINE_HANDLER1(FloodQuitUserHandler, void, User*); +DEFINE_HANDLER1(IsChannelHandler, bool, const char*); +DEFINE_HANDLER1(IsSIDHandler, bool, const std::string&); +DEFINE_HANDLER1(RehashHandler, void, const std::string&); /* Forward declaration - required */ class XLineManager; class BanCacheManager; -class ConfigReaderThread : public Thread +class CoreExport ConfigReaderThread : public Thread { InspIRCd* ServerInstance; + bool do_bail; + User* TheUser; public: - ConfigReaderThread(InspIRCd* Instance) : Thread(), ServerInstance(Instance) + ConfigReaderThread(InspIRCd* Instance, bool bail, User* user) : Thread(), ServerInstance(Instance), do_bail(bail), TheUser(user) { } @@ -281,9 +293,9 @@ class CoreExport InspIRCd : public classbase */ void DoSocketTimeouts(time_t TIME); - /** Sets up UID subsystem + /** Increments the current UID by one. */ - void InitialiseUID(); + void IncrementUID(int pos); /** Perform background user events such as PING checks */ @@ -336,6 +348,9 @@ class CoreExport InspIRCd : public classbase IsIdentHandler HandleIsIdent; FindDescriptorHandler HandleFindDescriptor; FloodQuitUserHandler HandleFloodQuitUser; + IsChannelHandler HandleIsChannel; + IsSIDHandler HandleIsSID; + RehashHandler HandleRehash; /** BufferedSocket classes pending deletion after being closed. * We don't delete these immediately as this may cause a segmentation fault. @@ -455,6 +470,10 @@ class CoreExport InspIRCd : public classbase */ int s_signal; + /** Protocol interface, overridden by server protocol modules + */ + ProtocolInterface* PI; + /** Get the current time * Because this only calls time() once every time around the mainloop, * it is much faster than calling time() directly. @@ -566,16 +585,16 @@ class CoreExport InspIRCd : public classbase * @param chname A channel name to verify * @return True if the name is valid */ - bool IsChannel(const char *chname); + caller1 IsChannel; /** Return true if str looks like a server ID * @param string to check against */ - bool IsSID(const std::string &str); + caller1 IsSID; /** Rehash the local server */ - void Rehash(); + caller1 Rehash; /** Handles incoming signals after being set * @param signal the signal recieved @@ -787,23 +806,6 @@ class CoreExport InspIRCd : public classbase */ InspIRCd(int argc, char** argv); - /** Output a log message to the ircd.log file - * The text will only be output if the current loglevel - * is less than or equal to the level you provide - * @param level A log level from the DebugLevel enum - * @param text Format string of to write to the log - * @param ... Format arguments of text to write to the log - */ - void Log(int level, const char* text, ...); - - /** Output a log message to the ircd.log file - * The text will only be output if the current loglevel - * is less than or equal to the level you provide - * @param level A log level from the DebugLevel enum - * @param text Text to write to the log - */ - void Log(int level, const std::string &text); - /** Send a line of WHOIS data to a user. * @param user user to send the line to * @param dest user being WHOISed @@ -819,7 +821,7 @@ class CoreExport InspIRCd : public classbase * @param format Format string for the numeric * @param ... Parameters for the format string */ - void SendWhoisLine(User* user, User* dest, int numeric, const char* format, ...); + void SendWhoisLine(User* user, User* dest, int numeric, const char* format, ...) CUSTOM_PRINTF(5, 6); /** Quit a user for excess flood, and if they are not * fully registered yet, temporarily zline their IP.