aboutsummaryrefslogtreecommitdiff
path: root/build2
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-07-24 14:45:54 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-07-24 14:45:54 +0300
commitc18a8d2d43f22ccf0b21461b1f0d3395d4e50c1f (patch)
treec0fc2219e14bab2dea2052a13718efd12f7c34f3 /build2
parent9728b252c5ec85b924811f9c12df596d4e1c474e (diff)
Change dir_path/string concatenation semantics
Diffstat (limited to 'build2')
-rw-r--r--build2/functions-path.cxx22
1 files changed, 8 insertions, 14 deletions
diff --git a/build2/functions-path.cxx b/build2/functions-path.cxx
index 81cd01f..4542858 100644
--- a/build2/functions-path.cxx
+++ b/build2/functions-path.cxx
@@ -48,23 +48,17 @@ namespace build2
concat_dir_path_string (dir_path l, string sr)
{
if (path::traits::is_separator (sr[0])) // '\0' if empty.
- {
sr.erase (0, 1);
- path pr (move (sr));
- pr.canonicalize (); // Convert to canonical directory separators.
- // If RHS is syntactically a directory (ends with a trailing slash),
- // then return it as dir_path, not path.
- //
- if (pr.to_directory () || pr.empty ())
- l /= path_cast<dir_path> (move (pr));
- else
- return value (path_cast<path> (move (l)) /= pr);
- }
- else
- l += sr;
+ path pr (move (sr));
+ pr.canonicalize (); // Convert to canonical directory separators.
- return value (move (l));
+ // If RHS is syntactically a directory (ends with a trailing slash), then
+ // return it as dir_path, not path.
+ //
+ return pr.to_directory () || pr.empty ()
+ ? value (move (l /= path_cast<dir_path> (move (pr))))
+ : value (path_cast<path> (move (l)) /= pr);
}
void