mirror of https://github.com/OpenTTD/OpenTTD
(svn r10116) -Fix [FS#850]: remove invalid characters (for the file system) from savegame names. Based on a patch by TheJosh.
parent
4df44a4dff
commit
73790d9cd6
|
@ -394,3 +394,20 @@ void DeterminePaths(const char *exe)
|
||||||
FioCreateDirectory(_paths.scenario_dir);
|
FioCreateDirectory(_paths.scenario_dir);
|
||||||
FioCreateDirectory(_paths.heightmap_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);
|
bool FioCheckFileExists(const char *filename);
|
||||||
void FioCreateDirectory(const char *filename);
|
void FioCreateDirectory(const char *filename);
|
||||||
|
|
||||||
|
void SanitizeFilename(char *filename);
|
||||||
void AppendPathSeparator(char *buf, size_t buflen);
|
void AppendPathSeparator(char *buf, size_t buflen);
|
||||||
void DeterminePaths(const char *exe);
|
void DeterminePaths(const char *exe);
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include "date.h"
|
#include "date.h"
|
||||||
#include "cargotype.h"
|
#include "cargotype.h"
|
||||||
#include "player_face.h"
|
#include "player_face.h"
|
||||||
|
#include "fileio.h"
|
||||||
|
|
||||||
#include "fios.h"
|
#include "fios.h"
|
||||||
/* Variables to display file lists */
|
/* Variables to display file lists */
|
||||||
|
@ -1396,6 +1397,7 @@ static void GenerateFileName()
|
||||||
SetDParam(1, p->name_2);
|
SetDParam(1, p->name_2);
|
||||||
SetDParam(2, _date);
|
SetDParam(2, _date);
|
||||||
GetString(_edit_str_buf, STR_4004, lastof(_edit_str_buf));
|
GetString(_edit_str_buf, STR_4004, lastof(_edit_str_buf));
|
||||||
|
SanitizeFilename(_edit_str_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void StartupEngines();
|
extern void StartupEngines();
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
#include "date.h"
|
#include "date.h"
|
||||||
#include "helpers.hpp"
|
#include "helpers.hpp"
|
||||||
|
#include "fileio.h"
|
||||||
|
|
||||||
char _screenshot_format_name[8];
|
char _screenshot_format_name[8];
|
||||||
uint _num_screenshot_formats;
|
uint _num_screenshot_formats;
|
||||||
|
@ -505,6 +506,7 @@ static char *MakeScreenshotName(const char *ext)
|
||||||
GetString(_screenshot_name, STR_4004, lastof(_screenshot_name));
|
GetString(_screenshot_name, STR_4004, lastof(_screenshot_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SanitizeFilename(_screenshot_name);
|
||||||
base = strchr(_screenshot_name, 0);
|
base = strchr(_screenshot_name, 0);
|
||||||
base[0] = '.'; strcpy(base + 1, ext);
|
base[0] = '.'; strcpy(base + 1, ext);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue