diff cutils/util/__init__.py @ 278:822cf3a1da22

treesum: FIX: Removal of backslashes in output: do this only where really needed. Otherwise "backslashreplace" error encodings are "corrected" too.
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 21 Feb 2025 17:27:59 +0100
parents 0f4febf646f5
children 44e62e36cad4
line wrap: on
line diff
--- a/cutils/util/__init__.py	Fri Feb 21 16:51:03 2025 +0100
+++ b/cutils/util/__init__.py	Fri Feb 21 17:27:59 2025 +0100
@@ -270,17 +270,23 @@
         raise ValueError("unknown algorithm: {}".format(s))
 
 
-def normalize_filename(filename, strip_leading_dot_slash=False):
+def normalize_filename(filename, strip_dot_slashes=False):
     if isinstance(filename, bytes):
         filename = filename.replace(b"\\", b"/")
-        if strip_leading_dot_slash:
+        if strip_dot_slashes:
             while filename.startswith(b"./"):
                 filename = filename[2:]
+            # This also handles adjacent /./ cases
+            while b"/./" in filename:
+                filename = filename.replace(b"/./", b"/", 1)
     else:
         filename = filename.replace(u"\\", u"/")
-        if strip_leading_dot_slash:
+        if strip_dot_slashes:
             while filename.startswith(u"./"):
                 filename = filename[2:]
+            # This also handles adjacent /./ cases
+            while u"/./" in filename:
+                filename = filename.replace(u"/./", u"/", 1)
     return filename