#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 <time.h>
#include <stdarg.h>
#include "modules.h"
#include "configreader.h"
#include "inspstring.h"
+#include "protocol.h"
/**
* Used to define the maximum number of parameters a command may have.
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)
{
}
*/
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
*/
*/
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.
*/
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
* @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.