Mercurial > hg > openttd
changeset 18025:7a87d9ed25a1 draft
(svn r22834) -Codechange: unify some code, and extend it to work for other filenames that should end in a particular way
author | rubidium <rubidium@openttd.org> |
---|---|
date | Thu, 25 Aug 2011 10:24:49 +0000 |
parents | ea6373c142b4 |
children | eace4d79d513 |
files | src/fileio.cpp |
diffstat | 1 files changed, 15 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -1231,6 +1231,19 @@ return mem; } +/** + * Helper to see whether a given filename matches the extension. + * @param extension The extension to look for. + * @param filename The filename to look in for the extension. + * @return True iff the extension is NULL, or the filename ends with it. + */ +static bool MatchesExtension(const char *extension, const char *filename) +{ + if (extension == NULL) return true; + + const char *ext = strrchr(filename, extension[0]); + return ext != NULL && strcasecmp(ext, extension) == 0; +} /** * Scan a single directory (and recursively its children) and add @@ -1268,15 +1281,7 @@ num += ScanPath(fs, extension, filename, basepath_length, recursive); } else if (S_ISREG(sb.st_mode)) { /* File */ - if (extension != NULL) { - char *ext = strrchr(filename, '.'); - - /* If no extension or extension isn't .grf, skip the file */ - if (ext == NULL) continue; - if (strcasecmp(ext, extension) != 0) continue; - } - - if (fs->AddFile(filename, basepath_length)) num++; + if (MatchesExtension(extension, filename) && fs->AddFile(filename, basepath_length)) num++; } } @@ -1296,15 +1301,7 @@ uint num = 0; const char *filename = (*tar).first.c_str(); - if (extension != NULL) { - const char *ext = strrchr(filename, '.'); - - /* If no extension or extension isn't .grf, skip the file */ - if (ext == NULL) return false; - if (strcasecmp(ext, extension) != 0) return false; - } - - if (fs->AddFile(filename, 0)) num++; + if (MatchesExtension(extension, filename) && fs->AddFile(filename, 0)) num++; return num; }