From 52c90a2b2b8d5628224e66be2dc2974c94e39fd9 Mon Sep 17 00:00:00 2001
From: Jeff Garzik <jgarzik@exmulti.com>
Date: Mon, 24 Sep 2012 13:37:03 -0400
Subject: [PATCH] Import $DataDir/bootstrap.dat automatically, if it exists.

As discussed on IRC. Intended to make using an external blockchain download
solution just a bit easier.
---
 src/init.cpp | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/init.cpp b/src/init.cpp
index dc425da64..4df12af84 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -722,7 +722,8 @@ bool AppInit2()
 
     if (mapArgs.count("-loadblock"))
     {
-        uiInterface.InitMessage(_("Importing blocks..."));
+        uiInterface.InitMessage(_("Importing blockchain data file."));
+
         BOOST_FOREACH(string strFile, mapMultiArgs["-loadblock"])
         {
             FILE *file = fopen(strFile.c_str(), "rb");
@@ -731,6 +732,18 @@ bool AppInit2()
         }
     }
 
+    filesystem::path pathBootstrap = GetDataDir() / "bootstrap.dat";
+    if (filesystem::exists(pathBootstrap)) {
+        uiInterface.InitMessage(_("Importing bootstrap blockchain data file."));
+
+        FILE *file = fopen(pathBootstrap.string().c_str(), "rb");
+        if (file) {
+            filesystem::path pathBootstrapOld = GetDataDir() / "bootstrap.dat.old";
+            LoadExternalBlockFile(file);
+            RenameOver(pathBootstrap, pathBootstrapOld);
+        }
+    }
+
     // ********************************************************* Step 9: load peers
 
     uiInterface.InitMessage(_("Loading addresses..."));