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  6b92c3d6ca0353056c7d09faffa55c35759832f2 (commit)
       via  daab3b3bdfdb8f6557730738088bbfad5088ddbc (commit)
       via  92b582a67e3ea29d7a958952c0a3dfd7706b2c9f (commit)
      from  2f188bac9d3e4c5b7e2faf8c6fb0ea546f77b538 (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=6b92c3d6ca0353056c7d09faffa55c35759832f2
commit 6b92c3d6ca0353056c7d09faffa55c35759832f2
Merge: 2f188ba daab3b3
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Sep 9 08:47:05 2014 -0400
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Tue Sep 9 08:47:05 2014 -0400

    Merge topic 'update-kwsys' into next
    
    daab3b3b Merge branch 'upstream-kwsys' into update-kwsys
    92b582a6 KWSys 2014-09-08 (fb77be5a)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=daab3b3bdfdb8f6557730738088bbfad5088ddbc
commit daab3b3bdfdb8f6557730738088bbfad5088ddbc
Merge: 1251c1c 92b582a
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Sep 9 08:46:41 2014 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Sep 9 08:46:41 2014 -0400

    Merge branch 'upstream-kwsys' into update-kwsys


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=92b582a67e3ea29d7a958952c0a3dfd7706b2c9f
commit 92b582a67e3ea29d7a958952c0a3dfd7706b2c9f
Author:     KWSys Robot <kwro...@kitware.com>
AuthorDate: Mon Sep 8 21:24:08 2014 -0600
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Sep 9 08:46:34 2014 -0400

    KWSys 2014-09-08 (fb77be5a)
    
    Extract upstream KWSys using the following shell commands.
    
    $ git archive --prefix=upstream-kwsys/ fb77be5a | tar x
    $ git shortlog --no-merges --abbrev=8 --format='%h %s' 32023afd..fb77be5a
    Brad King (1):
          80e852f6 kwsysPlatformTests: Use if(DEFINED) to simplify conditions
    
    Clinton Stimpson (2):
          93eb1a1f SystemTools: Improve RelativePath() to handle ./ ../ and //
          fb77be5a SystemTools: Fix GetCasePathName to handle wildcards on 
Windows.
    
    Change-Id: Ieff09366e214055be0b62eae42fc64f3bb3b6e76

diff --git a/SystemTools.cxx b/SystemTools.cxx
index e34bb43..8a61267 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -3425,9 +3425,12 @@ kwsys_stl::string SystemTools::RelativePath(const 
kwsys_stl::string& local, cons
     return "";
     }
 
+  kwsys_stl::string l = SystemTools::CollapseFullPath(local);
+  kwsys_stl::string r = SystemTools::CollapseFullPath(remote);
+
   // split up both paths into arrays of strings using / as a separator
-  kwsys_stl::vector<kwsys::String> localSplit = 
SystemTools::SplitString(local, '/', true);
-  kwsys_stl::vector<kwsys::String> remoteSplit = 
SystemTools::SplitString(remote, '/', true);
+  kwsys_stl::vector<kwsys::String> localSplit = SystemTools::SplitString(l, 
'/', true);
+  kwsys_stl::vector<kwsys::String> remoteSplit = SystemTools::SplitString(r, 
'/', true);
   kwsys_stl::vector<kwsys::String> commonPath; // store shared parts of path 
in this array
   kwsys_stl::vector<kwsys::String> finalPath;  // store the final relative 
path here
   // count up how many matching directory names there are from the start
@@ -3533,6 +3536,16 @@ static int GetCasePathName(const kwsys_stl::string & 
pathIn,
     kwsys_stl::string test_str = casePath;
     test_str += path_components[idx];
 
+    // If path component contains wildcards, we skip matching
+    // because these filenames are not allowed on windows,
+    // and we do not want to match a different file.
+    if(path_components[idx].find('*') != kwsys_stl::string::npos ||
+       path_components[idx].find('?') != kwsys_stl::string::npos)
+      {
+      casePath = "";
+      return 0;
+      }
+
     WIN32_FIND_DATAW findData;
     HANDLE hFind = ::FindFirstFileW(Encoding::ToWide(test_str).c_str(),
       &findData);
diff --git a/kwsysPlatformTests.cmake b/kwsysPlatformTests.cmake
index f9ee254..16bc969 100644
--- a/kwsysPlatformTests.cmake
+++ b/kwsysPlatformTests.cmake
@@ -13,7 +13,7 @@ SET(KWSYS_PLATFORM_TEST_FILE_C kwsysPlatformTestsC.c)
 SET(KWSYS_PLATFORM_TEST_FILE_CXX kwsysPlatformTestsCXX.cxx)
 
 MACRO(KWSYS_PLATFORM_TEST lang var description invert)
-  IF("${var}_COMPILED" MATCHES "^${var}_COMPILED$")
+  IF(NOT DEFINED ${var}_COMPILED)
     MESSAGE(STATUS "${description}")
     TRY_COMPILE(${var}_COMPILED
       ${CMAKE_CURRENT_BINARY_DIR}
@@ -43,7 +43,7 @@ MACRO(KWSYS_PLATFORM_TEST lang var description invert)
         MESSAGE(STATUS "${description} - no")
       ENDIF(${var}_COMPILED)
     ENDIF(${invert} MATCHES INVERT)
-  ENDIF("${var}_COMPILED" MATCHES "^${var}_COMPILED$")
+  ENDIF()
   IF(${invert} MATCHES INVERT)
     IF(${var}_COMPILED)
       SET(${var} 0)
@@ -60,7 +60,7 @@ MACRO(KWSYS_PLATFORM_TEST lang var description invert)
 ENDMACRO(KWSYS_PLATFORM_TEST)
 
 MACRO(KWSYS_PLATFORM_TEST_RUN lang var description invert)
-  IF("${var}" MATCHES "^${var}$")
+  IF(NOT DEFINED ${var})
     MESSAGE(STATUS "${description}")
     TRY_RUN(${var} ${var}_COMPILED
       ${CMAKE_CURRENT_BINARY_DIR}
@@ -107,7 +107,7 @@ MACRO(KWSYS_PLATFORM_TEST_RUN lang var description invert)
         MESSAGE(STATUS "${description} - failed to compile")
       ENDIF(${var}_COMPILED)
     ENDIF(${invert} MATCHES INVERT)
-  ENDIF("${var}" MATCHES "^${var}$")
+  ENDIF()
 
   IF(${invert} MATCHES INVERT)
     IF(${var}_COMPILED)
diff --git a/testSystemTools.cxx b/testSystemTools.cxx
index 04ab4fc..b41532b 100644
--- a/testSystemTools.cxx
+++ b/testSystemTools.cxx
@@ -562,6 +562,55 @@ static bool CheckEnvironmentOperations()
   return res;
 }
 
+
+static bool CheckRelativePath(
+  const kwsys_stl::string& local,
+  const kwsys_stl::string& remote,
+  const kwsys_stl::string& expected)
+{
+  kwsys_stl::string result = kwsys::SystemTools::RelativePath(local, remote);
+  if(expected != result)
+    {
+    kwsys_ios::cerr << "RelativePath(" << local << ", " << remote
+      << ")  yielded " << result << " instead of " << expected << 
kwsys_ios::endl;
+    return false;
+    }
+  return true;
+}
+
+static bool CheckRelativePaths()
+{
+  bool res = true;
+  res &= CheckRelativePath("/usr/share", "/bin/bash", "../../bin/bash");
+  res &= CheckRelativePath("/usr/./share/", "/bin/bash", "../../bin/bash");
+  res &= CheckRelativePath("/usr//share/", "/bin/bash", "../../bin/bash");
+  res &= CheckRelativePath("/usr/share/../bin/", "/bin/bash", 
"../../bin/bash");
+  res &= CheckRelativePath("/usr/share", "/usr/share//bin", "bin");
+  return res;
+}
+
+static bool CheckCollapsePath(
+  const kwsys_stl::string& path,
+  const kwsys_stl::string& expected)
+{
+  kwsys_stl::string result = kwsys::SystemTools::CollapseFullPath(path);
+  if(expected != result)
+    {
+    kwsys_ios::cerr << "CollapseFullPath(" << path
+      << ")  yielded " << result << " instead of " << expected << 
kwsys_ios::endl;
+    return false;
+    }
+  return true;
+}
+
+static bool CheckCollapsePath()
+{
+  bool res = true;
+  res &= CheckCollapsePath("/usr/share/*", "/usr/share/*");
+  res &= CheckCollapsePath("C:/Windows/*", "C:/Windows/*");
+  return res;
+}
+
 //----------------------------------------------------------------------------
 int testSystemTools(int, char*[])
 {
@@ -593,5 +642,9 @@ int testSystemTools(int, char*[])
 
   res &= CheckEnvironmentOperations();
 
+  res &= CheckRelativePaths();
+
+  res &= CheckCollapsePath();
+
   return res ? 0 : 1;
 }

-----------------------------------------------------------------------

Summary of changes:
 Source/kwsys/SystemTools.cxx          |   17 +++++++++--
 Source/kwsys/kwsysPlatformTests.cmake |    8 ++---
 Source/kwsys/testSystemTools.cxx      |   53 +++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+), 6 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/mailman/listinfo/cmake-commits

Reply via email to