about summary refs log tree commit diff
path: root/src/libexpr
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2007-01-13T14·48+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2007-01-13T14·48+0000
commit792878af911bd1913706a1a8ee5a18f7230352ef (patch)
tree7321ebf3b755dd3878bba56a15f8aa1ef0bab4ae /src/libexpr
parent11158028be348ed9eb58bf78f4cc9711e8bfe664 (diff)
* Make printing an expression as XML interruptible.
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/eval.cc4
-rw-r--r--src/libexpr/expr-to-xml.cc3
2 files changed, 7 insertions, 0 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 8665edcfab41..e6ea73efc8b6 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -685,6 +685,9 @@ Expr strictEvalExpr(EvalState & state, Expr e, bool canonicalise)
             as2 = ATinsert(as2, makeBind(name, strictEvalExpr(state, e, canonicalise),
                                canonicalise ? makeNoPos() : pos));
         }
+        if (canonicalise) {
+            
+        }
         /* !!! sort attributes if canonicalise == true */
         return makeAttrs(ATreverse(as2));
     }
@@ -716,6 +719,7 @@ Expr strictEvalExpr(EvalState & state, Expr e, bool canonicalise)
 
             formals2 = ATinsert(formals2, makeFormal(name, valids, dummy));
         }
+        
         return makeFunction(ATreverse(formals2), body,
             canonicalise ? makeNoPos() : pos);
     }
diff --git a/src/libexpr/expr-to-xml.cc b/src/libexpr/expr-to-xml.cc
index 5c5b81b2383f..1a7302df1293 100644
--- a/src/libexpr/expr-to-xml.cc
+++ b/src/libexpr/expr-to-xml.cc
@@ -2,6 +2,7 @@
 #include "xml-writer.hh"
 #include "nixexpr-ast.hh"
 #include "aterm.hh"
+#include "util.hh"
 
 
 namespace nix {
@@ -24,6 +25,8 @@ static void printTermAsXML(Expr e, XMLWriter & doc, PathSet & context)
     ATermList as, es, formals;
     ATerm body, pos;
 
+    checkInterrupt();
+
     if (matchStr(e, s, context)) /* !!! show the context? */
         doc.writeEmptyElement("string", singletonAttrs("value", s));