// Luanti // SPDX-License-Identifier: LGPL-2.1-or-later // Copyright (C) 2013 celeron55, Perttu Ahola // Copyright (C) 2013 Jonathan Neuschäfer #include "filecache.h" #include "log.h" #include "filesys.h" #include #include #include #include void FileCache::createDir() { if (!fs::CreateAllDirs(m_dir)) { errorstream << "Could not create cache directory: " << m_dir << std::endl; } } bool FileCache::loadByPath(const std::string &path, std::ostream &os) { auto fis = open_ifstream(path.c_str(), false); if (!fis.good()) return false; bool bad = false; for(;;){ char buf[4096]; fis.read(buf, sizeof(buf)); std::streamsize len = fis.gcount(); os.write(buf, len); if(fis.eof()) break; if(!fis.good()){ bad = true; break; } } if(bad){ errorstream<<"FileCache: Failed to read file from cache: \"" <