From cbe4273740836968e4e39039408754c62b980306 Mon Sep 17 00:00:00 2001
From: Timothee Cour <timothee.cour2@gmail.com>
Date: Tue, 14 Jan 2020 13:26:37 -0800
Subject: [PATCH] export normalizePathEnd

---
 changelog.md    | 2 ++
 lib/pure/os.nim | 9 +++++++++
 2 files changed, 11 insertions(+)

diff --git a/changelog.md b/changelog.md
index 17eedb3a104d9..34ecd66a093de 100644
--- a/changelog.md
+++ b/changelog.md
@@ -51,6 +51,8 @@
   and `typetraits.get` to get the ith element of a type tuple.
 - Added `typetraits.genericParams` to return a tuple of generic params from a generic instantiation
 
+- Added `os.normalizePathEnd` for additional path sanitization.
+
 ## Library changes
 
 - `asyncdispatch.drain` now properly takes into account `selector.hasPendingOperations`
diff --git a/lib/pure/os.nim b/lib/pure/os.nim
index ba64056216efd..a329d232a65f3 100644
--- a/lib/pure/os.nim
+++ b/lib/pure/os.nim
@@ -103,9 +103,18 @@ proc normalizePathEnd(path: var string, trailingSep = false) =
     path = $DirSep
 
 proc normalizePathEnd(path: string, trailingSep = false): string =
+  ## outplace overload
+  runnableExamples:
+    when defined(posix):
+      assert normalizePathEnd("/lib//", trailingSep = true) == "/lib/"
+      assert normalizePathEnd("lib//", trailingSep = false) == "lib"
+      assert normalizePathEnd("", trailingSep = true) == "" # not / !
   result = path
   result.normalizePathEnd(trailingSep)
 
+when (NimMajor, NimMinor) >= (1, 1):
+  export normalizePathEnd
+
 proc joinPath*(head, tail: string): string {.
   noSideEffect, rtl, extern: "nos$1".} =
   ## Joins two directory names to one.