From 31e4aa64396858e3b6ef8477397c84cbd80670fc Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <e.dolstra@tudelft.nl>
Date: Mon, 18 Aug 2003 16:32:55 +0000
Subject: [PATCH] * Allow lists in package bindings, e.g.,

    ("srcs", [Relative("foo/bar.c"), Relative("foo/baz.h")])

  The result is an environment variable that contains the path names of the
  inputs separated by spaces (so this is not safe for values containing
  spaces).
---
 src/fix.cc | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/fix.cc b/src/fix.cc
index 66ca5f1c2..ef3570334 100644
--- a/src/fix.cc
+++ b/src/fix.cc
@@ -169,6 +169,18 @@ static string processBinding(EvalState & state, Expr e, FState & fs)
     if (ATmatch(e, "True")) return "1";
     
     if (ATmatch(e, "False")) return "";
+
+    ATermList l;
+    if (ATmatch(e, "[<list>]", &l)) {
+	string s;
+	bool first = true;
+        while (!ATisEmpty(l)) {
+	    if (!first) s = s + " "; else first = false;
+	    s += processBinding(state, evalExpr(state, ATgetFirst(l)), fs);
+            l = ATgetNext(l);
+        }
+	return s;
+    }
     
     throw badTerm("invalid package binding", e);
 }
-- 
GitLab