aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortcatm <tcatm@gawab.com>2011-03-03 22:26:00 +0100
committertcatm <tcatm@gawab.com>2011-03-03 22:26:00 +0100
commitdda48ccd0f7c7dd13486a580880390a43382d340 (patch)
treecb4360682f05a1fdce7201640c885a3693d02689
parent411493b1f70d1493b1203bce847baa9f41e79f91 (diff)
fix -daemon switch
-rw-r--r--init.cpp64
-rw-r--r--util.cpp1
-rw-r--r--util.h1
3 files changed, 39 insertions, 27 deletions
diff --git a/init.cpp b/init.cpp
index 9c84dca166..a9b7a7d2f9 100644
--- a/init.cpp
+++ b/init.cpp
@@ -74,32 +74,11 @@ void HandleSIGTERM(int)
#ifndef GUI
int main(int argc, char* argv[])
{
- for (int i = 1; i < argc; i++)
- if (!IsSwitchChar(argv[i][0]))
- fCommandLine = true;
- fDaemon = !fCommandLine;
-
-#ifdef __WXGTK__
- if (!fCommandLine)
- {
- // 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;
+ bool fRet = false;
+ fRet = AppInit(argc, argv);
- while (!fShutdown)
- Sleep(1000000);
- return 0;
+ if (fRet && fDaemon)
+ pthread_exit((void*)0);
}
#endif
@@ -113,7 +92,7 @@ bool AppInit(int argc, char* argv[])
catch (std::exception& e) {
PrintException(&e, "AppInit()");
} catch (...) {
- PrintException(NULL, "AppInit()");
+ PrintException(NULL, "AppInit()");
}
if (!fRet)
Shutdown(NULL);
@@ -213,6 +192,18 @@ bool AppInit2(int argc, char* argv[])
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");
fPrintToDebugger = GetBoolArg("-printtodebugger");
@@ -220,12 +211,31 @@ bool AppInit2(int argc, char* argv[])
fNoListen = GetBoolArg("-nolisten");
+ for (int i = 1; i < argc; i++)
+ if (!IsSwitchChar(argv[i][0]))
+ fCommandLine = true;
+
if (fCommandLine)
{
int ret = CommandLineRPC(argc, argv);
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])
ShrinkDebugFile();
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))
wxMessageBox("Error: CreateThread(StartNode) failed", "Bitcoin");
- if (GetBoolArg("-server") || fDaemon)
+ if (fServer)
CreateThread(ThreadRPCServer, NULL);
#if defined(__WXMSW__) && defined(GUI)
diff --git a/util.cpp b/util.cpp
index 8a2f9d525e..124174bd9d 100644
--- a/util.cpp
+++ b/util.cpp
@@ -14,6 +14,7 @@ char pszSetDataDir[MAX_PATH] = "";
bool fRequestShutdown = false;
bool fShutdown = false;
bool fDaemon = false;
+bool fServer = false;
bool fCommandLine = false;
string strMiscWarning;
bool fTestNet = false;
diff --git a/util.h b/util.h
index c69bf1ce17..1b780d5520 100644
--- a/util.h
+++ b/util.h
@@ -143,6 +143,7 @@ extern char pszSetDataDir[MAX_PATH];
extern bool fRequestShutdown;
extern bool fShutdown;
extern bool fDaemon;
+extern bool fServer;
extern bool fCommandLine;
extern string strMiscWarning;
extern bool fTestNet;