X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=win%2Finspircd_win32wrapper.cpp;h=c32d31d5a2b81045387d0e8e6dbea6735bc976ca;hb=225f37a376d9a556695ac8c84816cf538a3a5448;hp=cc56af69d922a308c342ea6cd0351b39fad9812c;hpb=dffae50cae231f51b551304cb8df033e52d65fc4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/win/inspircd_win32wrapper.cpp b/win/inspircd_win32wrapper.cpp index cc56af69d..c32d31d5a 100644 --- a/win/inspircd_win32wrapper.cpp +++ b/win/inspircd_win32wrapper.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * InspIRCd: (C) 2002-2008 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see @@ -17,12 +17,15 @@ #include #include #include +#pragma comment(lib, "winmm.lib") using namespace std; #ifndef INADDR_NONE #define INADDR_NONE 0xffffffff #endif +#include + /* This MUST remain static and delcared outside the class, so that WriteProcessMemory can reference it properly */ static DWORD owner_processid = 0; @@ -299,7 +302,6 @@ int getopt_long_only(int ___argc, char *const *___argv, const char *__shortopts, return -1; const char * opt = ___argv[arg_counter]; - int return_val = 0; // if we're not an option, return an error. if (strnicmp(opt, "--", 2) != 0) @@ -387,14 +389,14 @@ void IPC::Check() if (!res) { if (GetLastError() != ERROR_SEM_TIMEOUT) - Instance->Log(DEFAULT, "IPC Pipe Error %u: %s", GetLastError(), dlerror()); + Instance->Logs->Log("win32",DEFAULT, "IPC Pipe Error %u: %s", GetLastError(), dlerror()); return; } switch (action) { case IPC_MESSAGE_REHASH: - Instance->Rehash(); + Instance->Rehash("due to IPC message"); break; case IPC_MESSAGE_DIE: @@ -516,19 +518,16 @@ void ClearConsole() } /* Many inspircd classes contain function pointers/functors which can be changed to point at platform specific implementations - * of code. This function, called from WindowsForkStart, repoints these pointers and functors so that calls are windows - * specific. + * of code. This function repoints these pointers and functors so that calls are windows specific. */ void ChangeWindowsSpecificPointers(InspIRCd* Instance) { + Instance->Logs->Log("win32",DEBUG,"Changing to windows specific pointer and functor set"); Instance->Config->DNSServerValidator = &ValidateWindowsDnsServer; } DWORD WindowsForkStart(InspIRCd* Instance) { - /* See the function declaration above */ - ChangeWindowsSpecificPointers(Instance); - /* Windows implementation of fork() :P */ if (owner_processid) return 0; @@ -631,15 +630,31 @@ bool ValidateWindowsDnsServer(ServerConfig* conf, const char* tag, const char* v if (!*(data.GetString())) { std::string nameserver; - conf->GetInstance()->Log(DEFAULT,"WARNING: not defined, attempting to find working server in the registry..."); + conf->GetInstance()->Logs->Log("win32",DEFAULT,"WARNING: not defined, attempting to find working server in the registry..."); nameserver = FindNameServerWin(); /* Windows stacks multiple nameservers in one registry key, seperated by commas. * Spotted by Cataclysm. */ if (nameserver.find(',') != std::string::npos) nameserver = nameserver.substr(0, nameserver.find(',')); + /* Just to be FUCKING AKWARD, windows fister... err i mean vista... + * seperates the nameservers with spaces instead. + */ + if (nameserver.find(' ') != std::string::npos) + nameserver = nameserver.substr(0, nameserver.find(' ')); data.Set(nameserver.c_str()); - conf->GetInstance()->Log(DEFAULT," set to '%s' as first active resolver in registry.", nameserver.c_str()); + conf->GetInstance()->Logs->Log("win32",DEFAULT," set to '%s' as first active resolver in registry.", nameserver.c_str()); } return true; } + +int gettimeofday(struct timeval * tv, void * tz) +{ + if(tv == NULL) + return -1; + + DWORD mstime = timeGetTime(); + tv->tv_sec = time(NULL); + tv->tv_usec = (mstime - (tv->tv_sec * 1000)) * 1000; + return 0; +}