From 5b527901ae625675f525dd65b82f90bcb2001afd Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 9 Jan 2006 14:52:46 +0000 Subject: [PATCH] * dirOf: return "/", not "", for paths in the root directory. Fixes NIX-26. --- src/libmain/shared.cc | 2 +- src/libutil/util.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index 709b6116a..a832344c9 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -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)) diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 188453d16..ee34cb18a 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -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)