//===- RealPath.cpp -------------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "mcld/Support/RealPath.h" #include "mcld/Support/FileSystem.h" using namespace mcld::sys::fs; //========================== // RealPath RealPath::RealPath() : Path() { } RealPath::RealPath(const RealPath::ValueType* s ) : Path(s) { initialize(); } RealPath::RealPath(const RealPath::StringType &s ) : Path(s) { initialize(); } RealPath::RealPath(const Path& pPath) : Path(pPath) { initialize(); } RealPath::~RealPath() { } RealPath& RealPath::assign(const Path& pPath) { Path::m_PathName.assign(pPath.native()); return (*this); } void RealPath::initialize() { if (isFromRoot()) { detail::canonicalize(m_PathName); } else if (isFromPWD()) { std::string path_name; detail::get_pwd(path_name); path_name += '/'; path_name += m_PathName; detail::canonicalize(path_name); m_PathName = path_name; } }