message: avoid use of boost copy_file since it has incompatibilities with c++11 in certain versions of boost.  the original code is left commented out so we can put it back when distros advance to compatible boost versions
diff: #include <boost/foreach.hpp>
  #include <boost/scoped_ptr.hpp>
  #include <boost/thread.hpp>
  +#include <fstream>
  using namespace std;
  @@ -925,6 +926,7 @@ bool BackupWallet(const CWallet& wallet, const string& strDest)
  if (boost::filesystem::is_directory(pathDest))
  pathDest /= wallet.strWalletFile;
  +#if 0 // BU copy_file does not work with c++11, due to a link error in many versions of boost
  try {
  #if BOOST_VERSION >= 104000
  boost::filesystem::copy_file(pathSrc, pathDest, boost::filesystem::copy_option::overwrite_if_exists);
  @@ -937,6 +939,28 @@ bool BackupWallet(const CWallet& wallet, const string& strDest)
  LogPrintf("error copying wallet.dat to %s - %s\n", pathDest.string(), e.what());
  return false;
  }
  +#else
  + try {
  + ifstream source(pathSrc.string(), ios::binary);
  + ofstream dest(pathDest.string(), ios::binary);
  + if (!source)
  + {
  + LogPrintf("error opening source wallet file %s\n", pathSrc.string());
  + return false;
  + }
  + if (!dest)
  + {
  + LogPrintf("error opening destination wallet file %s\n", pathDest.string());
  + return false;
  + }
  + dest << source.rdbuf();
  + return true;
  + }
  + catch (std::ios_base::failure& e) {
  + LogPrintf("error copying wallet from %s to %s - %s\n", pathSrc.string(), pathDest.string(), e.what());
  + return false;
  + }
  +#endif
  }
  }
  MilliSleep(100);
  