X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Fpath.cpp;h=0e86600453be225bcb647ff699f3cb0b5f20649b;hp=adf376f7a0b0db57341370a7bd07d61b643a7c04;hb=HEAD;hpb=122846f0881673770d88eff7d925ecf25c01b62e diff --git a/source/fs/path.cpp b/source/fs/path.cpp index adf376f..1181b92 100644 --- a/source/fs/path.cpp +++ b/source/fs/path.cpp @@ -17,9 +17,6 @@ inline bool is_windows_drive(const string &p) namespace Msp { namespace FS { -Path::Path() -{ } - Path::Path(const string &p) { if(p.empty()) @@ -136,11 +133,21 @@ void Path::add_component(const string &comp) path += DIRSEP; path += comp; } - else if(separators.empty()) + else if(start==0) + { + /* Removing the last component of a relative path results in the + current directory */ path = "."; + } + else if(start==1) + { + /* Removing the last component of an absolute path results in the + root directory */ + path.erase(start, string::npos); + } else { - // Otherwise, erase the last component + // Otherwise, erase the last component and its separator path.erase(separators.back(), string::npos); separators.pop_back(); }