OpenTTD Source 20241224-master-gf74b0cf984
TarScanner Class Reference

Helper for scanning for files with tar as extension. More...

#include <fileio_func.h>

Inheritance diagram for TarScanner:
FileScanner

Public Types

enum  Mode {
  NONE = 0 , BASESET = 1 << 0 , NEWGRF = 1 << 1 , AI = 1 << 2 ,
  SCENARIO = 1 << 3 , GAME = 1 << 4 , ALL = BASESET | NEWGRF | AI | SCENARIO | GAME
}
 The mode of tar scanning. More...
 

Public Member Functions

bool AddFile (const std::string &filename, size_t basepath_length, const std::string &tar_filename={}) override
 Add a file with the given filename.
 
bool AddFile (Subdirectory sd, const std::string &filename)
 Add a single file to the scanned files of a tar, circumventing the scanning code.
 

Static Public Member Functions

static uint DoScan (TarScanner::Mode mode)
 Do the scan for Tars.
 

Private Member Functions

uint DoScan (Subdirectory sd)
 Perform the scanning of a particular subdirectory.
 
- Private Member Functions inherited from FileScanner
virtual ~FileScanner ()=default
 Destruct the proper one...
 
uint Scan (std::string_view extension, Subdirectory sd, bool tars=true, bool recursive=true)
 Scan for files with the given extension in the given search path.
 
uint Scan (std::string_view extension, const std::string &directory, bool recursive=true)
 Scan for files with the given extension in the given search path.
 

Additional Inherited Members

- Private Attributes inherited from FileScanner
Subdirectory subdir
 The current sub directory we are searching through.
 

Detailed Description

Helper for scanning for files with tar as extension.

Definition at line 59 of file fileio_func.h.

Member Enumeration Documentation

◆ Mode

The mode of tar scanning.

Enumerator
NONE 

Scan nothing.

BASESET 

Scan for base sets.

NEWGRF 

Scan for non-base sets.

AI 

Scan for AIs and its libraries.

SCENARIO 

Scan for scenarios and heightmaps.

GAME 

Scan for game scripts.

ALL 

Scan for everything.

Definition at line 63 of file fileio_func.h.

Member Function Documentation

◆ AddFile() [1/2]

bool TarScanner::AddFile ( const std::string &  filename,
size_t  basepath_length,
const std::string &  tar_filename = {} 
)
overridevirtual

Add a file with the given filename.

Parameters
filenamethe full path to the file to read
basepath_lengthamount of characters to chop of before to get a filename relative to the search path.
tar_filenamethe name of the tar file the file is read from.
Returns
true if the file is added.

< Name of the file

< Size of the file, in ASCII octals

< Path of the file

Implements FileScanner.

Definition at line 438 of file fileio.cpp.

References Align(), Debug, ExtractString(), FS2OTTD(), FileHandle::Open(), OTTD2FS(), SimplifyFileName(), StrTrimInPlace(), and FileScanner::subdir.

Referenced by AddFile(), and ClientNetworkContentSocketHandler::AfterDownload().

◆ AddFile() [2/2]

bool TarScanner::AddFile ( Subdirectory  sd,
const std::string &  filename 
)

Add a single file to the scanned files of a tar, circumventing the scanning code.

Parameters
sdThe sub directory the file is in.
filenameThe name of the file to add.
Returns
True if the additions went correctly.

Definition at line 417 of file fileio.cpp.

References AddFile().

◆ DoScan() [1/2]

uint TarScanner::DoScan ( Subdirectory  sd)
private

Perform the scanning of a particular subdirectory.

Parameters
sdThe subdirectory to scan.
Returns
The number of found tar files.

Definition at line 375 of file fileio.cpp.

References BASESET_DIR, NEWGRF_DIR, OLD_DATA_DIR, and FileScanner::Scan().

Referenced by NetworkContentDownloadStatusWindow::Close(), DoScan(), DoScanNewGRFFiles(), AI::Initialize(), Game::Initialize(), AfterNewGRFScan::OnNewGRFsScanned(), openttd_main(), and AI::Rescan().

◆ DoScan() [2/2]

uint TarScanner::DoScan ( TarScanner::Mode  mode)
static

Do the scan for Tars.

Definition at line 384 of file fileio.cpp.

References AI, AI_DIR, AI_LIBRARY_DIR, BASESET, BASESET_DIR, Debug, DoScan(), GAME, GAME_DIR, GAME_LIBRARY_DIR, HEIGHTMAP_DIR, NEWGRF, NEWGRF_DIR, SCENARIO, and SCENARIO_DIR.


The documentation for this class was generated from the following files: