RealPath.cpp revision f7ac0f19a1c8d0ad14bcf6456ce368b830fea886
1f933441648ef6a71dee783d733aac17b9508b452Andreas Huber//===- RealPath.cpp -------------------------------------------------------===// 2f933441648ef6a71dee783d733aac17b9508b452Andreas Huber// 3f933441648ef6a71dee783d733aac17b9508b452Andreas Huber// The MCLinker Project 4f933441648ef6a71dee783d733aac17b9508b452Andreas Huber// 5f933441648ef6a71dee783d733aac17b9508b452Andreas Huber// This file is distributed under the University of Illinois Open Source 6f933441648ef6a71dee783d733aac17b9508b452Andreas Huber// License. See LICENSE.TXT for details. 7f933441648ef6a71dee783d733aac17b9508b452Andreas Huber// 8f933441648ef6a71dee783d733aac17b9508b452Andreas Huber//===----------------------------------------------------------------------===// 9f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include "mcld/Support/RealPath.h" 10f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include "mcld/Support/FileSystem.h" 11f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 12f933441648ef6a71dee783d733aac17b9508b452Andreas Huberusing namespace mcld::sys::fs; 13f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 14f933441648ef6a71dee783d733aac17b9508b452Andreas Huber//========================== 15f933441648ef6a71dee783d733aac17b9508b452Andreas Huber// RealPath 16f933441648ef6a71dee783d733aac17b9508b452Andreas HuberRealPath::RealPath() 17f933441648ef6a71dee783d733aac17b9508b452Andreas Huber : Path() { 18f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 19377b2ec9a2885f9b6405b07ba900a9e3f4349c38Kévin PETIT 20f933441648ef6a71dee783d733aac17b9508b452Andreas HuberRealPath::RealPath(const RealPath::ValueType* s ) 21f933441648ef6a71dee783d733aac17b9508b452Andreas Huber : Path(s) { 22f933441648ef6a71dee783d733aac17b9508b452Andreas Huber initialize(); 23f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 24f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 259575c96b6e418914e2ffc6741ecc8d71e3968dbeAndreas HuberRealPath::RealPath(const RealPath::StringType &s ) 26f933441648ef6a71dee783d733aac17b9508b452Andreas Huber : Path(s) { 271aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber initialize(); 28f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 29a73d9e0b3d171d2bfcd9eb07df9d6d36ae74df57Ronghua Wu 309575c96b6e418914e2ffc6741ecc8d71e3968dbeAndreas HuberRealPath::RealPath(const Path& pPath) 312abde2c118a94f843a7450818c925d3f0b673cd3Andy Hung : Path(pPath) { 32f933441648ef6a71dee783d733aac17b9508b452Andreas Huber initialize(); 33f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 34f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 35f933441648ef6a71dee783d733aac17b9508b452Andreas HuberRealPath::~RealPath() 369575c96b6e418914e2ffc6741ecc8d71e3968dbeAndreas Huber{ 37ec0c597cabf169ca646bcea5faac1bd81ed4484dAndreas Huber} 389575c96b6e418914e2ffc6741ecc8d71e3968dbeAndreas Huber 3913d6faa02087ce3bb0d4a02b8495f1822f211433Chong ZhangRealPath& RealPath::assign(const Path& pPath) 4043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber{ 4143c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber Path::m_PathName.assign(pPath.native()); 42a73d9e0b3d171d2bfcd9eb07df9d6d36ae74df57Ronghua Wu return (*this); 431aef211b4e5dc952081727bfd2318b2cb5ca4506Andreas Huber} 449575c96b6e418914e2ffc6741ecc8d71e3968dbeAndreas Huber 45a4af2143ecbd630e946647c1b5f90fda8f61ebb3Andreas Hubervoid RealPath::initialize() 46a2e14302d4b5ca5443611d0c05218b9da4cc64a6Lajos Molnar{ 47f0b72b509ab1147a2a0925aced970dd68fd7fa4fMarco Nelissen if (isFromRoot()) { 4843c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber detail::canonicalize(m_PathName); 492abde2c118a94f843a7450818c925d3f0b673cd3Andy Hung } 50f933441648ef6a71dee783d733aac17b9508b452Andreas Huber else if (isFromPWD()) { 51f933441648ef6a71dee783d733aac17b9508b452Andreas Huber Path path_name; 52f933441648ef6a71dee783d733aac17b9508b452Andreas Huber detail::get_pwd(path_name); 53f933441648ef6a71dee783d733aac17b9508b452Andreas Huber path_name.native() += preferred_separator; 54f933441648ef6a71dee783d733aac17b9508b452Andreas Huber path_name.native() += m_PathName; 55f933441648ef6a71dee783d733aac17b9508b452Andreas Huber detail::canonicalize(path_name.native()); 56f933441648ef6a71dee783d733aac17b9508b452Andreas Huber m_PathName = path_name.native(); 57f933441648ef6a71dee783d733aac17b9508b452Andreas Huber } 58f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} 59f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 6043c3e6ce02215ca99d506458f596cb1211639f29Andreas Huber