diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index f6aafc9c5..ae3154af6 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -89,6 +89,18 @@ public: #include #include #define _unlink unlink +#endif + +/* The maximum length of a file name. */ +#if defined(PATH_MAX) +# define KWSYS_SYSTEMTOOLS_MAXPATH PATH_MAX +#elif defined(MAXPATHLEN) +# define KWSYS_SYSTEMTOOLS_MAXPATH MAXPATHLEN +#else +# define KWSYS_SYSTEMTOOLS_MAXPATH 16384 +#endif + +#if defined(_WIN32) && (defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__)) inline int Mkdir(const char* dir) { return _mkdir(dir); @@ -141,15 +153,7 @@ inline int Chdir(const char* dir) } inline void Realpath(const char *path, kwsys_stl::string & resolved_path) { -# ifdef MAXPATHLEN - char resolved_name[MAXPATHLEN]; -# else -# ifdef PATH_MAX - char resolved_name[PATH_MAX]; -# else - char resolved_name[5024]; -# endif //PATH_MAX -# endif //MAXPATHLEN + char resolved_name[KWSYS_SYSTEMTOOLS_MAXPATH]; realpath(path, resolved_name); resolved_path = resolved_name; @@ -196,6 +200,7 @@ class SystemToolsTranslationMap : { }; + double SystemTools::GetTime(void) { @@ -1848,6 +1853,13 @@ bool SystemTools::RemoveADirectory(const char* source) return (Rmdir(source) == 0); } +/** + */ +size_t SystemTools::GetMaximumFilePathLength() +{ + return KWSYS_SYSTEMTOOLS_MAXPATH; +} + /** * Find the file the given name. Searches the given path and then * the system search path. Returns the full path to the file if it is diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in index 31beafc8a..39b523451 100644 --- a/Source/kwsys/SystemTools.hxx.in +++ b/Source/kwsys/SystemTools.hxx.in @@ -472,6 +472,11 @@ public: */ static bool RemoveADirectory(const char* source); + /** + * Get the maximum full file path length + */ + static size_t GetMaximumFilePathLength(); + /** * Find a file in the system PATH, with optional extra paths */