Refactoring. Assume that .C files contain C code on case insensitive filesystems.
This commit is contained in:
parent
304980848f
commit
ee55d3294a
18
lib/path.cpp
18
lib/path.cpp
|
@ -23,6 +23,17 @@
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include "path.h"
|
#include "path.h"
|
||||||
|
|
||||||
|
/** Is the filesystem case insensitive? */
|
||||||
|
static bool caseInsensitiveFilesystem()
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
// TODO: Non-windows filesystems might be case insensitive
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
std::string Path::toNativeSeparators(std::string path)
|
std::string Path::toNativeSeparators(std::string path)
|
||||||
{
|
{
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
|
@ -127,7 +138,12 @@ std::string Path::getFilenameExtension(const std::string &path)
|
||||||
if (dotLocation == std::string::npos)
|
if (dotLocation == std::string::npos)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
const std::string extension = path.substr(dotLocation);
|
std::string extension = path.substr(dotLocation);
|
||||||
|
if (caseInsensitiveFilesystem()) {
|
||||||
|
// on a case insensitive filesystem the case doesn't matter so
|
||||||
|
// let's return the extension in lowercase
|
||||||
|
std::transform(extension.begin(), extension.end(), extension.begin(), tolowerWrapper);
|
||||||
|
}
|
||||||
return extension;
|
return extension;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,14 +84,22 @@ private:
|
||||||
ASSERT(Path::isC("C:\\foo\\index.c"));
|
ASSERT(Path::isC("C:\\foo\\index.c"));
|
||||||
|
|
||||||
// In unix .C is considered C++
|
// In unix .C is considered C++
|
||||||
ASSERT(Path::isC("C:\\foo\\index.C")==false);
|
#ifdef _WIN32
|
||||||
|
ASSERT_EQUALS(true, Path::isC("C:\\foo\\index.C"));
|
||||||
|
#else
|
||||||
|
ASSERT_EQUALS(false, Path::isC("C:\\foo\\index.C"));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void is_cpp() {
|
void is_cpp() {
|
||||||
ASSERT(Path::isCPP("index.c")==false);
|
ASSERT(Path::isCPP("index.c")==false);
|
||||||
|
|
||||||
// In unix .C is considered C++
|
// In unix .C is considered C++
|
||||||
ASSERT(Path::isCPP("index.C"));
|
#ifdef _WIN32
|
||||||
|
ASSERT_EQUALS(false, Path::isCPP("index.C"));
|
||||||
|
#else
|
||||||
|
ASSERT_EQUALS(true, Path::isCPP("index.C"));
|
||||||
|
#endif
|
||||||
ASSERT(Path::isCPP("index.cpp"));
|
ASSERT(Path::isCPP("index.cpp"));
|
||||||
ASSERT(Path::isCPP("C:\\foo\\index.cpp"));
|
ASSERT(Path::isCPP("C:\\foo\\index.cpp"));
|
||||||
ASSERT(Path::isCPP("C:\\foo\\index.Cpp"));
|
ASSERT(Path::isCPP("C:\\foo\\index.Cpp"));
|
||||||
|
|
Loading…
Reference in New Issue