mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 08:49:50 +00:00
(svn r22834) -Codechange: unify some code, and extend it to work for other filenames that should end in a particular way
This commit is contained in:
parent
09c3cabc1e
commit
41169291e3
@ -1231,6 +1231,19 @@ void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize)
|
||||
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 @@ static uint ScanPath(FileScanner *fs, const char *extension, const char *path, s
|
||||
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 @@ static uint ScanTar(FileScanner *fs, const char *extension, TarFileList::iterato
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user