about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2007-09-18T14·01+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2007-09-18T14·01+0000
commit27f57c901800c085ecc4667748b2c3a2485ee8cb (patch)
treeeae16405b4fd600a58d34ec0612ff03d8d92bd7a
parentf3441e6122c3ce8f81576bfe79897a638c8f82e2 (diff)
* Ignore dangling symlinks in ~/.nix-defexpr.
-rw-r--r--src/nix-env/nix-env.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index ad5a1b095875..77f8a2a6154a 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -116,9 +116,14 @@ static void getAllExprs(EvalState & state,
 
     for (Strings::iterator i = names.begin(); i != names.end(); ++i) {
         Path path2 = path + "/" + *i;
+        
+        struct stat st;
+        if (stat(path2.c_str(), &st) == -1)
+            continue; // ignore dangling symlinks in ~/.nix-defexpr
+        
         if (isNixExpr(path2))
             attrs.set(toATerm(*i), makeAttrRHS(
-                parseExprFromFile(state, absPath(path2)), makeNoPos()));
+                    parseExprFromFile(state, absPath(path2)), makeNoPos()));
         else
             getAllExprs(state, path2, attrs);
     }