File diff r25654:e264fd698eb2 → r25655:1030dcb7eb52
src/fileio.cpp
Show inline comments
 
@@ -418,7 +418,7 @@ uint TarScanner::DoScan(Subdirectory sd)
 

	
 
/* static */ uint TarScanner::DoScan(TarScanner::Mode mode)
 
{
 
	DEBUG(misc, 1, "Scanning for tars");
 
	Debug(misc, 1, "Scanning for tars");
 
	TarScanner fs;
 
	uint num = 0;
 
	if (mode & TarScanner::BASESET) {
 
@@ -439,7 +439,7 @@ uint TarScanner::DoScan(Subdirectory sd)
 
		num += fs.DoScan(SCENARIO_DIR);
 
		num += fs.DoScan(HEIGHTMAP_DIR);
 
	}
 
	DEBUG(misc, 1, "Scan complete, found %d files", num);
 
	Debug(misc, 1, "Scan complete, found {} files", num);
 
	return num;
 
}
 

	
 
@@ -518,7 +518,7 @@ bool TarScanner::AddFile(const std::stri
 
			/* If we have only zeros in the block, it can be an end-of-file indicator */
 
			if (memcmp(&th, &empty[0], 512) == 0) continue;
 

	
 
			DEBUG(misc, 0, "The file '%s' isn't a valid tar-file", filename.c_str());
 
			Debug(misc, 0, "The file '{}' isn't a valid tar-file", filename);
 
			fclose(f);
 
			return false;
 
		}
 
