void CustomSigAbort(int nSig) { gcTraceS("Sig: {0}", nSig); gcAssert(false); throw std::exception("sig abort"); }
void UiCoreRestart(const char* args) { gcTraceS("Args: {0}", args); g_bRestart = true; if (args) { delete [] g_szArgs; size_t len = strlen(args); g_szArgs = new char[len+1]; strcpy_s(g_szArgs, len+1, args); g_szArgs[len] = '\0'; } }
int main(int argc, char** argv) { #ifdef DEBUG #if 0 while (!IsDebuggerPresent()) gcSleep( 500 ); #endif #endif if (GetFileAttributes("desura_service_debug.txt") != 0xFFFFFFFF) { gcTraceS("Waiting for debugger"); while (!IsDebuggerPresent()) gcSleep( 500 ); } if (argc >= 2 && strcmp(argv[1], "-exe")== 0) { if (g_ServiceApp.start(argc, argv)) { printf("Service has started. Press any key to exit....\n"); getchar(); } else { printf("Failed to start service.\n"); } g_ServiceApp.stop(); } else { SERVICE_TABLE_ENTRY ServiceTable[2]; ServiceTable[0].lpServiceName = SERVICE_NAME; ServiceTable[0].lpServiceProc = &ServiceMain; ServiceTable[1].lpServiceName = nullptr; ServiceTable[1].lpServiceProc = nullptr; g_StopEvent = CreateEvent(nullptr, false, false, nullptr); StartServiceCtrlDispatcher(ServiceTable); WaitForSingleObject(g_StopEvent, INFINITE); CloseHandle(g_StopEvent); g_StopEvent = nullptr; } }