fix -daemon switch

This commit is contained in:
tcatm 2011-03-03 22:26:00 +01:00
parent 411493b1f7
commit dda48ccd0f
3 changed files with 39 additions and 27 deletions

View File

@ -74,32 +74,11 @@ void HandleSIGTERM(int)
#ifndef GUI #ifndef GUI
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
for (int i = 1; i < argc; i++) bool fRet = false;
if (!IsSwitchChar(argv[i][0])) fRet = AppInit(argc, argv);
fCommandLine = true;
fDaemon = !fCommandLine;
#ifdef __WXGTK__ if (fRet && fDaemon)
if (!fCommandLine) pthread_exit((void*)0);
{
// Daemonize
pid_t pid = fork();
if (pid < 0)
{
fprintf(stderr, "Error: fork() returned %d errno %d\n", pid, errno);
return 1;
}
if (pid > 0)
pthread_exit((void*)0);
}
#endif
if (!AppInit(argc, argv))
return 1;
while (!fShutdown)
Sleep(1000000);
return 0;
} }
#endif #endif
@ -113,7 +92,7 @@ bool AppInit(int argc, char* argv[])
catch (std::exception& e) { catch (std::exception& e) {
PrintException(&e, "AppInit()"); PrintException(&e, "AppInit()");
} catch (...) { } catch (...) {
PrintException(NULL, "AppInit()"); PrintException(NULL, "AppInit()");
} }
if (!fRet) if (!fRet)
Shutdown(NULL); Shutdown(NULL);
@ -213,6 +192,18 @@ bool AppInit2(int argc, char* argv[])
fDebug = GetBoolArg("-debug"); fDebug = GetBoolArg("-debug");
fDaemon = GetBoolArg("-daemon");
if (fDaemon)
fServer = true;
else
fServer = GetBoolArg("-server");
/* force fServer when running without GUI */
#ifndef GUI
fServer = true;
#endif
fPrintToConsole = GetBoolArg("-printtoconsole"); fPrintToConsole = GetBoolArg("-printtoconsole");
fPrintToDebugger = GetBoolArg("-printtodebugger"); fPrintToDebugger = GetBoolArg("-printtodebugger");
@ -220,12 +211,31 @@ bool AppInit2(int argc, char* argv[])
fNoListen = GetBoolArg("-nolisten"); fNoListen = GetBoolArg("-nolisten");
for (int i = 1; i < argc; i++)
if (!IsSwitchChar(argv[i][0]))
fCommandLine = true;
if (fCommandLine) if (fCommandLine)
{ {
int ret = CommandLineRPC(argc, argv); int ret = CommandLineRPC(argc, argv);
exit(ret); exit(ret);
} }
#ifndef GUI
if (fDaemon)
{
// Daemonize
pid_t pid = fork();
if (pid < 0)
{
fprintf(stderr, "Error: fork() returned %d errno %d\n", pid, errno);
return false;
}
if (pid > 0)
return true;
}
#endif
if (!fDebug && !pszSetDataDir[0]) if (!fDebug && !pszSetDataDir[0])
ShrinkDebugFile(); ShrinkDebugFile();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
@ -443,7 +453,7 @@ bool AppInit2(int argc, char* argv[])
if (!CreateThread(StartNode, NULL)) if (!CreateThread(StartNode, NULL))
wxMessageBox("Error: CreateThread(StartNode) failed", "Bitcoin"); wxMessageBox("Error: CreateThread(StartNode) failed", "Bitcoin");
if (GetBoolArg("-server") || fDaemon) if (fServer)
CreateThread(ThreadRPCServer, NULL); CreateThread(ThreadRPCServer, NULL);
#if defined(__WXMSW__) && defined(GUI) #if defined(__WXMSW__) && defined(GUI)

View File

@ -14,6 +14,7 @@ char pszSetDataDir[MAX_PATH] = "";
bool fRequestShutdown = false; bool fRequestShutdown = false;
bool fShutdown = false; bool fShutdown = false;
bool fDaemon = false; bool fDaemon = false;
bool fServer = false;
bool fCommandLine = false; bool fCommandLine = false;
string strMiscWarning; string strMiscWarning;
bool fTestNet = false; bool fTestNet = false;

1
util.h
View File

@ -143,6 +143,7 @@ extern char pszSetDataDir[MAX_PATH];
extern bool fRequestShutdown; extern bool fRequestShutdown;
extern bool fShutdown; extern bool fShutdown;
extern bool fDaemon; extern bool fDaemon;
extern bool fServer;
extern bool fCommandLine; extern bool fCommandLine;
extern string strMiscWarning; extern string strMiscWarning;
extern bool fTestNet; extern bool fTestNet;