mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-02 09:40:35 +00:00
(svn r10116) -Fix [FS#850]: remove invalid characters (for the file system) from savegame names. Based on a patch by TheJosh.
This commit is contained in:
parent
443db4bb2e
commit
60d738f23a
@ -394,3 +394,20 @@ void DeterminePaths(const char *exe)
|
||||
FioCreateDirectory(_paths.scenario_dir);
|
||||
FioCreateDirectory(_paths.heightmap_dir);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitizes a filename, i.e. removes all illegal characters from it.
|
||||
* @param filename the "\0" terminated filename
|
||||
*/
|
||||
void SanitizeFilename(char *filename)
|
||||
{
|
||||
for (; *filename != '\0'; filename++) {
|
||||
switch (*filename) {
|
||||
/* The following characters are not allowed in filenames
|
||||
* on at least one of the supported operating systems: */
|
||||
case ':': case '\\': case '*': case '?': case '/':
|
||||
*filename = '_';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ FILE *FioFOpenFile(const char *filename);
|
||||
bool FioCheckFileExists(const char *filename);
|
||||
void FioCreateDirectory(const char *filename);
|
||||
|
||||
void SanitizeFilename(char *filename);
|
||||
void AppendPathSeparator(char *buf, size_t buflen);
|
||||
void DeterminePaths(const char *exe);
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "date.h"
|
||||
#include "cargotype.h"
|
||||
#include "player_face.h"
|
||||
#include "fileio.h"
|
||||
|
||||
#include "fios.h"
|
||||
/* Variables to display file lists */
|
||||
@ -1396,6 +1397,7 @@ static void GenerateFileName()
|
||||
SetDParam(1, p->name_2);
|
||||
SetDParam(2, _date);
|
||||
GetString(_edit_str_buf, STR_4004, lastof(_edit_str_buf));
|
||||
SanitizeFilename(_edit_str_buf);
|
||||
}
|
||||
|
||||
extern void StartupEngines();
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "variables.h"
|
||||
#include "date.h"
|
||||
#include "helpers.hpp"
|
||||
#include "fileio.h"
|
||||
|
||||
char _screenshot_format_name[8];
|
||||
uint _num_screenshot_formats;
|
||||
@ -505,6 +506,7 @@ static char *MakeScreenshotName(const char *ext)
|
||||
GetString(_screenshot_name, STR_4004, lastof(_screenshot_name));
|
||||
}
|
||||
|
||||
SanitizeFilename(_screenshot_name);
|
||||
base = strchr(_screenshot_name, 0);
|
||||
base[0] = '.'; strcpy(base + 1, ext);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user