summaryrefslogtreecommitdiffstats
path: root/Directory.cxx
diff options
context:
space:
mode:
authorKWSys Robot <kwrobot@kitware.com>2014-12-16 13:48:30 (GMT)
committerBrad King <brad.king@kitware.com>2014-12-17 20:00:15 (GMT)
commit6a5ab894fbb1683ed24bfa5d603eff6ff3f40039 (patch)
tree867c986fef9b381c24822037a87c4d3e7c5db572 /Directory.cxx
parentc5fcbe00afb27fc758e8877efa955e86109a0c67 (diff)
downloadCMake-6a5ab894fbb1683ed24bfa5d603eff6ff3f40039.zip
CMake-6a5ab894fbb1683ed24bfa5d603eff6ff3f40039.tar.gz
CMake-6a5ab894fbb1683ed24bfa5d603eff6ff3f40039.tar.bz2
KWSys 2014-12-16 (cc4046a8)
Extract upstream KWSys using the following shell commands. $ git archive --prefix=upstream-kwsys/ cc4046a8 | tar x $ git shortlog --no-merges --abbrev=8 --format='%h %s' dec9c30b..cc4046a8 Brad King (2): 9c3eacf8 Add CONTRIBUTING.rst file with instructions to contribute cc4046a8 Directory: Work around PGI problem with Linux Large File Support Jean-Christophe Fillion-Robin (2): c38ba638 SystemInformation: Improve Get(Available/Total)VirtualMemory for windows 58308145 SystemInformation: Improve comments in private implementation Change-Id: Ic033444a9c03a8a8b5195e7dac108af2aec79fa6
Diffstat (limited to 'Directory.cxx')
-rw-r--r--Directory.cxx23
1 files changed, 14 insertions, 9 deletions
diff --git a/Directory.cxx b/Directory.cxx
index 741bcba..04b2866 100644
--- a/Directory.cxx
+++ b/Directory.cxx
@@ -203,13 +203,18 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const kwsys_stl::string& na
#include <sys/types.h>
#include <dirent.h>
-/* There is a problem with the Portland compiler, large file
-support and glibc/Linux system headers:
-http://www.pgroup.com/userforum/viewtopic.php?
-p=1992&sid=f16167f51964f1a68fe5041b8eb213b6
-*/
-#if defined(__PGI) && defined(__USE_FILE_OFFSET64)
-# define dirent dirent64
+// PGI with glibc has trouble with dirent and large file support:
+// http://www.pgroup.com/userforum/viewtopic.php?
+// p=1992&sid=f16167f51964f1a68fe5041b8eb213b6
+// Work around the problem by mapping dirent the same way as readdir.
+#if defined(__PGI) && defined(__GLIBC__)
+# define kwsys_dirent_readdir dirent
+# define kwsys_dirent_readdir64 dirent64
+# define kwsys_dirent kwsys_dirent_lookup(readdir)
+# define kwsys_dirent_lookup(x) kwsys_dirent_lookup_delay(x)
+# define kwsys_dirent_lookup_delay(x) kwsys_dirent_##x
+#else
+# define kwsys_dirent dirent
#endif
namespace KWSYS_NAMESPACE
@@ -226,7 +231,7 @@ bool Directory::Load(const kwsys_stl::string& name)
return 0;
}
- for (dirent* d = readdir(dir); d; d = readdir(dir) )
+ for (kwsys_dirent* d = readdir(dir); d; d = readdir(dir) )
{
this->Internal->Files.push_back(d->d_name);
}
@@ -240,7 +245,7 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const kwsys_stl::string& na
DIR* dir = opendir(name.c_str());
unsigned long count = 0;
- for (dirent* d = readdir(dir); d; d = readdir(dir) )
+ for (kwsys_dirent* d = readdir(dir); d; d = readdir(dir) )
{
count++;
}