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 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld::sys::fs; 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//========================== 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// RealPath 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoRealPath::RealPath() 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : Path() { 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoRealPath::RealPath(const RealPath::ValueType* s ) 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : Path(s) { 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao initialize(); 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoRealPath::RealPath(const RealPath::StringType &s ) 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : Path(s) { 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao initialize(); 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoRealPath::RealPath(const Path& pPath) 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : Path(pPath) { 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao initialize(); 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoRealPath::~RealPath() 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoRealPath& RealPath::assign(const Path& pPath) 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao Path::m_PathName.assign(pPath.native()); 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return (*this); 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid RealPath::initialize() 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (isFromRoot()) { 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao detail::canonicalize(m_PathName); 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao else if (isFromPWD()) { 51f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines Path path_name; 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao detail::get_pwd(path_name); 53f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines path_name.native() += preferred_separator; 54f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines path_name.native() += m_PathName; 55f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines detail::canonicalize(path_name.native()); 56f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines m_PathName = path_name.native(); 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 60