Changeset - r6875:4b8e730c2c52
[Not reviewed]
master
0 4 0
rubidium - 17 years ago 2007-06-12 15:46:34
rubidium@openttd.org
(svn r10116) -Fix [FS#850]: remove invalid characters (for the file system) from savegame names. Based on a patch by TheJosh.
4 files changed with 22 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/fileio.cpp
Show inline comments
 
@@ -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;
 
		}
 
	}
 
}
src/fileio.h
Show inline comments
 
@@ -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);
 

	
src/misc_gui.cpp
Show inline comments
 
@@ -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();
src/screenshot.cpp
Show inline comments
 
@@ -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 ch
 
		GetString(_screenshot_name, STR_4004, lastof(_screenshot_name));
 
	}
 

	
 
	SanitizeFilename(_screenshot_name);
 
	base = strchr(_screenshot_name, 0);
 
	base[0] = '.'; strcpy(base + 1, ext);
 

	
0 comments (0 inline, 0 general)