This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via 5d524003ea7ee45e7391528cbbb4a7aac7836c20 (commit) via bedeade06b55f475c1c028c1f72c10244302c6fa (commit) via a08248bb7d04331c5816ae598c44011cf1011c78 (commit) via b7cecfcb21c60a3e9a989dabdd411c306e7b9e51 (commit) from dea2575980a97200067418058c1d6fcdcf394acb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5d524003ea7ee45e7391528cbbb4a7aac7836c20 commit 5d524003ea7ee45e7391528cbbb4a7aac7836c20 Merge: dea2575 bedeade Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Wed Nov 20 06:42:30 2013 -0500 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Wed Nov 20 06:42:30 2013 -0500 Merge topic 'add-cmLiteralNCompare' into next bedeade Use new cmLiteralNCompare function a08248b cmStandardIncludes: Add new cmLiteralNCompare function. b7cecfc CMake Nightly Date Stamp diff --cc Source/cmTarget.cxx index 6533404,dda9f51..083a784 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@@ -2418,10 -2276,10 +2418,10 @@@ static void cmTargetCheckINTERFACE_LINK } //---------------------------------------------------------------------------- -void cmTarget::CheckProperty(const char* prop, cmMakefile* context) +void cmTarget::CheckProperty(const char* prop, cmMakefile* context) const { // Certain properties need checking. - if(strncmp(prop, "LINK_INTERFACE_LIBRARIES", 24) == 0) + if(cmLiteralNCompare(prop, "LINK_INTERFACE_LIBRARIES") == 0) { if(const char* value = this->GetProperty(prop)) { http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bedeade06b55f475c1c028c1f72c10244302c6fa commit bedeade06b55f475c1c028c1f72c10244302c6fa Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Wed Nov 20 02:12:00 2013 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Wed Nov 20 12:41:48 2013 +0100 Use new cmLiteralNCompare function diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index 39eeb70..85d7c2b 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -763,7 +763,7 @@ void cmCTestBuildHandler::GenerateXMLLaunchedFragment(std::ostream& os, bool cmCTestBuildHandler::IsLaunchedErrorFile(const char* fname) { // error-{hash}.xml - return (strncmp(fname, "error-", 6) == 0 && + return (cmLiteralNCompare(fname, "error-") == 0 && strcmp(fname+strlen(fname)-4, ".xml") == 0); } @@ -771,7 +771,7 @@ bool cmCTestBuildHandler::IsLaunchedErrorFile(const char* fname) bool cmCTestBuildHandler::IsLaunchedWarningFile(const char* fname) { // warning-{hash}.xml - return (strncmp(fname, "warning-", 8) == 0 && + return (cmLiteralNCompare(fname, "warning-") == 0 && strcmp(fname+strlen(fname)-4, ".xml") == 0); } diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx index 5b34491..4fe40d3 100644 --- a/Source/CTest/cmCTestGIT.cxx +++ b/Source/CTest/cmCTestGIT.cxx @@ -536,11 +536,11 @@ private: void DoHeaderLine() { // Look for header fields that we need. - if(strncmp(this->Line.c_str(), "commit ", 7) == 0) + if(cmLiteralNCompare(this->Line.c_str(), "commit ") == 0) { this->Rev.Rev = this->Line.c_str()+7; } - else if(strncmp(this->Line.c_str(), "author ", 7) == 0) + else if(cmLiteralNCompare(this->Line.c_str(), "author ") == 0) { Person author; this->ParsePerson(this->Line.c_str()+7, author); @@ -548,7 +548,7 @@ private: this->Rev.EMail = author.EMail; this->Rev.Date = this->FormatDateTime(author); } - else if(strncmp(this->Line.c_str(), "committer ", 10) == 0) + else if(cmLiteralNCompare(this->Line.c_str(), "committer ") == 0) { Person committer; this->ParsePerson(this->Line.c_str()+10, committer); diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index bfabc9f..6c77b9f 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1131,11 +1131,11 @@ int cmCTest::GetTestModelFromString(const char* str) return cmCTest::EXPERIMENTAL; } std::string rstr = cmSystemTools::LowerCase(str); - if ( strncmp(rstr.c_str(), "cont", 4) == 0 ) + if ( cmLiteralNCompare(rstr.c_str(), "cont") == 0 ) { return cmCTest::CONTINUOUS; } - if ( strncmp(rstr.c_str(), "nigh", 4) == 0 ) + if ( cmLiteralNCompare(rstr.c_str(), "nigh") == 0 ) { return cmCTest::NIGHTLY; } diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index fdc075e..fa54077 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -240,7 +240,7 @@ static bool checkInterfaceDirs(const std::string &prepro, { continue; } - if (strncmp(li->c_str(), "${_IMPORT_PREFIX}", 17) == 0) + if (cmLiteralNCompare(li->c_str(), "${_IMPORT_PREFIX}") == 0) { continue; } diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index 133944e..f55b6bf 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -81,10 +81,10 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) os << "# Compute the installation prefix relative to this file.\n" << "get_filename_component(_IMPORT_PREFIX" << " \"${CMAKE_CURRENT_LIST_FILE}\" PATH)\n"; - if(strncmp(absDestS.c_str(), "/lib/", 5) == 0 || - strncmp(absDestS.c_str(), "/lib64/", 7) == 0 || - strncmp(absDestS.c_str(), "/usr/lib/", 9) == 0 || - strncmp(absDestS.c_str(), "/usr/lib64/", 11) == 0) + if(cmLiteralNCompare(absDestS.c_str(), "/lib/") == 0 || + cmLiteralNCompare(absDestS.c_str(), "/lib64/") == 0 || + cmLiteralNCompare(absDestS.c_str(), "/usr/lib/") == 0 || + cmLiteralNCompare(absDestS.c_str(), "/usr/lib64/") == 0) { // Handle "/usr move" symlinks created by some Linux distros. os << diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index 92dc054..ead940a 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -173,8 +173,8 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries(const char *tgt) return (strcmp(prop, "LINK_LIBRARIES") == 0 || strcmp(prop, "LINK_INTERFACE_LIBRARIES") == 0 || strcmp(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES") == 0 - || strncmp(prop, "LINK_INTERFACE_LIBRARIES_", 25) == 0 - || strncmp(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES_", 34) == 0) + || cmLiteralNCompare(prop, "LINK_INTERFACE_LIBRARIES_") == 0 + || cmLiteralNCompare(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES_") == 0) || strcmp(prop, "INTERFACE_LINK_LIBRARIES") == 0; } @@ -200,7 +200,7 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingCompileDefinitions() const const char *prop = this->Property.c_str(); return (strcmp(prop, "COMPILE_DEFINITIONS") == 0 || strcmp(prop, "INTERFACE_COMPILE_DEFINITIONS") == 0 - || strncmp(prop, "COMPILE_DEFINITIONS_", 20) == 0); + || cmLiteralNCompare(prop, "COMPILE_DEFINITIONS_") == 0); } //---------------------------------------------------------------------------- diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index 2ae5a22..35aa381 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -902,8 +902,8 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(POPULATE_INTERFACE_PROPERTY_NAME) // Note that the above macro terminates with an else - /* else */ if (strncmp(propertyName.c_str(), - "COMPILE_DEFINITIONS_", 20) == 0) + /* else */ if (cmLiteralNCompare(propertyName.c_str(), + "COMPILE_DEFINITIONS_") == 0) { interfacePropertyName = "INTERFACE_COMPILE_DEFINITIONS"; } diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 29401c6..0de8dd5 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -28,7 +28,7 @@ static const char* cmVS10GenName(const char* name, std::string& genName) return 0; } const char* p = name + sizeof(vs10generatorName) - 6; - if(strncmp(p, " 2010", 5) == 0) + if(cmLiteralNCompare(p, " 2010") == 0) { p += 5; } diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx index f1d7312..40f3d0f 100644 --- a/Source/cmGlobalVisualStudio11Generator.cxx +++ b/Source/cmGlobalVisualStudio11Generator.cxx @@ -23,7 +23,7 @@ static const char* cmVS11GenName(const char* name, std::string& genName) return 0; } const char* p = name + sizeof(vs11generatorName) - 6; - if(strncmp(p, " 2012", 5) == 0) + if(cmLiteralNCompare(p, " 2012") == 0) { p += 5; } diff --git a/Source/cmGlobalVisualStudio12Generator.cxx b/Source/cmGlobalVisualStudio12Generator.cxx index edd5567..d2cd554 100644 --- a/Source/cmGlobalVisualStudio12Generator.cxx +++ b/Source/cmGlobalVisualStudio12Generator.cxx @@ -23,7 +23,7 @@ static const char* cmVS12GenName(const char* name, std::string& genName) return 0; } const char* p = name + sizeof(vs12generatorName) - 6; - if(strncmp(p, " 2013", 5) == 0) + if(cmLiteralNCompare(p, " 2013") == 0) { p += 5; } diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index 16b2bea..411650c 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -32,7 +32,7 @@ void cmLBDepend::DependWalk(cmDependInformation* info) std::string line; while(cmSystemTools::GetLineFromStream(fin, line)) { - if(!strncmp(line.c_str(), "#include", 8)) + if(!cmLiteralNCompare(line.c_str(), "#include")) { // if it is an include line then create a string class std::string currentline = line; diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx index bb193bf..7cc8060 100644 --- a/Source/cmSetCommand.cxx +++ b/Source/cmSetCommand.cxx @@ -23,7 +23,7 @@ bool cmSetCommand // watch for ENV signatures const char* variable = args[0].c_str(); // VAR is always first - if (!strncmp(variable,"ENV{",4) && strlen(variable) > 5) + if (!cmLiteralNCompare(variable, "ENV{") && strlen(variable) > 5) { // what is the variable name char *varName = new char [strlen(variable)]; diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index c9905b6..dda9f51 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -560,7 +560,7 @@ cmSourceFile* cmTarget::AddSource(const char* s) //---------------------------------------------------------------------------- void cmTarget::ProcessSourceExpression(std::string const& expr) { - if(strncmp(expr.c_str(), "$<TARGET_OBJECTS:", 17) == 0 && + if(cmLiteralNCompare(expr.c_str(), "$<TARGET_OBJECTS:") == 0 && expr[expr.size()-1] == '>') { std::string objLibName = expr.substr(17, expr.size()-18); @@ -2199,11 +2199,11 @@ void cmTarget::GetCompileDefinitions(std::vector<std::string> &list, void cmTarget::MaybeInvalidatePropertyCache(const char* prop) { // Wipe out maps caching information affected by this property. - if(this->IsImported() && strncmp(prop, "IMPORTED", 8) == 0) + if(this->IsImported() && cmLiteralNCompare(prop, "IMPORTED") == 0) { this->Internal->ImportInfoMap.clear(); } - if(!this->IsImported() && strncmp(prop, "LINK_INTERFACE_", 15) == 0) + if(!this->IsImported() && cmLiteralNCompare(prop, "LINK_INTERFACE_") == 0) { this->ClearLinkMaps(); } @@ -2279,21 +2279,21 @@ static void cmTargetCheckINTERFACE_LINK_LIBRARIES(const char* value, void cmTarget::CheckProperty(const char* prop, cmMakefile* context) { // Certain properties need checking. - if(strncmp(prop, "LINK_INTERFACE_LIBRARIES", 24) == 0) + if(cmLiteralNCompare(prop, "LINK_INTERFACE_LIBRARIES") == 0) { if(const char* value = this->GetProperty(prop)) { cmTargetCheckLINK_INTERFACE_LIBRARIES(prop, value, context, false); } } - if(strncmp(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES", 33) == 0) + if(cmLiteralNCompare(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES") == 0) { if(const char* value = this->GetProperty(prop)) { cmTargetCheckLINK_INTERFACE_LIBRARIES(prop, value, context, true); } } - if(strncmp(prop, "INTERFACE_LINK_LIBRARIES", 24) == 0) + if(cmLiteralNCompare(prop, "INTERFACE_LINK_LIBRARIES") == 0) { if(const char* value = this->GetProperty(prop)) { @@ -2595,7 +2595,7 @@ const char *cmTarget::GetProperty(const char* prop, } // Support "LOCATION_<CONFIG>". - if(strncmp(prop, "LOCATION_", 9) == 0) + if(cmLiteralNCompare(prop, "LOCATION_") == 0) { if (!this->HandleLocationPropertyPolicy()) { diff --git a/Source/cmTargetCompileDefinitionsCommand.cxx b/Source/cmTargetCompileDefinitionsCommand.cxx index 46c9666..29a997b 100644 --- a/Source/cmTargetCompileDefinitionsCommand.cxx +++ b/Source/cmTargetCompileDefinitionsCommand.cxx @@ -44,7 +44,7 @@ std::string cmTargetCompileDefinitionsCommand for(std::vector<std::string>::const_iterator it = content.begin(); it != content.end(); ++it) { - if (strncmp(it->c_str(), "-D", 2) == 0) + if (cmLiteralNCompare(it->c_str(), "-D") == 0) { defs += sep + it->substr(2); } diff --git a/Source/cmUnsetCommand.cxx b/Source/cmUnsetCommand.cxx index 84f3029..e9fee4f 100644 --- a/Source/cmUnsetCommand.cxx +++ b/Source/cmUnsetCommand.cxx @@ -24,7 +24,7 @@ bool cmUnsetCommand::InitialPass(std::vector<std::string> const& args, const char* variable = args[0].c_str(); // unset(ENV{VAR}) - if (!strncmp(variable,"ENV{",4) && strlen(variable) > 5) + if (!cmLiteralNCompare(variable, "ENV{") && strlen(variable) > 5) { // what is the variable name char *envVarName = new char [strlen(variable)]; diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index 6ef0579..77ff503 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -273,7 +273,7 @@ int do_cmake(int ac, char** av) list_all_cached = true; list_help = true; } - else if (strncmp(av[i], "-P", strlen("-P")) == 0) + else if (cmLiteralNCompare(av[i], "-P") == 0) { if ( i == ac -1 ) { @@ -287,8 +287,7 @@ int do_cmake(int ac, char** av) args.push_back(av[i]); } } - else if (strncmp(av[i], "--find-package", - strlen("--find-package")) == 0) + else if (cmLiteralNCompare(av[i], "--find-package") == 0) { workingMode = cmake::FIND_PACKAGE_MODE; args.push_back(av[i]); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a08248bb7d04331c5816ae598c44011cf1011c78 commit a08248bb7d04331c5816ae598c44011cf1011c78 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Wed Nov 20 02:12:48 2013 +0100 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Wed Nov 20 12:41:46 2013 +0100 cmStandardIncludes: Add new cmLiteralNCompare function. This allows avoiding error-prone hard-coding of literal string lengths. diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h index 18d017d..e9d503a 100644 --- a/Source/cmStandardIncludes.h +++ b/Source/cmStandardIncludes.h @@ -377,6 +377,20 @@ static thisClass* SafeDownCast(cmObject *c) \ return 0;\ } +inline int cmLiteralNCompareImpl(const std::string &str1, + const char *str2, + size_t N) +{ + return strncmp(str1.c_str(), str2, N); +} + +inline int cmLiteralNCompareImpl(const char* str1, + const char *str2, + size_t N) +{ + return strncmp(str1, str2, N); +} + #if defined(_MSC_VER) && _MSC_VER < 1300 \ || defined(__GNUC__) && __GNUC__ < 3 @@ -384,6 +398,9 @@ static thisClass* SafeDownCast(cmObject *c) \ #define cmArraySize(a) (sizeof(a)/sizeof(*a)) #define cmArrayEnd(a) a + cmArraySize(a) +#define cmLiteralNCompare(STR1, STR2) \ + cmLiteralNCompareImpl(STR1, "" STR2 "", sizeof(STR2) - 1) + #else template<typename T, size_t N> @@ -393,6 +410,12 @@ const T* cmArrayEnd(const T (&a)[N]) { return a + N; } template<typename T, size_t N> size_t cmArraySize(const T (&)[N]) { return N; } +template<typename T, size_t N> +int cmLiteralNCompare(T str1, const char (&str2)[N]) +{ + return cmLiteralNCompareImpl(str1, str2, N - 1); +} + #endif struct cmStrCmp { ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Source/CTest/cmCTestBuildHandler.cxx | 4 ++-- Source/CTest/cmCTestGIT.cxx | 6 +++--- Source/cmCTest.cxx | 4 ++-- Source/cmExportFileGenerator.cxx | 2 +- Source/cmExportInstallFileGenerator.cxx | 8 ++++---- Source/cmGeneratorExpressionDAGChecker.cxx | 6 +++--- Source/cmGeneratorExpressionEvaluator.cxx | 4 ++-- Source/cmGlobalVisualStudio10Generator.cxx | 2 +- Source/cmGlobalVisualStudio11Generator.cxx | 2 +- Source/cmGlobalVisualStudio12Generator.cxx | 2 +- Source/cmOutputRequiredFilesCommand.cxx | 2 +- Source/cmSetCommand.cxx | 2 +- Source/cmStandardIncludes.h | 23 +++++++++++++++++++++++ Source/cmTarget.cxx | 14 +++++++------- Source/cmTargetCompileDefinitionsCommand.cxx | 2 +- Source/cmUnsetCommand.cxx | 2 +- Source/cmakemain.cxx | 5 ++--- 18 files changed, 57 insertions(+), 35 deletions(-) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits