From 532e2085deeddd3e94cfbee1ded1e5917aff2b59 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 24 Aug 2015 10:21:59 +0200 Subject: Add support for reversing project qualification to string value --- build/variable.cxx | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'build') diff --git a/build/variable.cxx b/build/variable.cxx index d215b02..03c910d 100644 --- a/build/variable.cxx +++ b/build/variable.cxx @@ -144,6 +144,15 @@ namespace build bool value_traits:: assign (name& n) { + // The below code is quite convoluted because we don't want to + // modify the name until we know it good (if it is not, then it + // will most likely be printed by the caller in diagnostics). + + // Suspend project qualification. + // + const string* p (n.proj); + n.proj = nullptr; + // Convert directory to string. // if (n.directory ()) @@ -158,7 +167,23 @@ namespace build n.value += '/'; } - return n.simple (); + if (!n.simple ()) + { + n.proj = p; // Restore. + return false; + } + + // Convert project qualification to its string representation. + // + if (p != nullptr) + { + string s (*p); + s += '%'; + s += n.value; + s.swap (n.value); + } + + return true; } static bool -- cgit v1.1