From 1308eb0d740a687161641d52dabad8c0f849db08 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 10 Apr 2023 14:28:23 +0200 Subject: Add support for negation in config.install.filter --- libbuild2/install/utility.cxx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'libbuild2/install/utility.cxx') diff --git a/libbuild2/install/utility.cxx b/libbuild2/install/utility.cxx index c8e1699..c8b6a92 100644 --- a/libbuild2/install/utility.cxx +++ b/libbuild2/install/utility.cxx @@ -57,10 +57,21 @@ namespace build2 // If redoing all this work for every entry proves too slow, we can // consider some form of caching (e.g., on the per-project basis). // + auto i (fs->begin ()); + + bool negate (false); + if (i->first == "!") + { + negate = true; + ++i; + } + size_t limit (0); // See below. - for (const pair& kv: *fs) + for (auto e (fs->end ()); i != e; ++i) { + const pair>& kv (*i); + path k; try { @@ -77,7 +88,7 @@ namespace build2 bool v; { - const string& s (kv.second); + const string& s (kv.second ? *kv.second : string ()); size_t p (s.find (',')); @@ -269,13 +280,16 @@ namespace build2 } } + if (negate) + v = !v; + l4 ([&]{trace << (base / leaf) << (v ? " included by " : " excluded by ") - << kv.first << '@' << kv.second;}); + << kv.first << '@' << *kv.second;}); return v; } - return true; + return !negate; } } } -- cgit v1.1