string basename(const Path &p)
{
- return p[-1];
+ return p.empty() ? string() : p[-1];
}
Path dirname(const Path &p)
{
+ if(p.empty())
+ return p;
if(p.size()==1)
{
if(p.is_absolute())
Path result;
for(Path::Iterator i=path.begin(); i!=path.end(); ++i)
{
- if(!found || *i=="/")
+ if(!found || (result.empty() && (*i=="/" || *i==".")))
result /= *i;
else
{