From 584e8fce074286cbf1a5bf0c79265f789c050c59 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 27 Aug 2020 10:19:38 +0200 Subject: Add ability to pass alternative dir separator to path::canonicalize() This, for example, can be used to make paths with forward slashes on Windows. --- libbutl/path.ixx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'libbutl/path.ixx') diff --git a/libbutl/path.ixx b/libbutl/path.ixx index 8512286..9c96cfc 100644 --- a/libbutl/path.ixx +++ b/libbutl/path.ixx @@ -396,12 +396,20 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. template inline basic_path& basic_path:: - canonicalize () + canonicalize (char ds) { - traits_type::canonicalize (this->path_); + traits_type::canonicalize (this->path_, ds); - if (this->tsep_ > 1) // Non-canonical trailing separator. - this->tsep_ = 1; + // Canonicalize the trailing separator if any. + // + if (this->tsep_ > 0) + { + auto dss (traits_type::directory_separators); + difference_type i (ds == '\0' ? 1 : strchr (dss, ds) - dss + 1); + + if (this->tsep_ != i) + this->tsep_ = i; + } return *this; } -- cgit v1.1