From 84f7fc32fa5b9dd6d195d45fe67c55c80037a955 Mon Sep 17 00:00:00 2001 From: alberth Date: Sat, 28 May 2011 13:54:42 +0000 Subject: [PATCH] (svn r22510) -Codechange: Extract filepath creation to its own function. --- src/fios.cpp | 55 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/src/fios.cpp b/src/fios.cpp index 97eb13b185..b51b7c9195 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -140,6 +140,38 @@ const char *FiosBrowseTo(const FiosItem *item) return NULL; } +/** + * Construct a filename from its components in destination buffer \a buf. + * @param buf Destination buffer. + * @param path Directory path, may be \c NULL. + * @param name Filename. + * @param ext Filename extension (use \c "" for no extension). + * @param size Size of \a buf. + */ +static void FiosMakeFilename(char *buf, const char *path, const char *name, const char *ext, size_t size) +{ + const char *period; + + /* Don't append the extension if it is already there */ + period = strrchr(name, '.'); + if (period != NULL && strcasecmp(period, ext) == 0) ext = ""; +#if defined(__MORPHOS__) || defined(__AMIGAOS__) + if (path != NULL) { + unsigned char sepchar = path[(strlen(path) - 1)]; + + if (sepchar != ':' && sepchar != '/') { + snprintf(buf, size, "%s" PATHSEP "%s%s", path, name, ext); + } else { + snprintf(buf, size, "%s%s%s", path, name, ext); + } + } else { + snprintf(buf, size, "%s%s", name, ext); + } +#else + snprintf(buf, size, "%s" PATHSEP "%s%s", path, name, ext); +#endif +} + /** * Make a save game or scenario filename from a name. * @param buf Destination buffer for saving the filename. @@ -148,28 +180,9 @@ const char *FiosBrowseTo(const FiosItem *item) */ void FiosMakeSavegameName(char *buf, const char *name, size_t size) { - const char *extension, *period; + const char *extension = (_game_mode == GM_EDITOR) ? ".scn" : ".sav"; - extension = (_game_mode == GM_EDITOR) ? ".scn" : ".sav"; - - /* Don't append the extension if it is already there */ - period = strrchr(name, '.'); - if (period != NULL && strcasecmp(period, extension) == 0) extension = ""; -#if defined(__MORPHOS__) || defined(__AMIGAOS__) - if (_fios_path != NULL) { - unsigned char sepchar = _fios_path[(strlen(_fios_path) - 1)]; - - if (sepchar != ':' && sepchar != '/') { - snprintf(buf, size, "%s" PATHSEP "%s%s", _fios_path, name, extension); - } else { - snprintf(buf, size, "%s%s%s", _fios_path, name, extension); - } - } else { - snprintf(buf, size, "%s%s", name, extension); - } -#else - snprintf(buf, size, "%s" PATHSEP "%s%s", _fios_path, name, extension); -#endif + FiosMakeFilename(buf, _fios_path, name, extension, size); } /**