aboutsummaryrefslogtreecommitdiffstats
path: root/src/fs/Traits.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs/Traits.cxx')
-rw-r--r--src/fs/Traits.cxx25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/fs/Traits.cxx b/src/fs/Traits.cxx
index 2c3ce075b..aaf0a59e1 100644
--- a/src/fs/Traits.cxx
+++ b/src/fs/Traits.cxx
@@ -22,6 +22,31 @@
#include <string.h>
+PathTraits::string
+PathTraits::BuildFS(PathTraits::const_pointer a, size_t a_size,
+ PathTraits::const_pointer b, size_t b_size)
+{
+ assert(a != nullptr);
+ assert(b != nullptr);
+
+ if (a_size == 0)
+ return string(b, b_size);
+ if (b_size == 0)
+ return string(a, a_size);
+
+ string result(a, a_size);
+
+ if (!IsSeparatorFS(a[a_size - 1]))
+ result.push_back(SEPARATOR_FS);
+
+ if (IsSeparatorFS(b[0]))
+ result.append(b + 1, b_size - 1);
+ else
+ result.append(b, b_size);
+
+ return result;
+}
+
const char *
PathTraits::GetBaseUTF8(const char *p)
{