]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - win/inspircd_win32wrapper.cpp
Whack code duplication
[user/henk/code/inspircd.git] / win / inspircd_win32wrapper.cpp
index a25544aab95f3ab891b8fe68090017652b3f99df..7f183f19f05c073b7ace9dc261f96027716f307b 100644 (file)
@@ -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
@@ -390,14 +390,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:
@@ -523,7 +523,7 @@ void ClearConsole()
  */
 void ChangeWindowsSpecificPointers(InspIRCd* Instance)
 {
-       Instance->Log(DEBUG,"Changing to windows specific pointer and functor set");
+       Instance->Logs->Log("win32",DEBUG,"Changing to windows specific pointer and functor set");
        Instance->Config->DNSServerValidator = &ValidateWindowsDnsServer;
 }
 
@@ -631,15 +631,20 @@ bool ValidateWindowsDnsServer(ServerConfig* conf, const char* tag, const char* v
        if (!*(data.GetString()))
        {
                std::string nameserver;
-               conf->GetInstance()->Log(DEFAULT,"WARNING: <dns:server> not defined, attempting to find working server in the registry...");
+               conf->GetInstance()->Logs->Log("win32",DEFAULT,"WARNING: <dns:server> 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,"<dns:server> set to '%s' as first active resolver in registry.", nameserver.c_str());
+               conf->GetInstance()->Logs->Log("win32",DEFAULT,"<dns:server> set to '%s' as first active resolver in registry.", nameserver.c_str());
        }
        return true;
 }
@@ -654,67 +659,3 @@ int gettimeofday(struct timeval * tv, void * tz)
        tv->tv_usec  = (mstime - (tv->tv_sec * 1000)) * 1000;
     return 0;  
 }
-
-int __exceptionHandler(PEXCEPTION_POINTERS pExceptPtrs)
-{
-       SYSTEMTIME _time;
-       HANDLE hDump;
-       char mod[MAX_PATH*2];
-       char * pMod = mod;
-       char dump_filename[MAX_PATH];
-       MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
-       DWORD code;
-
-       if(pExceptPtrs == NULL) {
-               __try {
-                       RaiseException(EXCEPTION_BREAKPOINT, 0, 0, NULL);
-               } __except(__exceptionHandler(GetExceptionInformation()), EXCEPTION_CONTINUE_EXECUTION) {}
-       }
-
-       printf("Exception caught at 0x%.8X! Attempting to write crash dump file.\n", (unsigned long)pExceptPtrs->ExceptionRecord->ExceptionAddress);
-
-       if(GetModuleFileName(0, mod, MAX_PATH*2) > 0)
-       {
-               if( (pMod = strrchr(mod, '\\')) != NULL )
-                       ++pMod;
-               else
-                       strcpy(mod, "unk");
-       }
-       else
-               strcpy(mod, "unk");
-
-       GetSystemTime(&_time);
-       snprintf(dump_filename, MAX_PATH, "dump-%s-%u-%u-%u-%u-%u-%u.dmp",
-               pMod, _time.wYear, _time.wMonth, _time.wDay, _time.wHour, _time.wMinute, _time.wSecond);
-
-       hDump = CreateFile(dump_filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH, 0);
-       if(hDump != INVALID_HANDLE_VALUE)
-       {
-               dumpInfo.ClientPointers = FALSE;
-               dumpInfo.ExceptionPointers = pExceptPtrs;
-               dumpInfo.ThreadId = GetCurrentThreadId();
-
-               /* let's write a full memory dump. insp shouldn't be using much memory anyway, and it will help a lot with debugging. */
-               MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDump, MiniDumpWithFullMemory, &dumpInfo, NULL, NULL);
-               FlushFileBuffers(hDump);
-               CloseHandle(hDump);
-       }
-
-       /* check for a debugger */
-       __asm {
-               pushad
-               pushfd
-               mov eax, fs:[18h]
-               mov eax, dword ptr [eax+30h]
-               mov ebx, dword ptr [eax]
-               mov code, ebx
-               popfd
-               popad
-       }
-
-       /* break into debugger if we have one */
-       if(code & 0x10000)
-               return EXCEPTION_CONTINUE_SEARCH;
-       else    /* otherwise exit abnormally */
-               return EXCEPTION_CONTINUE_EXECUTION;
-}