std::string FindNameServerWin()
{
- std::string returnval = "127.0.0.1";
+ std::string returnval;
HKEY top, key;
char* dns = NULL;
CloseHandle(hProcess);
}
-bool ValidateDnsServer(ServerConfig* conf, const char* tag, const char* value, ValueItem &data)
+void FindDNS(std::string& server)
{
- if (!*(data.GetString()))
+ if (!server.empty())
+ return;
+
+ ServerInstance->Logs->Log("CONFIG",DEFAULT,"WARNING: <dns:server> not defined, attempting to find working server in the registry...");
+ std::string nameserver = FindNameServerWin();
+
+ /* If empty use default to 127.0.0.1 */
+ if (nameserver.empty())
{
- std::string nameserver;
- ServerInstance->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());
- ServerInstance->Logs->Log("win32",DEFAULT,"<dns:server> set to '%s' as first active resolver in registry.", nameserver.c_str());
+ ServerInstance->Logs->Log("CONFIG",DEFAULT,"No viable nameserver found in registry! Defaulting to nameserver '127.0.0.1'!");
+ server = "127.0.0.1";
+ return;
}
- return true;
+
+ /* 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(' '));
+
+ server = nameserver;
+ ServerInstance->Logs->Log("CONFIG",DEFAULT,"<dns:server> set to '%s' as first active resolver in registry.", nameserver.c_str());
}
-int gettimeofday(struct timeval * tv, void * tz)
+int clock_gettime(int clock, struct timespec * tv)
{
if(tv == NULL)
return -1;
DWORD mstime = timeGetTime();
tv->tv_sec = time(NULL);
- tv->tv_usec = (mstime - (tv->tv_sec * 1000)) * 1000;
+ tv->tv_usec = (mstime - (tv->tv_sec * 1000)) * 1000000;
return 0;
}
while (pEnumerator)
{
VARIANT vtProp;
+ VariantInit(&vtProp);
/* Next item */
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);
if (!FAILED(hr))
{
/* Matches our process ID? */
- if (vtProp.uintVal == GetCurrentProcessId())
- {
- VariantClear(&vtProp);
+ UINT pid = vtProp.uintVal;
+ VariantClear(&vtProp);
+ if (pid == GetCurrentProcessId())
+ {
/* Get CPU percentage for this process */
hr = pclsObj->Get(L"PercentProcessorTime", 0, &vtProp, 0, 0);
if (!FAILED(hr))
/* Deal with wide string ickyness. Who in their right
* mind puts a number in a bstrVal wide string item?!
*/
- VariantClear(&vtProp);
cpu = 0;
std::wstringstream out(vtProp.bstrVal);
out >> cpu;
- break;
+ VariantClear(&vtProp);
}
+ pclsObj->Release();
+ break;
}
+ pclsObj->Release();
}
}
pEnumerator->Release();
- pclsObj->Release();
}
SysFreeString(Language);