Index: src/libchcore/TPath.cpp =================================================================== diff -u -N -rf18d23588f370de68d37adb285dcf5e046a8d37c -r1342b18babc7e88850e74f46cb473a737a68f28a --- src/libchcore/TPath.cpp (.../TPath.cpp) (revision f18d23588f370de68d37adb285dcf5e046a8d37c) +++ src/libchcore/TPath.cpp (.../TPath.cpp) (revision 1342b18babc7e88850e74f46cb473a737a68f28a) @@ -486,6 +486,23 @@ return false; } +bool TSmartPath::MakeAbsolutePath(const TSmartPath& rReferenceBasePath) +{ + if(!IsRelativePath()) + return false; + + bool bHasSeparator = rReferenceBasePath.EndsWithSeparator(); + if(!bHasSeparator) + PrependSeparatorIfDoesNotExist(); + else + StripSeparatorAtFront(); + + PrepareToWrite(); + m_pPath->m_strPath = rReferenceBasePath.ToString() + m_pPath->m_strPath; + + return true; +} + // ============================================================================ /// TSmartPath::AppendIfNotExists /// @date 2009/11/29 @@ -1130,6 +1147,11 @@ return (wchSeparator == _T('\\') || wchSeparator == _T('/')); } +bool TSmartPath::IsRelativePath() const +{ + return !HasDrive() && !HasServerName(); +} + // ============================================================================ /// chcore::PathFromString /// @date 2010/10/12