Browse Source

fix Boost deprecation warnings

warnings introduced in v1.81

# Conflicts:
#	mapeditor/resourceExtractor/ResourceConverter.cpp
Andrey Filipenkov 2 năm trước cách đây
mục cha
commit
2f14914120

+ 1 - 1
client/CPlayerInterface.cpp

@@ -1702,7 +1702,7 @@ int CPlayerInterface::getLastIndex( std::string namePrefix)
 	else
 	for (directory_iterator dir(gamesDir); dir != enddir; ++dir)
 	{
-		if (is_regular(dir->status()))
+		if (is_regular_file(dir->status()))
 		{
 			std::string name = dir->path().filename().string();
 			if (starts_with(name, namePrefix) && ends_with(name, ".vcgm1"))

+ 16 - 3
lib/filesystem/CFilesystemLoader.cpp

@@ -112,18 +112,31 @@ std::unordered_map<ResourceID, bfs::path> CFilesystemLoader::listFiles(const std
 	std::vector<bfs::path> path; //vector holding relative path to our file
 
 	bfs::recursive_directory_iterator enddir;
+#if BOOST_VERSION >= 107200 // 1.72
+	bfs::recursive_directory_iterator it(baseDirectory, bfs::directory_options::follow_directory_symlink);
+#else
 	bfs::recursive_directory_iterator it(baseDirectory, bfs::symlink_option::recurse);
+#endif
 
 	for(; it != enddir; ++it)
 	{
 		EResType::Type type;
+#if BOOST_VERSION >= 107200
+		const auto currentDepth = it.depth();
+#else
+		const auto currentDepth = it.level();
+#endif
 
 		if (bfs::is_directory(it->status()))
 		{
-			path.resize(it.level() + 1);
+			path.resize(currentDepth + 1);
 			path.back() = it->path().filename();
 			// don't iterate into directory if depth limit reached
-			it.no_push(depth <= it.level());
+#if BOOST_VERSION >= 107200
+			it.disable_recursion_pending(depth <= currentDepth);
+#else
+			it.no_push(depth <= currentDepth);
+#endif
 
 			type = EResType::DIRECTORY;
 		}
@@ -134,7 +147,7 @@ std::unordered_map<ResourceID, bfs::path> CFilesystemLoader::listFiles(const std
 		{
 			//reconstruct relative filename (not possible via boost AFAIK)
 			bfs::path filename;
-			const size_t iterations = std::min((size_t)it.level(), path.size());
+			const size_t iterations = std::min(static_cast<size_t>(currentDepth), path.size());
 			if (iterations)
 			{
 				filename = path.front();

+ 6 - 10
mapeditor/resourceExtractor/ResourceConverter.cpp

@@ -33,36 +33,32 @@ void ResourceConverter::convertExtractedResourceFiles(ConversionOptions conversi
 
 void ResourceConverter::doConvertPcxToPng(bool deleteOriginals)
 {
-	std::string filename;
-
 	bfs::path imagesPath = VCMIDirs::get().userExtractedPath() / "IMAGES";
 	bfs::directory_iterator end_iter;
 
 	for(bfs::directory_iterator dir_itr(imagesPath); dir_itr != end_iter; ++dir_itr)
 	{
+		const auto filename = dir_itr->path().filename();
 		try
 		{
 			if (!bfs::is_regular_file(dir_itr->status()))
 				return;
 
-			std::string filePath = dir_itr->path().string();
-			std::string fileStem = dir_itr->path().stem().string();
-			filename = dir_itr->path().filename().string();
-			std::string filenameLowerCase = boost::locale::to_lower(filename);
+			std::string filenameLowerCase = boost::algorithm::to_lower_copy(filename.string());
 
-			if(bfs::extension(filenameLowerCase) == ".pcx")
+			if(boost::algorithm::to_lower_copy(filename.extension().string()) == ".pcx")
 			{
 				auto img = BitmapHandler::loadBitmap(filenameLowerCase);
-				bfs::path pngFilePath = imagesPath / (fileStem + ".png");
+				bfs::path pngFilePath = imagesPath / (dir_itr->path().stem().string() + ".png");
 				img.save(pathToQString(pngFilePath), "PNG");
 
 				if(deleteOriginals)
-					bfs::remove(filePath);
+					bfs::remove(dir_itr->path());
 			}
 		}
 		catch(const std::exception & ex)
 		{
-			logGlobal->info(filename + " " + ex.what() + "\n");
+			logGlobal->info(filename.string() + " " + ex.what() + "\n");
 		}
 	}
 }