diff options
Diffstat (limited to 'common/file.cpp')
-rw-r--r-- | common/file.cpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/common/file.cpp b/common/file.cpp index ccfeb5f322..7fe2e1b655 100644 --- a/common/file.cpp +++ b/common/file.cpp @@ -146,54 +146,53 @@ static StringMap *_filesMap; static FILE *fopenNoCase(const String &filename, const String &directory, const char *mode) { FILE *file; - String buf(directory); - uint i; + String dirBuf(directory); + String fileBuf(filename); #if !defined(__GP32__) && !defined(PALMOS_MODE) // Add a trailing slash, if necessary. - if (!buf.empty()) { - const char c = buf.lastChar(); + if (!dirBuf.empty()) { + const char c = dirBuf.lastChar(); if (c != ':' && c != '/' && c != '\\') - buf += '/'; + dirBuf += '/'; } #endif // Append the filename to the path string - const int offsetToFileName = buf.size(); - buf += filename; + String pathBuf(dirBuf); + pathBuf += fileBuf; // // Try to open the file normally // - file = fopen(buf.c_str(), mode); + file = fopen(pathBuf.c_str(), mode); // // Try again, with file name converted to upper case // if (!file) { - for (i = offsetToFileName; i < buf.size(); ++i) { - buf[i] = toupper(buf[i]); - } - file = fopen(buf.c_str(), mode); + fileBuf.toUppercase(); + pathBuf += fileBuf; + file = fopen(pathBuf.c_str(), mode); } // // Try again, with file name converted to lower case // if (!file) { - for (i = offsetToFileName; i < buf.size(); ++i) { - buf[i] = tolower(buf[i]); - } - file = fopen(buf.c_str(), mode); + fileBuf.toLowercase(); + pathBuf += fileBuf; + file = fopen(pathBuf.c_str(), mode); } // // Try again, with file name capitalized // if (!file) { - i = offsetToFileName; - buf[i] = toupper(buf[i]); - file = fopen(buf.c_str(), mode); + fileBuf.toLowercase(); + fileBuf.setChar(toupper(fileBuf[0]),0); + pathBuf += fileBuf; + file = fopen(pathBuf.c_str(), mode); } #ifdef __amigaos4__ |