* 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) void checkStoreNotSymlink(Path path)
{ {
struct stat st; struct stat st;
while (path.size()) { while (path != "/") {
if (lstat(path.c_str(), &st)) if (lstat(path.c_str(), &st))
throw SysError(format("getting status of `%1%'") % path); throw SysError(format("getting status of `%1%'") % path);
if (S_ISLNK(st.st_mode)) if (S_ISLNK(st.st_mode))

View File

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