OpenTTD Source
1.11.2
|
#include "core/enum_type.hpp"
#include "fileio_type.h"
#include <string>
#include <sys/types.h>
#include <dirent.h>
Go to the source code of this file.
Data Structures | |
class | FileScanner |
Helper for scanning for files with a given name. More... | |
class | TarScanner |
Helper for scanning for files with tar as extension. More... | |
class | FileCloser |
Auto-close a file upon scope exit. More... | |
struct | FileDeleter |
Helper to manage a FILE with a std::unique_ptr . More... | |
Macros | |
#define | FOR_ALL_SEARCHPATHS(sp) for (sp = SP_FIRST_DIR; sp < NUM_SEARCHPATHS; sp++) if (IsValidSearchPath(sp)) |
Iterator for all the search paths. | |
Functions | |
void | FioSeekTo (size_t pos, int mode) |
Seek in the current file. More... | |
void | FioSeekToFile (uint8 slot, size_t pos) |
Switch to a different file and seek to a position. More... | |
size_t | FioGetPos () |
Get position in the current file. More... | |
const char * | FioGetFilename (uint8 slot) |
Get the filename associated with a slot. More... | |
byte | FioReadByte () |
Read a byte from the file. More... | |
uint16 | FioReadWord () |
Read a word (16 bits) from the file (in low endian format). More... | |
uint32 | FioReadDword () |
Read a double word (32 bits) from the file (in low endian format). More... | |
void | FioCloseAll () |
Close all slotted open files. | |
void | FioOpenFile (int slot, const std::string &filename, Subdirectory subdir) |
Open a slotted file. More... | |
void | FioReadBlock (void *ptr, size_t size) |
Read a block. More... | |
void | FioSkipBytes (int n) |
Skip n bytes ahead in the file. More... | |
bool | IsValidSearchPath (Searchpath sp) |
Checks whether the given search path is a valid search path. More... | |
void | FioFCloseFile (FILE *f) |
Close a file in a safe way. | |
FILE * | FioFOpenFile (const std::string &filename, const char *mode, Subdirectory subdir, size_t *filesize=nullptr) |
Opens a OpenTTD file somewhere in a personal or global directory. More... | |
bool | FioCheckFileExists (const std::string &filename, Subdirectory subdir) |
Check whether the given file exists. More... | |
std::string | FioFindFullPath (Subdirectory subdir, const char *filename) |
Find a path to the filename in one of the search directories. More... | |
std::string | FioGetDirectory (Searchpath sp, Subdirectory subdir) |
std::string | FioFindDirectory (Subdirectory subdir) |
void | FioCreateDirectory (const std::string &name) |
Create a directory with the given name If the parent directory does not exist, it will try to create that as well. More... | |
const char * | FiosGetScreenshotDir () |
Get the directory for screenshots. More... | |
void | SanitizeFilename (char *filename) |
Sanitizes a filename, i.e. More... | |
void | AppendPathSeparator (std::string &buf) |
Appends, if necessary, the path separator character to the end of the string. More... | |
void | DeterminePaths (const char *exe) |
Acquire the base paths (personal dir and game data dir), fill all other paths (save dir, autosave dir etc) and make the save and scenario directories. More... | |
std::unique_ptr< char > | ReadFileToMem (const std::string &filename, size_t &lenp, size_t maxsize) |
Load a file into memory. More... | |
bool | FileExists (const std::string &filename) |
Test whether the given filename exists. More... | |
bool | ExtractTar (const std::string &tar_filename, Subdirectory subdir) |
Extract the tar with the given filename in the directory where the tar resides. More... | |
static DIR * | ttd_opendir (const char *path) |
A wrapper around opendir() which will convert the string from OPENTTD encoding to that of the filesystem. More... | |
Variables | |
std::string | _personal_dir |
custom directory for personal settings, saves, newgrf, etc. | |
Functions for Standard In/Out file operations
Definition in file fileio_func.h.
void AppendPathSeparator | ( | std::string & | buf | ) |
Appends, if necessary, the path separator character to the end of the string.
It does not add the path separator to zero-sized strings.
buf | string to append the separator to |
Definition at line 523 of file fileio.cpp.
Referenced by FileScanner::Scan().
void DeterminePaths | ( | const char * | exe | ) |
Acquire the base paths (personal dir and game data dir), fill all other paths (save dir, autosave dir etc) and make the save and scenario directories.
exe | the path from the current path to the executable |
Definition at line 1130 of file fileio.cpp.
References DetermineBasePaths(), and GetHomeDir().
bool ExtractTar | ( | const std::string & | tar_filename, |
Subdirectory | subdir | ||
) |
Extract the tar with the given filename in the directory where the tar resides.
tar_filename | the name of the tar to extract. |
subdir | The sub directory the tar is in. |
Definition at line 848 of file fileio.cpp.
bool FileExists | ( | const std::string & | filename | ) |
Test whether the given filename exists.
filename | the file to test. |
Definition at line 280 of file fileio.cpp.
References OTTD2FS().
bool FioCheckFileExists | ( | const std::string & | filename, |
Subdirectory | subdir | ||
) |
Check whether the given file exists.
filename | the file to try for existence. |
subdir | the subdirectory to look in |
Definition at line 266 of file fileio.cpp.
References FioFCloseFile(), and FioFOpenFile().
Referenced by FillGRFDetails(), GetMusicCatEntryData(), GetMusicCatEntryName(), GRFLoadConfig(), and SaveLoadWindow::OnTimeout().
void FioCreateDirectory | ( | const std::string & | name | ) |
Create a directory with the given name If the parent directory does not exist, it will try to create that as well.
name | the new name of the directory |
Definition at line 493 of file fileio.cpp.
std::string FioFindFullPath | ( | Subdirectory | subdir, |
const char * | filename | ||
) |
Find a path to the filename in one of the search directories.
subdir | Subdirectory to try. |
filename | Filename to look for. |
Definition at line 299 of file fileio.cpp.
References FOR_ALL_SEARCHPATHS, and NUM_SUBDIRS.
Referenced by MidiFile::GetSMFFile().
FILE* FioFOpenFile | ( | const std::string & | filename, |
const char * | mode, | ||
Subdirectory | subdir, | ||
size_t * | filesize | ||
) |
Opens a OpenTTD file somewhere in a personal or global directory.
filename | Name of the file to open. |
subdir | Subdirectory to open. |
nullptr
if the file is not available. Definition at line 406 of file fileio.cpp.
References FOR_ALL_SEARCHPATHS, NO_DIRECTORY, and NUM_SUBDIRS.
Referenced by ScriptFileChecksumCreator::AddFile(), ScenarioScanner::AddFile(), CalcGRFMD5Sum(), MD5File::CheckMD5(), GraphicsSet::CheckMD5(), FioCheckFileExists(), FioOpenFile(), GetFileTitle(), MidiFile::LoadFile(), Squirrel::LoadFile(), TextfileWindow::LoadTextfile(), IniFile::OpenFile(), ReadRawLanguageStrings(), MidiFile::ReadSMFHeader(), CrashLog::WriteCrashLog(), and MidiFile::WriteSMF().
const char* FioGetFilename | ( | uint8 | slot | ) |
Get the filename associated with a slot.
slot | Index of queried file. |
Definition at line 69 of file fileio.cpp.
References _fio, and Fio::shortnames.
Referenced by WarnCorruptSprite().
size_t FioGetPos | ( | ) |
Get position in the current file.
Definition at line 59 of file fileio.cpp.
References _fio, Fio::buffer_end, and Fio::pos.
Referenced by FioReadBlock(), FioSeekTo(), GetGRFContainerVersion(), LoadNextSprite(), and ReadGRFSpriteOffsets().
void FioOpenFile | ( | int | slot, |
const std::string & | filename, | ||
Subdirectory | subdir | ||
) |
Open a slotted file.
slot | Index to assign. |
filename | Name of the file at the disk. |
subdir | The sub directory to search this file in. |
Definition at line 196 of file fileio.cpp.
References _fio, Fio::filenames, FioCloseFile(), FioFOpenFile(), Fio::handles, and usererror().
Referenced by GetMusicCatEntryData(), GetMusicCatEntryName(), LoadGrfFile(), and LoadGrfFileIndexed().
void FioReadBlock | ( | void * | ptr, |
size_t | size | ||
) |
Read a block.
ptr | Destination buffer. |
size | Number of bytes to read. |
Definition at line 161 of file fileio.cpp.
References _fio, Fio::cur_fh, FioGetPos(), FioSeekTo(), and Fio::pos.
Referenced by GetMusicCatEntryData(), and GetMusicCatEntryName().
byte FioReadByte | ( | ) |
Read a byte from the file.
Definition at line 107 of file fileio.cpp.
References _fio, Fio::buffer_end, Fio::buffer_start, Fio::cur_fh, FIO_BUFFER_SIZE, and Fio::pos.
Referenced by DecodeSingleSprite(), FioReadWord(), FioSkipBytes(), GetGRFContainerVersion(), GetMusicCatEntryData(), GetMusicCatEntryName(), LoadGrfFile(), LoadGrfFileIndexed(), LoadNextSprite(), and SkipSpriteData().
uint32 FioReadDword | ( | ) |
Read a double word (32 bits) from the file (in low endian format).
Definition at line 150 of file fileio.cpp.
References FioReadWord().
Referenced by GetMusicCatEntryData(), GetMusicCatEntryName(), ImportGRFSound(), LoadNextSprite(), and ReadGRFSpriteOffsets().
uint16 FioReadWord | ( | ) |
Read a word (16 bits) from the file (in low endian format).
Definition at line 140 of file fileio.cpp.
References FioReadByte().
Referenced by FioReadDword(), GetGRFContainerVersion(), ImportGRFSound(), and LoadNextSprite().
void FioSeekTo | ( | size_t | pos, |
int | mode | ||
) |
Seek in the current file.
pos | New position. |
mode | Type of seek (SEEK_CUR means pos is relative to current position, SEEK_SET means pos is absolute). |
Definition at line 79 of file fileio.cpp.
References _fio, Fio::buffer_end, Fio::buffer_start, Fio::cur_fh, DEBUG, Fio::filename, FIO_BUFFER_SIZE, FioGetPos(), and Fio::pos.
Referenced by FioReadBlock(), FioSeekToFile(), GetGRFContainerVersion(), GetMusicCatEntryData(), GetMusicCatEntryName(), and ReadGRFSpriteOffsets().
void FioSeekToFile | ( | uint8 | slot, |
size_t | pos | ||
) |
Switch to a different file and seek to a position.
slot | Slot number of the new file. |
pos | New absolute position in the new file. |
Definition at line 94 of file fileio.cpp.
References _fio, Fio::cur_fh, Fio::filename, Fio::filenames, FioSeekTo(), and Fio::handles.
const char* FiosGetScreenshotDir | ( | ) |
void FioSkipBytes | ( | int | n | ) |
Skip n bytes ahead in the file.
n | Number of bytes to skip reading. |
Definition at line 124 of file fileio.cpp.
References _fio, Fio::buffer_end, and FioReadByte().
Referenced by GetMusicCatEntryData(), LoadNextSprite(), ReadGRFSpriteOffsets(), and SkipSpriteData().
bool IsValidSearchPath | ( | Searchpath | sp | ) |
Checks whether the given search path is a valid search path.
sp | the search path to check |
Definition at line 255 of file fileio.cpp.
References _searchpaths.
std::unique_ptr<char> ReadFileToMem | ( | const std::string & | filename, |
size_t & | lenp, | ||
size_t | maxsize | ||
) |
Load a file into memory.
filename | Name of the file to load. | |
[out] | lenp | Length of loaded data. |
maxsize | Maximum size to load. |
nullptr
if loading failed. Definition at line 1262 of file fileio.cpp.
Referenced by ReadLanguagePack().
void SanitizeFilename | ( | char * | filename | ) |
Sanitizes a filename, i.e.
removes all illegal characters from it.
filename | the "\0" terminated filename |
Definition at line 1240 of file fileio.cpp.
|
inlinestatic |
A wrapper around opendir() which will convert the string from OPENTTD encoding to that of the filesystem.
For all purposes this function behaves the same as the original opendir function
path | string to open directory of |
Definition at line 133 of file fileio_func.h.
Referenced by GetLanguageList().