diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2001-09-27 20:50:59 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2001-09-27 20:50:59 (GMT) |
commit | 1c8f0965176e6763e29d531c8804333458ad674b (patch) | |
tree | 772d13c0e77129ac6143b95666de1d1b6bb05aa4 /Source/cmSystemTools.cxx | |
parent | d55f530012487694f2a9924d8de6d50181fb2aad (diff) | |
download | CMake-1c8f0965176e6763e29d531c8804333458ad674b.zip CMake-1c8f0965176e6763e29d531c8804333458ad674b.tar.gz CMake-1c8f0965176e6763e29d531c8804333458ad674b.tar.bz2 |
BUG: use realpath instead of cd/pwd
Diffstat (limited to 'Source/cmSystemTools.cxx')
-rw-r--r-- | Source/cmSystemTools.cxx | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index c00f9d6..d9a20a9 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -38,7 +38,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =========================================================================*/ -#include "cmSystemTools.h" +#include "cmSystemTools.h" #include "errno.h" #include "stdio.h" #include <sys/stat.h> @@ -46,6 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <ctype.h> #include "cmDirectory.h" +// support for realpath call +#ifndef _WIN32 +#include <limits.h> +#include <stdlib.h> +#include <sys/param.h> +#endif + #if defined(_MSC_VER) || defined(__BORLANDC__) #include <windows.h> #include <direct.h> @@ -1174,6 +1181,7 @@ void cmSystemTools::SplitProgramPath(const char* in_name, */ std::string cmSystemTools::CollapseFullPath(const char* in_name) { +#ifdef _WIN32 std::string dir, file; cmSystemTools::SplitProgramPath(in_name, dir, file); // Ultra-hack warning: @@ -1186,8 +1194,16 @@ std::string cmSystemTools::CollapseFullPath(const char* in_name) cmSystemTools::ConvertToUnixSlashes(newDir); std::string newPath = newDir+"/"+file; - return newPath; +#else +# ifdef MAXPATHLEN + char resolved_name[MAXPATHLEN]; +# else + char resolved_name[PATH_MAX]; +# endif + realpath(in_name, resolved_name); + return resolved_name; +#endif } /** |