#include "command_parse.h"
#include "exitcodes.h"
#include "caller.h"
+#include "testsuite.h"
using irc::sockets::insp_ntoa;
using irc::sockets::insp_inaddr;
int* mysig = NULL;
-/* Burlex: Moved from exitcodes.h -- due to duplicate symbols */
+/* Moved from exitcodes.h -- due to duplicate symbols -- Burlex
+ * XXX this is a bit ugly. -- w00t
+ */
const char* ExitCodes[] =
{
"No error", /* 0 */
/* We do this more than once, so that any service providers get a
* chance to be unhooked by the modules using them, but then get
* a chance to be removed themsleves.
+ *
+ * XXX there may be a better way to do this with 1.2
*/
for (int tries = 0; tries < 3; tries++)
{
rlimit rl;
if (getrlimit(RLIMIT_CORE, &rl) == -1)
{
- this->Log(DEFAULT,"Failed to getrlimit()!");
+ this->Logs->Log("STARTUP",DEFAULT,"Failed to getrlimit()!");
return false;
}
else
{
rl.rlim_cur = rl.rlim_max;
if (setrlimit(RLIMIT_CORE, &rl) == -1)
- this->Log(DEFAULT,"setrlimit() failed, cannot increase coredump size.");
+ this->Logs->Log("STARTUP",DEFAULT,"setrlimit() failed, cannot increase coredump size.");
}
return true;
else
{
printf("Failed to write PID-file '%s', exiting.\n",fname.c_str());
- this->Log(DEFAULT,"Failed to write PID-file '%s', exiting.",fname.c_str());
+ this->Logs->Log("STARTUP",DEFAULT,"Failed to write PID-file '%s', exiting.",fname.c_str());
Exit(EXIT_STATUS_PID);
}
}
int found_ports = 0;
FailedPortList pl;
- int do_version = 0, do_nofork = 0, do_debug = 0, do_nolog = 0, do_root = 0; /* flag variables */
+ int do_version = 0, do_nofork = 0, do_debug = 0,
+ do_nolog = 0, do_root = 0, do_testsuite = 0; /* flag variables */
char c = 0;
memset(&server, 0, sizeof(server));
this->Config->operclass.clear();
this->TIME = this->OLDTIME = this->startup_time = time(NULL);
- this->time_delta = 0;
srand(this->TIME);
*this->LogFileName = 0;
{ "nolog", no_argument, &do_nolog, 1 },
{ "runasroot", no_argument, &do_root, 1 },
{ "version", no_argument, &do_version, 1 },
+ { "testsuite", no_argument, &do_testsuite, 1 },
{ 0, 0, 0, 0 }
};
break;
default:
/* Unknown parameter! DANGER, INTRUDER.... err.... yeah. */
- printf("Usage: %s [--nofork] [--nolog] [--debug] [--logfile <filename>] [--runasroot] [--version] [--config <config>]\n", argv[0]);
+ printf("Usage: %s [--nofork] [--nolog] [--debug] [--logfile <filename>]\n\
+ [--runasroot] [--version] [--config <config>] [--testsuite]\n", argv[0]);
Exit(EXIT_STATUS_ARGV);
break;
}
}
+ if (do_testsuite)
+ do_nofork = do_debug = true;
+
if (do_version)
{
printf("\n%s r%s\n", VERSION, REVISION);
/* Set the finished argument values */
Config->nofork = do_nofork;
Config->forcedebug = do_debug;
- Config->writelog = !do_nolog;
+ Config->writelog = !do_nolog;
+ Config->TestSuite = do_testsuite;
if (!this->OpenLog(argv, argc))
{
if (!ServerConfig::FileExists(this->ConfigFileName))
{
printf("ERROR: Cannot open config file: %s\nExiting...\n", this->ConfigFileName);
- this->Log(DEFAULT,"Unable to open config file %s", this->ConfigFileName);
+ this->Logs->Log("STARTUP",DEFAULT,"Unable to open config file %s", this->ConfigFileName);
Exit(EXIT_STATUS_CONFIG);
}
int InspIRCd::Run()
{
+ /* See if we're supposed to be running the test suite rather than entering the mainloop */
+ if (Config->TestSuite)
+ {
+ TestSuite* ts = new TestSuite(this);
+ delete ts;
+ Exit(0);
+ }
+
while (true)
{
#ifndef WIN32
{
for (std::map<BufferedSocket*,BufferedSocket*>::iterator x = SocketCull.begin(); x != SocketCull.end(); ++x)
{
- Log(DEBUG,"Cull socket");
+ this->Logs->Log("MISC",DEBUG,"Cull socket");
SE->DelFd(x->second);
x->second->Close();
delete x->second;
return true;
}
-time_t InspIRCd::Time(bool delta)
+time_t InspIRCd::Time()
{
- if (delta)
- return TIME + time_delta;
return TIME;
}
-int InspIRCd::SetTimeDelta(int delta)
-{
- int old = time_delta;
- time_delta = delta;
- this->Log(DEBUG, "Time delta set to %d (was %d)", time_delta, old);
- return old;
-}
-
-int InspIRCd::GetTimeDelta()
-{
- return time_delta;
-}
-
void InspIRCd::SetSignal(int signal)
{
*mysig = signal;