* dirOf: return "/", not "", for paths in the root directory. Fixes NIX-26.

This commit is contained in:
Eelco Dolstra 2006-01-09 14:52:46 +00:00
parent 04be39734f
commit 5b527901ae
2 changed files with 3 additions and 3 deletions

View File

@ -65,7 +65,7 @@ void setLogType(string lt)
void checkStoreNotSymlink(Path path)
{
struct stat st;
while (path.size()) {
while (path != "/") {
if (lstat(path.c_str(), &st))
throw SysError(format("getting status of `%1%'") % path);
if (S_ISLNK(st.st_mode))

View File

@ -115,7 +115,7 @@ Path dirOf(const Path & path)
unsigned int pos = path.rfind('/');
if (pos == string::npos)
throw Error(format("invalid file name: %1%") % path);
return Path(path, 0, pos);
return pos == 0 ? "/" : Path(path, 0, pos);
}
@ -302,7 +302,7 @@ Path createTempDir()
void createDirs(const Path & path)
{
if (path == "") return;
if (path == "/") return;
createDirs(dirOf(path));
if (!pathExists(path))
if (mkdir(path.c_str(), 0777) == -1)