diff --git a/SystemTools.cxx b/SystemTools.cxx
index 1c00621d3eae23586ca40355a4f6778f05cf6cc7..9ab0fdf105fb6a384772a2851dba902a2782edf5 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -3065,38 +3065,35 @@ kwsys_stl::string SystemTools::RelativePath(const char* local, const char* remot
   return relativePath;
 }
 
-// OK, some fun stuff to get the actual case of a given path.
-// Basically, you just need to call ShortPath, then GetLongPathName,
-// However, GetLongPathName is not implemented on windows NT and 95,
-// so we have to simulate it on those versions
 #ifdef _WIN32
-int OldWindowsGetLongPath(kwsys_stl::string const& shortPath,
-                          kwsys_stl::string& longPath  )
+static int GetCasePathName(const kwsys_stl::string & pathIn,
+                            kwsys_stl::string & casePath)
 {
-  kwsys_stl::string::size_type iFound = shortPath.rfind('/');
-  if (iFound > 1  && iFound != shortPath.npos)
+  kwsys_stl::string::size_type iFound = pathIn.rfind('/');
+  if (iFound > 1  && iFound != pathIn.npos)
     {
     // recurse to peel off components
     //
-    if (OldWindowsGetLongPath(shortPath.substr(0, iFound), longPath) > 0)
+    if (GetCasePathName(pathIn.substr(0, iFound), casePath) > 0)
       {
-      longPath += '/';
-      if (shortPath[1] != '/')
+      casePath += '/';
+      if (pathIn[1] != '/')
         {
         WIN32_FIND_DATA findData;
 
         // append the long component name to the path
         //
-        if (INVALID_HANDLE_VALUE != ::FindFirstFile
-            (shortPath.c_str(), &findData))
+        HANDLE hFind = ::FindFirstFile(pathIn.c_str(), &findData);
+        if (INVALID_HANDLE_VALUE != hFind)
           {
-          longPath += findData.cFileName;
+          casePath += findData.cFileName;
+          ::FindClose(hFind);
           }
         else
           {
           // if FindFirstFile fails, return the error code
           //
-          longPath = "";
+          casePath = "";
           return 0;
           }
         }
@@ -3104,37 +3101,9 @@ int OldWindowsGetLongPath(kwsys_stl::string const& shortPath,
     }
   else
     {
-    longPath = shortPath;
+    casePath = pathIn;
     }
-  return (int)longPath.size();
-}
-
-
-int PortableGetLongPathName(const char* pathIn,
-                            kwsys_stl::string & longPath)
-{ 
-  HMODULE lh = LoadLibrary("Kernel32.dll");
-  if(lh)
-    {
-    FARPROC proc =  GetProcAddress(lh, "GetLongPathNameA");
-    if(proc)
-      {
-      typedef  DWORD (WINAPI * GetLongFunctionPtr) (LPCSTR,LPSTR,DWORD); 
-      GetLongFunctionPtr func = (GetLongFunctionPtr)proc;
-      char buffer[MAX_PATH+1];
-      int len = (*func)(pathIn, buffer, MAX_PATH+1);
-      if(len == 0 || len > MAX_PATH+1)
-        {
-        FreeLibrary(lh);
-        return 0;
-        }
-      longPath = buffer;
-      FreeLibrary(lh);
-      return len;
-      }
-    FreeLibrary(lh);
-    }
-  return OldWindowsGetLongPath(pathIn, longPath);
+  return (int)casePath.size();
 }
 #endif
 
@@ -3153,29 +3122,19 @@ kwsys_stl::string SystemTools::GetActualCaseForPath(const char* p)
     {
     return i->second;
     }
-  kwsys_stl::string shortPath;
-  if(!SystemTools::GetShortPath(p, shortPath))
-    {
-    return p;
-    }
-  kwsys_stl::string longPath;
-  int len = PortableGetLongPathName(shortPath.c_str(), longPath);
+  kwsys_stl::string casePath;
+  int len = GetCasePathName(p, casePath);
   if(len == 0 || len > MAX_PATH+1)
     {
     return p;
     }
-  // Use original path if conversion back to a long path failed.
-  if(longPath == shortPath)
-    {
-    longPath = p;
-    }
   // make sure drive letter is always upper case
-  if(longPath.size() > 1 && longPath[1] == ':')
+  if(casePath.size() > 1 && casePath[1] == ':')
     {
-    longPath[0] = toupper(longPath[0]);
+    casePath[0] = toupper(casePath[0]);
     }
-  (*SystemTools::LongPathMap)[p] = longPath;
-  return longPath;
+  (*SystemTools::LongPathMap)[p] = casePath;
+  return casePath;
 #endif  
 }
 
diff --git a/kwsysDateStamp.cmake b/kwsysDateStamp.cmake
index a84bbf15784dc974b0017f6d6f3811363010cadb..f2f1c3b177e51cfd29cafa577b4fb85a325e97c7 100644
--- a/kwsysDateStamp.cmake
+++ b/kwsysDateStamp.cmake
@@ -15,7 +15,7 @@
 SET(KWSYS_DATE_STAMP_YEAR  2010)
 
 # KWSys version date month component.  Format is MM.
-SET(KWSYS_DATE_STAMP_MONTH 03)
+SET(KWSYS_DATE_STAMP_MONTH 04)
 
 # KWSys version date day component.  Format is DD.
-SET(KWSYS_DATE_STAMP_DAY   26)
+SET(KWSYS_DATE_STAMP_DAY   09)