From b0185173147c3eb629cc6b996459cf6ce2d608fe Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 28 Aug 2003 10:51:14 +0000 Subject: [PATCH] * Do not try to remove write permission from symlinks, since chmod() follows symlinks. (Note that the permissions on symlinks are ignored anyway.) --- src/normalise.cc | 2 +- src/util.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/normalise.cc b/src/normalise.cc index c7be532061..39867bfe57 100644 --- a/src/normalise.cc +++ b/src/normalise.cc @@ -202,7 +202,7 @@ FSId normaliseFState(FSId id, FSIdSet pending) /* For this output path, find the references to other paths contained in it. */ Strings refPaths = filterReferences(path, - Strings(allPaths.begin(), allPaths.end())); + Strings(allPaths.begin(), allPaths.end())); /* Construct a slice element for this output path. */ SliceElem elem; diff --git a/src/util.cc b/src/util.cc index c7ae711bba..f2cdb1d723 100644 --- a/src/util.cc +++ b/src/util.cc @@ -149,9 +149,9 @@ void makePathReadOnly(const string & path) if (lstat(path.c_str(), &st)) throw SysError(format("getting attributes of path `%1%'") % path); - if (st.st_mode & S_IWUSR) { + if (!S_ISLNK(st.st_mode) && (st.st_mode & S_IWUSR)) { if (chmod(path.c_str(), st.st_mode & ~S_IWUSR) == -1) - throw SysError(format("making `%1%' read-only")); + throw SysError(format("making `%1%' read-only") % path); } if (S_ISDIR(st.st_mode)) {