bool extractPythonLibrary() { QString source(":/io/thp/pyotherside/pythonlib.zip"); QString destdir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QString destination(QDir(destdir).filePath("pythonlib.zip")); prependPythonPath(destination); if (QFile::exists(destination)) { return true; } return QFile::copy(source, destination); }
static int copy_files(const boost::program_options::variables_map &vm) { std::unique_ptr<edm::SiteLocalConfig> slcptr = std::make_unique<edm::service::SiteLocalConfigService>(edm::ParameterSet()); auto slc = std::make_shared<edm::serviceregistry::ServiceWrapper<edm::SiteLocalConfig> >(std::move(slcptr)); edm::ServiceToken slcToken = edm::ServiceRegistry::createContaining(slc); edm::ServiceRegistry::Operate operate(slcToken); auto in = (vm.count("file") ? vm["file"].as<std::vector<std::string> >() : std::vector<std::string>()); if (in.size() < 2) { std::cerr << "Not enough arguments!" << std::endl; std::cerr << "Usage: edmCopyUtil [file1] [file2] [file3] dest_dir" << std::endl; return 1; } boost::filesystem::path destdir(in.back()); in.pop_back(); if (!boost::filesystem::is_directory(destdir)) { std::cerr << "Last argument must be destination directory; " << destdir << " is not a directory!" << std::endl; return 1; } std::string catalogIn = (vm.count("catalog") ? vm["catalog"].as<std::string>() : std::string()); edm::InputFileCatalog catalog(in, catalogIn, true); std::vector<std::string> const& filesIn = catalog.fileNames(); for(unsigned int j = 0; j < in.size(); ++j) { boost::filesystem::path pathOut = destdir; pathOut /= boost::filesystem::path(in[j]).filename(); boost::filesystem::ofstream ofs; ofs.exceptions(std::ofstream::failbit | std::ofstream::badbit); ofs.open(pathOut); std::unique_ptr<Storage> s = StorageFactory::get()->open(filesIn[j]); assert(s); // StorageFactory should throw if file open fails. static unsigned int const COPYBUFSIZE = 10*1024*1024; // 10MB buffer std::vector<char> buffer; buffer.reserve(COPYBUFSIZE); IOSize n; while ((n = s->read(&buffer[0], COPYBUFSIZE))) { // Note Storage throws on error ofs.write(&buffer[0], n); } ofs.close(); s->close(); } return 0; }
bool extractPythonLibrary() { QString source(":/io/thp/pyotherside/pythonlib.zip"); QString destdir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QString destination(QDir(destdir).filePath("pythonlib.zip")); // Our embedded Python library should have priority over other path elements qputenv("PYTHONPATH", (destination + ":" + QString::fromUtf8(qgetenv("PYTHONPATH"))).toUtf8()); if (QFile::exists(destination)) { return true; } return QFile::copy(source, destination); }
bool Downloader::scanFtpDir(FtpDir *ftpDir, tstring destsubdir) { Url url(ftpDir->url); url.internetOptions = internetOptions; updateFileName(url.components.lpszUrlPath); if(!url.connect(internet)) { storeError(); return false; } if(!FtpSetCurrentDirectory(url.connection, url.components.lpszUrlPath)) { storeError(); return false; } list<tstring> dirs; WIN32_FIND_DATA fd; TRACE(_T("Scanning FTP dir %s:"), ftpDir->url.c_str()); HINTERNET handle = FtpFindFirstFile(url.connection, ftpDir->mask.c_str(), &fd, NULL, NULL); if(handle) { TRACE(_T(" (%s) %s"), (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? _T("D") : _T("F"), fd.cFileName); updateFileName(tstring(fd.cFileName)); if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { tstring dirname(fd.cFileName); if(!(dirname.compare(_T(".")) == 0) && !(dirname.compare(_T("..")) == 0)) dirs.push_back(dirname); } else { tstring fileUrl = addslash(ftpDir->url); tstring fileName = addbackslash(ftpDir->destdir); fileUrl += tstring(fd.cFileName); fileName += addbackslash(destsubdir); fileName += tstring(fd.cFileName); addFile(fileUrl, fileName, ((DWORDLONG)fd.nFileSizeHigh << 32) | fd.nFileSizeLow, ftpDir->compstr); } while(InternetFindNextFile(handle, &fd)) { TRACE(_T(" (%s) %s"), (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? _T("D") : _T("F"), fd.cFileName); updateFileName(tstring(fd.cFileName)); if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { tstring dirname(fd.cFileName); if(!(dirname.compare(_T(".")) == 0) && !(dirname.compare(_T("..")) == 0)) dirs.push_back(dirname); } else { tstring fileUrl = addslash(ftpDir->url); tstring fileName = addbackslash(ftpDir->destdir); fileUrl += tstring(fd.cFileName); fileName += addbackslash(destsubdir); fileName += tstring(fd.cFileName); addFile(fileUrl, fileName, ((DWORDLONG)fd.nFileSizeHigh << 32) | fd.nFileSizeLow, ftpDir->compstr); } } } url.disconnect(); if(ftpDir->recursive && !dirs.empty()) { for(list<tstring>::iterator i = dirs.begin(); i != dirs.end(); i++) { tstring dir = *i; tstring urlstr = addslash(ftpDir->url); urlstr += dir; FtpDir fdir(urlstr, ftpDir->mask, ftpDir->destdir, ftpDir->recursive, ftpDir->compstr); if(preserveFtpDirs) { tstring destdir(addbackslash(ftpDir->destdir)); destdir += addbackslash(destsubdir); destdir += dir; TRACE(_T("Creating directory %s"), destdir.c_str()); _tmkdir(destdir.c_str()); tstring subdir = addbackslash(destsubdir); subdir += dir; scanFtpDir(&fdir, subdir); } else scanFtpDir(&fdir); } } return true; }