From 6cb960121c4195dd9d12c92d4f3ff2819fad143e Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 1 Dec 2016 14:59:32 +0200 Subject: Add path.canonicalize() function --- build2/functions-path.cxx | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'build2') diff --git a/build2/functions-path.cxx b/build2/functions-path.cxx index e21609c..243f0d7 100644 --- a/build2/functions-path.cxx +++ b/build2/functions-path.cxx @@ -93,6 +93,30 @@ namespace build2 return r; }; + // canonicalize + // + f["canonicalize"] = [](path p) {p.canonicalize (); return p;}; + f["canonicalize"] = [](dir_path p) {p.canonicalize (); return p;}; + + f["canonicalize"] = [](paths v) {for (auto& p: v) p.canonicalize (); return v;}; + f["canonicalize"] = [](dir_paths v) {for (auto& p: v) p.canonicalize (); return v;}; + + f[".canonicalize"] = [](names ns) + { + // For each path decide based on the presence of a trailing slash + // whether it is a directory. Return as untyped list of (potentially + // mixed) paths. + // + for (name& n: ns) + { + if (n.directory ()) + n.dir.canonicalize (); + else + n.value = convert (move (n)).canonicalize ().string (); + } + return ns; + }; + // normalize // f["normalize"] = [](path p) {p.normalize (); return p;}; -- cgit v1.1