namespace Msp {
namespace FS {
-Path::Path()
-{ }
-
Path::Path(const string &p)
-{
- init(p);
-}
-
-Path::Path(const char *p)
-{
- init(p);
-}
-
-void Path::init(const string &p)
{
if(p.empty())
return;
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();
}