X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspircd.h;h=dba38d272733e3ea3ddef7e380c4f65c2e706487;hb=b7904e23726dfa497d276e193827c2e8685443eb;hp=84995710dcfdeb4995c98800ed22f97a4fb26aff;hpb=43a376fd68197db472472db78afd7bb5545fde38;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspircd.h b/include/inspircd.h index 84995710d..dba38d272 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,6 +234,9 @@ 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; @@ -267,7 +277,7 @@ class CoreExport InspIRCd : public classbase private: /** Holds the current UID. Used to generate the next one. */ - char current_uid[UUID_LENGTH + 1]; + char current_uid[UUID_LENGTH]; /** Set up the signal handlers */ @@ -283,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 */ @@ -338,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. @@ -457,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. @@ -568,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 @@ -662,7 +679,7 @@ class CoreExport InspIRCd : public classbase * @param pcnt The number of items you have given in the first parameter * @param user The user to send error messages to */ - void SendMode(const char* const* parameters, int pcnt, User *user); + void SendMode(const std::vector& parameters, User *user); /** Match two strings using pattern matching. * This operates identically to the global function match(), @@ -680,7 +697,7 @@ class CoreExport InspIRCd : public classbase * @param user The user to execute the command as * @return True if the command handler was called successfully */ - CmdResult CallCommandHandler(const std::string &commandname, const char* const* parameters, int pcnt, User* user); + CmdResult CallCommandHandler(const std::string &commandname, const std::vector& parameters, User* user); /** Return true if the command is a module-implemented command and the given parameters are valid for it * @param parameters The mode parameters @@ -789,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 @@ -821,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.