OpenTTD
Data Structures | Typedefs | Functions | Variables
fios.cpp File Reference

This file contains functions for building file lists for the save/load dialogs. More...

#include "stdafx.h"
#include "fios.h"
#include "fileio_func.h"
#include "tar_type.h"
#include "screenshot.h"
#include "string_func.h"
#include <sys/stat.h>
#include <unistd.h>
#include "table/strings.h"
#include "safeguards.h"
#include "network/network_content.h"
#include "3rdparty/md5/md5.h"

Go to the source code of this file.

Data Structures

class  FiosFileScanner
 Scanner to scan for a particular type of FIOS file. More...
 
struct  ScenarioIdentifier
 Basic data to distinguish a scenario. More...
 
class  ScenarioScanner
 Scanner to find the unique IDs of scenarios. More...
 

Typedefs

typedef FiosType fios_getlist_callback_proc(SaveLoadOperation fop, const char *filename, const char *ext, char *title, const char *last)
 

Functions

bool FiosIsRoot (const char *path)
 
bool FiosIsValidFile (const char *path, const struct dirent *ent, struct stat *sb)
 
bool FiosIsHiddenFile (const struct dirent *ent)
 
void FiosGetDrives (FileList &file_list)
 
bool FiosGetDiskFreeSpace (const char *path, uint64 *tot)
 
void GetOldSaveGameName (const char *file, char *title, const char *last)
 
int CDECL CompareFiosItems (const FiosItem *da, const FiosItem *db)
 Compare two FiosItem's. More...
 
StringID FiosGetDescText (const char **path, uint64 *total_free)
 Get descriptive texts. More...
 
const char * FiosBrowseTo (const FiosItem *item)
 Browse to a new path based on the passed item, starting at #_fios_path. More...
 
static void FiosMakeFilename (char *buf, const char *path, const char *name, const char *ext, const char *last)
 Construct a filename from its components in destination buffer buf. More...
 
void FiosMakeSavegameName (char *buf, const char *name, const char *last)
 Make a save game or scenario filename from a name. More...
 
void FiosMakeHeightmapName (char *buf, const char *name, const char *last)
 Construct a filename for a height map. More...
 
bool FiosDelete (const char *name)
 Delete a file. More...
 
static void FiosGetFileList (SaveLoadOperation fop, fios_getlist_callback_proc *callback_proc, Subdirectory subdir, FileList &file_list)
 Fill the list of the files in a directory, according to some arbitrary rule. More...
 
static void GetFileTitle (const char *file, char *title, const char *last, Subdirectory subdir)
 Get the title of a file, which (if exists) is stored in a file named the same as the data file but with '.title' added to it. More...
 
FiosType FiosGetSavegameListCallback (SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last)
 Callback for FiosGetFileList. More...
 
void FiosGetSavegameList (SaveLoadOperation fop, FileList &file_list)
 Get a list of savegames. More...
 
static FiosType FiosGetScenarioListCallback (SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last)
 Callback for FiosGetFileList. More...
 
void FiosGetScenarioList (SaveLoadOperation fop, FileList &file_list)
 Get a list of scenarios. More...
 
static FiosType FiosGetHeightmapListCallback (SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last)
 
void FiosGetHeightmapList (SaveLoadOperation fop, FileList &file_list)
 Get a list of heightmaps. More...
 
const char * FiosGetScreenshotDir ()
 Get the directory for screenshots. More...
 
const char * FindScenario (const ContentInfo *ci, bool md5sum)
 Find a given scenario based on its unique ID. More...
 
bool HasScenario (const ContentInfo *ci, bool md5sum)
 Check whether we've got a given scenario based on its unique ID. More...
 
void ScanScenarios ()
 Force a (re)scan of the scenarios.
 

Variables

static char * _fios_path
 
static const char * _fios_path_last
 
SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING
 
static ScenarioScanner _scanner
 Scanner for scenarios.
 

Detailed Description

This file contains functions for building file lists for the save/load dialogs.

Definition in file fios.cpp.

Function Documentation

◆ CompareFiosItems()

int CDECL CompareFiosItems ( const FiosItem da,
const FiosItem db 
)

Compare two FiosItem's.

Used with sort when sorting the file list.

Parameters
daA pointer to the first FiosItem to compare.
dbA pointer to the second FiosItem to compare.
Returns
-1, 0 or 1, depending on how the two items should be sorted.

Definition at line 52 of file fios.cpp.

◆ FindScenario()

const char* FindScenario ( const ContentInfo ci,
bool  md5sum 
)

Find a given scenario based on its unique ID.

Parameters
ciThe content info to compare it to.
md5sumWhether to look at the md5sum or the id.
Returns
The filename of the file, else NULL.

Definition at line 746 of file fios.cpp.

References SmallVector< T, S >::Begin(), SmallVector< T, S >::End(), ContentInfo::md5sum, ScenarioScanner::Scan(), and ContentInfo::unique_id.

Referenced by HasScenario().

◆ FiosBrowseTo()

const char* FiosBrowseTo ( const FiosItem item)

Browse to a new path based on the passed item, starting at #_fios_path.

Parameters
*itemItem telling us what to do.
Returns
A filename w/path if we reached a file, otherwise NULL.

Definition at line 152 of file fios.cpp.

Referenced by DEF_CONSOLE_CMD().

◆ FiosDelete()

bool FiosDelete ( const char *  name)

Delete a file.

Parameters
nameFilename to delete.
Returns
Whether the file deletion was successful.

Definition at line 270 of file fios.cpp.

References FiosMakeSavegameName(), and lastof.

Referenced by DEF_CONSOLE_CMD(), and SaveLoadWindow::OnTimeout().

◆ FiosGetDescText()

