lanurmi: Fixed #1269 (Changes required for compiling with Sun's compiler)

This commit is contained in:
Daniel Marjamäki 2010-01-14 22:00:14 +01:00
parent ac077d3160
commit b9f09679c7
3 changed files with 16 additions and 17 deletions

View File

@ -87,7 +87,11 @@ std::string FileLister::simplifyPath(const char *originalPath)
return oss.str();
}
// This wrapper exists because Sun's CC does not allow a static_cast
// from extern "C" int(*)(int) to int(*)(int).
static int tolowerWrapper(int c) {
return std::tolower(c);
}
bool FileLister::acceptFile(const std::string &filename)
{
@ -96,7 +100,7 @@ bool FileLister::acceptFile(const std::string &filename)
return false;
std::string extension = filename.substr(dotLocation);
std::transform(extension.begin(), extension.end(), extension.begin(), static_cast < int(*)(int) > (std::tolower));
std::transform(extension.begin(), extension.end(), extension.begin(), tolowerWrapper);
if (extension == ".cpp" ||
extension == ".cxx" ||
@ -306,7 +310,7 @@ void FileLister::recursiveAddFiles(std::vector<std::string> &filenames, const st
bool FileLister::sameFileName(const char fname1[], const char fname2[])
{
#ifdef __linux__
#if defined(__linux__) || defined(__sun)
return bool(strcmp(fname1, fname2) == 0);
#endif
#ifdef __GNUC__

View File

@ -26,19 +26,6 @@
/// @{
// Check that the compiler are supported
// This program should be compiled with either GCC/BORLAND/MSC to work..
#ifndef __GNUC__
#ifndef __BORLANDC__
#ifndef _MSC_VER
#error "Cppcheck must be compiled by either GCC/BORLAND/MSC to work fully.\n"
#error "Please report that you couldn't compile cppcheck through the web page:\n"
#error " https://sourceforge.net/projects/cppcheck/"
#endif
#endif
#endif
class FileLister
{
public:

View File

@ -1207,6 +1207,14 @@ int Preprocessor::getHeaderFileName(std::string &str)
return 2;
}
// This wrapper exists because Sun's CC does not allow a static_cast
// from extern "C" int(*)(int) to int(*)(int).
static int tolowerWrapper(int c) {
return std::tolower(c);
}
void Preprocessor::handleIncludes(std::string &code, const std::string &filename, const std::list<std::string> &includePaths)
{
std::list<std::string> paths;
@ -1247,7 +1255,7 @@ void Preprocessor::handleIncludes(std::string &code, const std::string &filename
continue;
std::string tempFile = filename;
std::transform(tempFile.begin(), tempFile.end(), tempFile.begin(), static_cast < int(*)(int) > (std::tolower));
std::transform(tempFile.begin(), tempFile.end(), tempFile.begin(), tolowerWrapper);
if (handledFiles.find(tempFile) != handledFiles.end())
{
// We have processed this file already once, skip