@@ -555,7 +555,7 @@ bool TarScanner::AddFile(const std::stri
 
				/* Convert to lowercase and our PATHSEPCHAR */
 
				SimplifyFileName(name);
 

	
 
				DEBUG(misc, 6, "Found file in tar: %s (" PRINTF_SIZE " bytes, " PRINTF_SIZE " offset)", name, skip, pos);
 
				Debug(misc, 6, "Found file in tar: {} ({} bytes, {} offset)", name, skip, pos);
 
				if (_tar_filelist[this->subdir].insert(TarFileList::value_type(name, entry)).second) num++;
 

	
 
				break;
 
@@ -574,7 +574,7 @@ bool TarScanner::AddFile(const std::stri
 

	
 
				/* Only allow relative links */
 
				if (link[0] == PATHSEPCHAR) {
 
					DEBUG(misc, 1, "Ignoring absolute link in tar: %s -> %s", name, link);
 
					Debug(misc, 1, "Ignoring absolute link in tar: {} -> {}", name, link);
 
					break;
 
				}
 

	
 
@@ -600,7 +600,7 @@ bool TarScanner::AddFile(const std::stri
 
					} else if (strcmp(pos, "..") == 0) {
 
						/* level up */
 
						if (dest[0] == '\0') {
 
							DEBUG(misc, 1, "Ignoring link pointing outside of data directory: %s -> %s", name, link);
 
							Debug(misc, 1, "Ignoring link pointing outside of data directory: {} -> {}", name, link);
 
							break;
 
						}
 

	
 
@@ -616,7 +616,7 @@ bool TarScanner::AddFile(const std::stri
 
					}
 

	
 
					if (destpos >= lastof(dest)) {
 
						DEBUG(misc, 0, "The length of a link in tar-file '%s' is too large (malformed?)", filename.c_str());
 
						Debug(misc, 0, "The length of a link in tar-file '{}' is too large (malformed?)", filename);
 
						fclose(f);
 
						return false;
 
					}
 
@@ -625,7 +625,7 @@ bool TarScanner::AddFile(const std::stri
 
				}
 

	
 
				/* Store links in temporary list */
 
				DEBUG(misc, 6, "Found link in tar: %s -> %s", name, dest);
 
				Debug(misc, 6, "Found link in tar: {} -> {}", name, dest);
 
				links.insert(TarLinkList::value_type(name, dest));
 

	
 
				break;
 
@@ -636,7 +636,7 @@ bool TarScanner::AddFile(const std::stri
 
				SimplifyFileName(name);
 

	
 
				/* Store the first directory name we detect */
 
				DEBUG(misc, 6, "Found dir in tar: %s", name);
 
				Debug(misc, 6, "Found dir in tar: {}", name);
 
				if (_tar_list[this->subdir][filename].empty()) _tar_list[this->subdir][filename] = name;
 
				break;
 

	
 
@@ -648,14 +648,14 @@ bool TarScanner::AddFile(const std::stri
 
		/* Skip to the next block.. */
 
		skip = Align(skip, 512);
 
		if (fseek(f, skip, SEEK_CUR) < 0) {
 
			DEBUG(misc, 0, "The file '%s' can't be read as a valid tar-file", filename.c_str());
 
			Debug(misc, 0, "The file '{}' can't be read as a valid tar-file", filename);
 
			fclose(f);
 
			return false;
 
		}
 
		pos += skip;
 
	}
 

	
 
	DEBUG(misc, 1, "Found tar '%s' with " PRINTF_SIZE " new files", filename.c_str(), num);
 
	Debug(misc, 1, "Found tar '{}' with {} new files", filename, num);
 
	fclose(f);
 

	
 
	/* Resolve file links and store directory links.
 
@@ -693,7 +693,7 @@ bool ExtractTar(const std::string &tar_f
 

	
 
	/* The file doesn't have a sub directory! */
 
	if (dirname.empty()) {
 
		DEBUG(misc, 1, "Extracting %s failed; archive rejected, the contents must be in a sub directory", tar_filename.c_str());
 
		Debug(misc, 1, "Extracting {} failed; archive rejected, the contents must be in a sub directory", tar_filename);
 
		return false;
 
	}
 

	
 
@@ -703,7 +703,7 @@ bool ExtractTar(const std::string &tar_f
 
	if (p == std::string::npos) return false;
 

	
 
	filename.replace(p + 1, std::string::npos, dirname);
 
	DEBUG(misc, 8, "Extracting %s to directory %s", tar_filename.c_str(), filename.c_str());
 
	Debug(misc, 8, "Extracting {} to directory {}", tar_filename, filename);
 
	FioCreateDirectory(filename);
 

	
 
	for (TarFileList::iterator it2 = _tar_filelist[subdir].begin(); it2 != _tar_filelist[subdir].end(); it2++) {
 
@@ -711,20 +711,20 @@ bool ExtractTar(const std::string &tar_f
 

	
 
		filename.replace(p + 1, std::string::npos, it2->first);
 

	
 
		DEBUG(misc, 9, "  extracting %s", filename.c_str());
 
		Debug(misc, 9, "  extracting {}", filename);
 

	
 
		/* First open the file in the .tar. */
 
		size_t to_copy = 0;
 
		std::unique_ptr<FILE, FileDeleter> in(FioFOpenFileTar(it2->second, &to_copy));
 
		if (!in) {
 
			DEBUG(misc, 6, "Extracting %s failed; could not open %s", filename.c_str(), tar_filename.c_str());
 
			Debug(misc, 6, "Extracting {} failed; could not open {}", filename, tar_filename);
 
			return false;
 
		}
 

	
 
		/* Now open the 'output' file. */
 
		std::unique_ptr<FILE, FileDeleter> out(fopen(filename.c_str(), "wb"));
 
		if (!out) {
 
			DEBUG(misc, 6, "Extracting %s failed; could not open %s", filename.c_str(), filename.c_str());
 
			Debug(misc, 6, "Extracting {} failed; could not open {}", filename, filename);
 
			return false;
 
		}
 

	
 
@@ -737,12 +737,12 @@ bool ExtractTar(const std::string &tar_f
 
		}
 

	
 
		if (to_copy != 0) {
 
			DEBUG(misc, 6, "Extracting %s failed; still %i bytes to copy", filename.c_str(), (int)to_copy);
 
			Debug(misc, 6, "Extracting {} failed; still {} bytes to copy", filename, to_copy);
 
			return false;
 
		}
 
	}
 

	
 
	DEBUG(misc, 9, "  extraction successful");
 
	Debug(misc, 9, "  extraction successful");
 
	return true;
 
}
 

	
 
@@ -778,7 +778,7 @@ static bool ChangeWorkingDirectoryToExec
 
	if (s != nullptr) {
 
		*s = '\0';
 
		if (chdir(tmp) != 0) {
 
			DEBUG(misc, 0, "Directory with the binary does not exist?");
 
			Debug(misc, 0, "Directory with the binary does not exist?");
 
		} else {
 
			success = true;
 
		}
 
@@ -937,7 +937,7 @@ void DetermineBasePaths(const char *exe)
 
	if (cwd[0] != '\0') {
 
		/* Go back to the current working directory. */
 
		if (chdir(cwd) != 0) {
 
			DEBUG(misc, 0, "Failed to return to working directory!");
 
			Debug(misc, 0, "Failed to return to working directory!");
 
		}
 
	}
 

	
 
@@ -990,7 +990,7 @@ void DeterminePaths(const char *exe, boo
 

	
 
	for (Searchpath sp : _valid_searchpaths) {
 
		if (sp == SP_WORKING_DIR && !_do_scan_working_directory) continue;
 
		DEBUG(misc, 4, "%s added as search path", _searchpaths[sp].c_str());
 
		Debug(misc, 4, "{} added as search path", _searchpaths[sp]);
 
	}
 

	
 
	std::string config_dir;
 
@@ -1023,7 +1023,7 @@ void DeterminePaths(const char *exe, boo
 
		_config_file = config_dir + "openttd.cfg";
 
	}
 

	
 
	DEBUG(misc, 3, "%s found as config directory", config_dir.c_str());
 
	Debug(misc, 3, "{} found as config directory", config_dir);
 

	
 
	_highscore_file = config_dir + "hs.dat";
 
	extern std::string _hotkeys_file;
 
@@ -1055,7 +1055,7 @@ void DeterminePaths(const char *exe, boo
 
	FioCreateDirectory(_personal_dir);
 
#endif
 

	
 
	DEBUG(misc, 3, "%s found as personal directory", _personal_dir.c_str());
 
	Debug(misc, 3, "{} found as personal directory", _personal_dir);
 

	
 
	static const Subdirectory default_subdirs[] = {
 
		SAVE_DIR, AUTOSAVE_DIR, SCENARIO_DIR, HEIGHTMAP_DIR, BASESET_DIR, NEWGRF_DIR, AI_DIR, AI_LIBRARY_DIR, GAME_DIR, GAME_LIBRARY_DIR, SCREENSHOT_DIR
 
@@ -1067,7 +1067,7 @@ void DeterminePaths(const char *exe, boo
 

	
 
	/* If we have network we make a directory for the autodownloading of content */
 
	_searchpaths[SP_AUTODOWNLOAD_DIR] = _personal_dir + "content_download" PATHSEP;
 
	DEBUG(misc, 4, "%s added as search path", _searchpaths[SP_AUTODOWNLOAD_DIR].c_str());
 
	Debug(misc, 4, "{} added as search path", _searchpaths[SP_AUTODOWNLOAD_DIR]);
 
	FioCreateDirectory(_searchpaths[SP_AUTODOWNLOAD_DIR]);
 
	FillValidSearchPaths(only_local_path);