StringID FiosGetDescText ( const char **  path,
uint64 *  total_free 
)

Get descriptive texts.

Returns the path and free space left on the device

Parameters
pathstring describing the path
total_freetotal free space in megabytes, optional (can be NULL)
Returns
StringID describing the path (free space or failure)

Definition at line 141 of file fios.cpp.

◆ FiosGetFileList()

static void FiosGetFileList ( SaveLoadOperation  fop,
fios_getlist_callback_proc *  callback_proc,
Subdirectory  subdir,
FileList file_list 
)
static

Fill the list of the files in a directory, according to some arbitrary rule.

Parameters
fopPurpose of collecting the list.
callback_procThe function that is called where you need to do the filtering.
subdirThe directory from where to start (global) searching.
file_listDestination of the found files.

Definition at line 358 of file fios.cpp.

◆ FiosGetHeightmapList()

void FiosGetHeightmapList ( SaveLoadOperation  fop,
FileList file_list 
)

Get a list of heightmaps.

Parameters
fopPurpose of collecting the list.
file_listDestination of the found files.

Definition at line 619 of file fios.cpp.

◆ FiosGetSavegameList()

void FiosGetSavegameList ( SaveLoadOperation  fop,
FileList file_list 
)

Get a list of savegames.

Parameters
fopPurpose of collecting the list.
file_listDestination of the found files.
See also
FiosGetFileList

Definition at line 493 of file fios.cpp.

◆ FiosGetSavegameListCallback()

FiosType FiosGetSavegameListCallback ( SaveLoadOperation  fop,
const char *  file,
const char *  ext,
char *  title,
const char *  last 
)

Callback for FiosGetFileList.

It tells if a file is a savegame or not.

Parameters
fopPurpose of collecting the list.
fileName of the file to check.
extA pointer to the extension identifier inside file
titleBuffer if a callback wants to lookup the title of the file; NULL to skip the lookup
lastLast available byte in buffer (to prevent buffer overflows); not used when title == NULL
Returns
a FIOS_TYPE_* type of the found file, FIOS_TYPE_INVALID if not a savegame
See also
FiosGetFileList
FiosGetSavegameList

Definition at line 460 of file fios.cpp.

◆ FiosGetScenarioList()

void FiosGetScenarioList ( SaveLoadOperation  fop,
FileList file_list 
)

Get a list of scenarios.

Parameters
fopPurpose of collecting the list.
file_listDestination of the found files.
See also
FiosGetFileList

Definition at line 548 of file fios.cpp.

◆ FiosGetScenarioListCallback()

static FiosType FiosGetScenarioListCallback ( SaveLoadOperation  fop,
const char *  file,
const char *  ext,
char *  title,
const char *  last 
)
static

Callback for FiosGetFileList.

It tells if a file is a scenario or not.

Parameters
fopPurpose of collecting the list.
fileName of the file to check.
extA pointer to the extension identifier inside file
titleBuffer if a callback wants to lookup the title of the file
lastLast available byte in buffer (to prevent buffer overflows)
Returns
a FIOS_TYPE_* type of the found file, FIOS_TYPE_INVALID if not a scenario
See also
FiosGetFileList
FiosGetScenarioList

Definition at line 521 of file fios.cpp.

References GetFileTitle(), and SCENARIO_DIR.

◆ FiosGetScreenshotDir()

const char* FiosGetScreenshotDir ( )

Get the directory for screenshots.

Returns
path to screenshots

Definition at line 644 of file fios.cpp.

◆ FiosMakeFilename()

static void FiosMakeFilename ( char *  buf,
const char *  path,
const char *  name,
const char *  ext,
const char *  last 
)
static

Construct a filename from its components in destination buffer buf.

Parameters
bufDestination buffer.
pathDirectory path, may be NULL.
nameFilename.
extFilename extension (use "" for no extension).
lastLast element of buffer buf.

Definition at line 213 of file fios.cpp.

References seprintf().

Referenced by FiosMakeHeightmapName().

◆ FiosMakeHeightmapName()

void FiosMakeHeightmapName ( char *  buf,
const char *  name,
const char *  last 
)

Construct a filename for a height map.

Parameters
bufDestination buffer.
nameFilename.
lastLast element of buffer buf.

Definition at line 256 of file fios.cpp.

References FiosMakeFilename(), GetCurrentScreenshotExtension(), lastof, and strecpy().

Referenced by SaveLoadWindow::OnTimeout().

◆ FiosMakeSavegameName()

void FiosMakeSavegameName ( char *  buf,
const char *  name,
const char *  last 
)

Make a save game or scenario filename from a name.

Parameters
bufDestination buffer for saving the filename.
nameName of the file.
lastLast element of buffer buf.

Definition at line 243 of file fios.cpp.

Referenced by FiosDelete(), and SaveLoadWindow::OnTimeout().

◆ GetFileTitle()

static void GetFileTitle ( const char *  file,
char *  title,
const char *  last,
Subdirectory  subdir 
)
static

Get the title of a file, which (if exists) is stored in a file named the same as the data file but with '.title' added to it.

Parameters
filefilename to get the title for
titlethe title buffer to fill
lastthe last element in the title buffer
subdirthe sub directory to search in

Definition at line 433 of file fios.cpp.

Referenced by FiosGetScenarioListCallback().

◆ HasScenario()

bool HasScenario ( const ContentInfo ci,
bool  md5sum 
)

Check whether we've got a given scenario based on its unique ID.

Parameters
ciThe content info to compare it to.
md5sumWhether to look at the md5sum or the id.
Returns
True iff we've got the scenario.

Definition at line 766 of file fios.cpp.

References FindScenario().

Referenced by ClientNetworkContentSocketHandler::Receive_SERVER_INFO().