Mercurial > hg > bitcoin
annotate init.cpp @ 279:f70e033b871e draft
Russian translation by eurekafag
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@160 1a98c847-1fd6-4fd8-948a-caf3550aa51b
author | s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b> |
---|---|
date | Mon, 04 Oct 2010 01:40:50 +0000 |
parents | eb048502574e |
children | 163e140e74f5 0ec96f552f62 |
rev | line source |
---|---|
264
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
1 // Copyright (c) 2009-2010 Satoshi Nakamoto |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
2 // Distributed under the MIT/X11 software license, see the accompanying |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
3 // file license.txt or http://www.opensource.org/licenses/mit-license.php. |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
4 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
5 #include "headers.h" |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
6 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
7 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
8 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
9 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
10 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
11 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
12 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
13 ////////////////////////////////////////////////////////////////////////////// |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
14 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
15 // Shutdown |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
16 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
17 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
18 void ExitTimeout(void* parg) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
19 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
20 #ifdef __WXMSW__ |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
21 Sleep(5000); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
22 ExitProcess(0); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
23 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
24 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
25 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
26 void Shutdown(void* parg) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
27 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
28 static CCriticalSection cs_Shutdown; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
29 static bool fTaken; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
30 bool fFirstThread; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
31 CRITICAL_BLOCK(cs_Shutdown) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
32 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
33 fFirstThread = !fTaken; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
34 fTaken = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
35 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
36 static bool fExit; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
37 if (fFirstThread) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
38 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
39 fShutdown = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
40 nTransactionsUpdated++; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
41 DBFlush(false); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
42 StopNode(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
43 DBFlush(true); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
44 CreateThread(ExitTimeout, NULL); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
45 Sleep(50); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
46 printf("Bitcoin exiting\n\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
47 fExit = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
48 exit(0); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
49 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
50 else |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
51 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
52 while (!fExit) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
53 Sleep(500); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
54 Sleep(100); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
55 ExitThread(0); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
56 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
57 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
58 |
268
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
59 void HandleSIGTERM(int) |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
60 { |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
61 fRequestShutdown = true; |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
62 } |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
63 |
264
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
64 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
65 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
66 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
67 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
68 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
69 ////////////////////////////////////////////////////////////////////////////// |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
70 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
71 // Start |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
72 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
73 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
74 #ifndef GUI |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
75 int main(int argc, char* argv[]) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
76 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
77 for (int i = 1; i < argc; i++) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
78 if (!IsSwitchChar(argv[i][0])) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
79 fCommandLine = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
80 fDaemon = !fCommandLine; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
81 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
82 #ifdef __WXGTK__ |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
83 if (!fCommandLine) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
84 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
85 // Daemonize |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
86 pid_t pid = fork(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
87 if (pid < 0) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
88 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
89 fprintf(stderr, "Error: fork() returned %d errno %d\n", pid, errno); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
90 return 1; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
91 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
92 if (pid > 0) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
93 pthread_exit((void*)0); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
94 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
95 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
96 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
97 if (!AppInit(argc, argv)) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
98 return 1; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
99 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
100 while (!fShutdown) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
101 Sleep(1000000); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
102 return 0; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
103 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
104 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
105 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
106 bool AppInit(int argc, char* argv[]) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
107 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
108 bool fRet = false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
109 try |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
110 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
111 fRet = AppInit2(argc, argv); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
112 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
113 catch (std::exception& e) { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
114 PrintException(&e, "AppInit()"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
115 } catch (...) { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
116 PrintException(NULL, "AppInit()"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
117 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
118 if (!fRet) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
119 Shutdown(NULL); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
120 return fRet; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
121 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
122 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
123 bool AppInit2(int argc, char* argv[]) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
124 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
125 #ifdef _MSC_VER |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
126 // Turn off microsoft heap dump noise |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
127 _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
128 _CrtSetReportFile(_CRT_WARN, CreateFileA("NUL", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0)); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
129 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
130 #if _MSC_VER >= 1400 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
131 // Disable confusing "helpful" text message on abort, ctrl-c |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
132 _set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
133 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
134 #ifndef __WXMSW__ |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
135 umask(077); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
136 #endif |
268
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
137 #ifndef __WXMSW__ |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
138 // Clean shutdown on SIGTERM |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
139 struct sigaction sa; |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
140 sa.sa_handler = HandleSIGTERM; |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
141 sigemptyset(&sa.sa_mask); |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
142 sa.sa_flags = 0; |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
143 sigaction(SIGTERM, &sa, NULL); |
f7d27372246c
Gavin Andresen: clean shutdown on SIGTERM
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
267
diff
changeset
|
144 #endif |
264
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
145 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
146 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
147 // Parameters |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
148 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
149 ParseParameters(argc, argv); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
150 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
151 if (mapArgs.count("-datadir")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
152 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
153 filesystem::path pathDataDir = filesystem::system_complete(mapArgs["-datadir"]); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
154 strlcpy(pszSetDataDir, pathDataDir.string().c_str(), sizeof(pszSetDataDir)); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
155 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
156 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
157 ReadConfigFile(mapArgs, mapMultiArgs); // Must be done after processing datadir |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
158 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
159 if (mapArgs.count("-?") || mapArgs.count("--help")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
160 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
161 string strUsage = string() + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
162 _("Usage:") + "\t\t\t\t\t\t\t\t\t\t\n" + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
163 " bitcoin [options] \t " + "\n" + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
164 " bitcoin [options] <command> [params]\t " + _("Send command to -server or bitcoind\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
165 " bitcoin [options] help \t\t " + _("List commands\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
166 " bitcoin [options] help <command> \t\t " + _("Get help for a command\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
167 _("Options:\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
168 " -conf=<file> \t " + _("Specify configuration file (default: bitcoin.conf)\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
169 " -gen \t " + _("Generate coins\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
170 " -gen=0 \t " + _("Don't generate coins\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
171 " -min \t " + _("Start minimized\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
172 " -datadir=<dir> \t " + _("Specify data directory\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
173 " -proxy=<ip:port>\t " + _("Connect through socks4 proxy\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
174 " -addnode=<ip> \t " + _("Add a node to connect to\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
175 " -connect=<ip> \t " + _("Connect only to the specified node\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
176 " -server \t " + _("Accept command line and JSON-RPC commands\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
177 " -daemon \t " + _("Run in the background as a daemon and accept commands\n") + |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
178 " -? \t " + _("This help message\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
179 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
180 #if defined(__WXMSW__) && defined(GUI) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
181 // Tabs make the columns line up in the message box |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
182 wxMessageBox(strUsage, "Bitcoin", wxOK); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
183 #else |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
184 // Remove tabs |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
185 strUsage.erase(std::remove(strUsage.begin(), strUsage.end(), '\t'), strUsage.end()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
186 fprintf(stderr, "%s", strUsage.c_str()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
187 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
188 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
189 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
190 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
191 if (mapArgs.count("-debug")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
192 fDebug = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
193 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
194 if (mapArgs.count("-printtodebugger")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
195 fPrintToDebugger = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
196 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
197 if (fCommandLine) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
198 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
199 int ret = CommandLineRPC(argc, argv); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
200 exit(ret); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
201 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
202 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
203 if (!fDebug && !pszSetDataDir[0]) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
204 ShrinkDebugFile(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
205 printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); |
277
eb048502574e
don't count or spend payments until they have 1 confirmation,
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
268
diff
changeset
|
206 printf("Bitcoin version %s%s beta\n", FormatVersion(VERSION).c_str(), pszSubVer); |
264
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
207 #ifdef GUI |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
208 printf("OS version %s\n", ((string)wxGetOsDescription()).c_str()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
209 printf("System default language is %d %s\n", g_locale.GetSystemLanguage(), ((string)g_locale.GetSysName()).c_str()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
210 printf("Language file %s (%s)\n", (string("locale/") + (string)g_locale.GetCanonicalName() + "/LC_MESSAGES/bitcoin.mo").c_str(), ((string)g_locale.GetLocale()).c_str()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
211 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
212 printf("Default data directory %s\n", GetDefaultDataDir().c_str()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
213 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
214 if (mapArgs.count("-loadblockindextest")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
215 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
216 CTxDB txdb("r"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
217 txdb.LoadBlockIndex(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
218 PrintBlockTree(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
219 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
220 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
221 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
222 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
223 // Limit to single instance per user |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
224 // Required to protect the database files if we're going to keep deleting log.* |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
225 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
226 #if defined(__WXMSW__) && defined(GUI) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
227 // todo: wxSingleInstanceChecker wasn't working on Linux, never deleted its lock file |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
228 // maybe should go by whether successfully bind port 8333 instead |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
229 wxString strMutexName = wxString("bitcoin_running.") + getenv("HOMEPATH"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
230 for (int i = 0; i < strMutexName.size(); i++) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
231 if (!isalnum(strMutexName[i])) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
232 strMutexName[i] = '.'; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
233 wxSingleInstanceChecker* psingleinstancechecker = new wxSingleInstanceChecker(strMutexName); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
234 if (psingleinstancechecker->IsAnotherRunning()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
235 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
236 printf("Existing instance found\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
237 unsigned int nStart = GetTime(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
238 loop |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
239 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
240 // TODO: find out how to do this in Linux, or replace with wxWidgets commands |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
241 // Show the previous instance and exit |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
242 HWND hwndPrev = FindWindowA("wxWindowClassNR", "Bitcoin"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
243 if (hwndPrev) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
244 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
245 if (IsIconic(hwndPrev)) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
246 ShowWindow(hwndPrev, SW_RESTORE); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
247 SetForegroundWindow(hwndPrev); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
248 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
249 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
250 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
251 if (GetTime() > nStart + 60) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
252 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
253 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
254 // Resume this instance if the other exits |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
255 delete psingleinstancechecker; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
256 Sleep(1000); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
257 psingleinstancechecker = new wxSingleInstanceChecker(strMutexName); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
258 if (!psingleinstancechecker->IsAnotherRunning()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
259 break; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
260 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
261 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
262 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
263 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
264 // Bind to the port early so we can tell if another instance is already running. |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
265 // This is a backup to wxSingleInstanceChecker, which doesn't work on Linux. |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
266 string strErrors; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
267 if (!BindListenPort(strErrors)) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
268 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
269 wxMessageBox(strErrors, "Bitcoin"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
270 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
271 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
272 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
273 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
274 // Load data files |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
275 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
276 if (fDaemon) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
277 fprintf(stdout, "bitcoin server starting\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
278 strErrors = ""; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
279 int64 nStart; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
280 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
281 printf("Loading addresses...\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
282 nStart = GetTimeMillis(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
283 if (!LoadAddresses()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
284 strErrors += _("Error loading addr.dat \n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
285 printf(" addresses %15"PRI64d"ms\n", GetTimeMillis() - nStart); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
286 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
287 printf("Loading block index...\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
288 nStart = GetTimeMillis(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
289 if (!LoadBlockIndex()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
290 strErrors += _("Error loading blkindex.dat \n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
291 printf(" block index %15"PRI64d"ms\n", GetTimeMillis() - nStart); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
292 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
293 printf("Loading wallet...\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
294 nStart = GetTimeMillis(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
295 bool fFirstRun; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
296 if (!LoadWallet(fFirstRun)) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
297 strErrors += _("Error loading wallet.dat \n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
298 printf(" wallet %15"PRI64d"ms\n", GetTimeMillis() - nStart); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
299 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
300 printf("Done loading\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
301 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
302 //// debug print |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
303 printf("mapBlockIndex.size() = %d\n", mapBlockIndex.size()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
304 printf("nBestHeight = %d\n", nBestHeight); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
305 printf("mapKeys.size() = %d\n", mapKeys.size()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
306 printf("mapPubKeys.size() = %d\n", mapPubKeys.size()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
307 printf("mapWallet.size() = %d\n", mapWallet.size()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
308 printf("mapAddressBook.size() = %d\n", mapAddressBook.size()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
309 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
310 if (!strErrors.empty()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
311 { |
267
32694c9fc1c5
cleanup,
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
264
diff
changeset
|
312 wxMessageBox(strErrors, "Bitcoin", wxOK | wxICON_ERROR); |
264
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
313 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
314 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
315 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
316 // Add wallet transactions that aren't already in a block to mapTransactions |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
317 ReacceptWalletTransactions(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
318 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
319 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
320 // Parameters |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
321 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
322 if (mapArgs.count("-printblockindex") || mapArgs.count("-printblocktree")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
323 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
324 PrintBlockTree(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
325 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
326 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
327 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
328 if (mapArgs.count("-printblock")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
329 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
330 string strMatch = mapArgs["-printblock"]; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
331 int nFound = 0; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
332 for (map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.begin(); mi != mapBlockIndex.end(); ++mi) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
333 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
334 uint256 hash = (*mi).first; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
335 if (strncmp(hash.ToString().c_str(), strMatch.c_str(), strMatch.size()) == 0) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
336 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
337 CBlockIndex* pindex = (*mi).second; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
338 CBlock block; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
339 block.ReadFromDisk(pindex); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
340 block.BuildMerkleTree(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
341 block.print(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
342 printf("\n"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
343 nFound++; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
344 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
345 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
346 if (nFound == 0) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
347 printf("No blocks matching %s were found\n", strMatch.c_str()); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
348 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
349 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
350 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
351 if (mapArgs.count("-gen")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
352 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
353 if (mapArgs["-gen"].empty()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
354 fGenerateBitcoins = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
355 else |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
356 fGenerateBitcoins = (atoi(mapArgs["-gen"].c_str()) != 0); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
357 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
358 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
359 if (mapArgs.count("-proxy")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
360 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
361 fUseProxy = true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
362 addrProxy = CAddress(mapArgs["-proxy"]); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
363 if (!addrProxy.IsValid()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
364 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
365 wxMessageBox(_("Invalid -proxy address"), "Bitcoin"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
366 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
367 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
368 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
369 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
370 if (mapArgs.count("-addnode")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
371 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
372 foreach(string strAddr, mapMultiArgs["-addnode"]) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
373 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
374 CAddress addr(strAddr, NODE_NETWORK); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
375 addr.nTime = 0; // so it won't relay unless successfully connected |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
376 if (addr.IsValid()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
377 AddAddress(addr); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
378 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
379 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
380 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
381 if (mapArgs.count("-paytxfee")) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
382 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
383 if (!ParseMoney(mapArgs["-paytxfee"], nTransactionFee)) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
384 { |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
385 wxMessageBox(_("Invalid amount for -paytxfee=<amount>"), "Bitcoin"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
386 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
387 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
388 if (nTransactionFee > 1 * COIN) |
267
32694c9fc1c5
cleanup,
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
264
diff
changeset
|
389 wxMessageBox(_("Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."), "Bitcoin", wxOK | wxICON_EXCLAMATION); |
264
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
390 } |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
391 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
392 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
393 // Create the main window and start the node |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
394 // |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
395 #ifdef GUI |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
396 if (!fDaemon) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
397 CreateMainWindow(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
398 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
399 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
400 if (!CheckDiskSpace()) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
401 return false; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
402 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
403 RandAddSeedPerfmon(); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
404 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
405 if (!CreateThread(StartNode, NULL)) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
406 wxMessageBox("Error: CreateThread(StartNode) failed", "Bitcoin"); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
407 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
408 if (mapArgs.count("-server") || fDaemon) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
409 CreateThread(ThreadRPCServer, NULL); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
410 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
411 #if defined(__WXMSW__) && defined(GUI) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
412 if (fFirstRun) |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
413 SetStartOnSystemStartup(true); |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
414 #endif |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
415 |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
416 return true; |
bbd929786bd5
propset svn:eol-style native
s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
parents:
226
diff
changeset
|
417 } |