15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- RealPath.cpp -------------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/Support/RealPath.h" 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/Support/FileSystem.h" 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1237b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld { 1337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace sys { 1437b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace fs { 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//========================== 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// RealPath 1837b74a387bb3993387029859c2d9d051c41c724eStephen HinesRealPath::RealPath() : Path() { 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2137b74a387bb3993387029859c2d9d051c41c724eStephen HinesRealPath::RealPath(const RealPath::ValueType* s) : Path(s) { 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao initialize(); 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2537b74a387bb3993387029859c2d9d051c41c724eStephen HinesRealPath::RealPath(const RealPath::StringType& s) : Path(s) { 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao initialize(); 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2937b74a387bb3993387029859c2d9d051c41c724eStephen HinesRealPath::RealPath(const Path& pPath) : Path(pPath) { 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao initialize(); 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3337b74a387bb3993387029859c2d9d051c41c724eStephen HinesRealPath::~RealPath() { 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3637b74a387bb3993387029859c2d9d051c41c724eStephen HinesRealPath& RealPath::assign(const Path& pPath) { 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao Path::m_PathName.assign(pPath.native()); 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return (*this); 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4137b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid RealPath::initialize() { 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (isFromRoot()) { 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao detail::canonicalize(m_PathName); 4437b74a387bb3993387029859c2d9d051c41c724eStephen Hines } else if (isFromPWD()) { 45f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines Path path_name; 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao detail::get_pwd(path_name); 47f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines path_name.native() += preferred_separator; 48f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines path_name.native() += m_PathName; 49f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines detail::canonicalize(path_name.native()); 50f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines m_PathName = path_name.native(); 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5437b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace fs 5537b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace sys 5637b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 57