summaryrefslogtreecommitdiffstats
path: root/Source/cmSystemTools.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-09-27 20:50:59 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-09-27 20:50:59 (GMT)
commit1c8f0965176e6763e29d531c8804333458ad674b (patch)
tree772d13c0e77129ac6143b95666de1d1b6bb05aa4 /Source/cmSystemTools.cxx
parentd55f530012487694f2a9924d8de6d50181fb2aad (diff)
downloadCMake-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.cxx20
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
}
/**