Changeset - r13621:89482295b0bb
[Not reviewed]
master
0 3 0
smatz - 15 years ago 2009-11-17 23:08:55
smatz@openttd.org
(svn r18155) -Codechange: in MakeScreenshotName(), don't return pointer to local static variable - use global one instead
2 files changed with 11 insertions and 9 deletions:
0 comments (0 inline, 0 general)
src/screenshot.cpp
Show inline comments
 
@@ -27,6 +27,7 @@ char _screenshot_format_name[8];
 
uint _num_screenshot_formats;
 
uint _cur_screenshot_format;
 
char _screenshot_name[128];
 
char _full_screenshot_name[MAX_PATH];
 
static ScreenshotType _screenshot_type;
 

	
 
/* called by the ScreenShot proc to generate screenshot lines. */
 
@@ -585,20 +586,19 @@ static const char *MakeScreenshotName(co
 
	size_t len = strlen(_screenshot_name);
 
	snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, ".%s", ext);
 

	
 
	static char filename[MAX_PATH];
 
	for (uint serial = 1;; serial++) {
 
		if (snprintf(filename, lengthof(filename), "%s%s", _personal_dir, _screenshot_name) >= (int)lengthof(filename)) {
 
		if (snprintf(_full_screenshot_name, lengthof(_full_screenshot_name), "%s%s", _personal_dir, _screenshot_name) >= (int)lengthof(_full_screenshot_name)) {
 
			/* We need more characters than MAX_PATH -> end with error */
 
			filename[0] = '\0';
 
			_full_screenshot_name[0] = '\0';
 
			break;
 
		}
 
		if (!generate) break; // allow overwriting of non-automatic filenames
 
		if (!FileExists(filename)) break;
 
		if (!FileExists(_full_screenshot_name)) break;
 
		/* If file exists try another one with same name, but just with a higher index */
 
		snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, "#%u.%s", serial, ext);
 
	}
 

	
 
	return filename;
 
	return _full_screenshot_name;
 
}
 

	
 
void RequestScreenshot(ScreenshotType t, const char *name)
src/screenshot.h
Show inline comments
 
@@ -17,10 +17,11 @@ void InitializeScreenshotFormats();
 
const char *GetScreenshotFormatDesc(int i);
 
void SetScreenshotFormat(int i);
 

	
 
/** Type of requested screenshot */
 
enum ScreenshotType {
 
	SC_NONE,
 
	SC_VIEWPORT,
 
	SC_WORLD
 
	SC_NONE,     ///< No screenshot requested
 
	SC_VIEWPORT, ///< Screenshot of viewport
 
	SC_WORLD,    ///< World screenshot
 
};
 

	
 
bool MakeScreenshot();
 
@@ -30,6 +31,7 @@ bool IsScreenshotRequested();
 
extern char _screenshot_format_name[8];
 
extern uint _num_screenshot_formats;
 
extern uint _cur_screenshot_format;
 
extern char _screenshot_name[];
 
extern char _screenshot_name[128];
 
extern char _full_screenshot_name[MAX_PATH];
 

	
 
#endif /* SCREENSHOT_H */
0 comments (0 inline, 0 general)