diff --git a/picard/util/__init__.py b/picard/util/__init__.py index 56a80f2a3..294e11064 100644 --- a/picard/util/__init__.py +++ b/picard/util/__init__.py @@ -134,8 +134,11 @@ def replace_win32_incompat(string, repl=u"_"): """Replace win32 filename incompatible characters from ``string`` by ``repl``.""" # Don't replace : with _ for windows drive - drive, rest = ntpath.splitdrive(string) - return drive + _re_win32_incompat.sub(repl, rest) + if os.path.isabs(string): + drive, rest = ntpath.splitdrive(string) + return drive + _re_win32_incompat.sub(repl, rest) + else: + return _re_win32_incompat.sub(repl, string) _re_non_alphanum = re.compile(r'\W+', re.UNICODE) diff --git a/test/test_utils.py b/test/test_utils.py index 28a49d737..64121d299 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -19,6 +19,8 @@ class ReplaceWin32IncompatTest(unittest.TestCase): "c:\\test\\d_/2") self.assertEqual(util.replace_win32_incompat("A\"*:<>?|b"), "A_______b") + self.assertEqual(util.replace_win32_incompat("d:test"), + "d_test") def test_incorrect(self): self.assertNotEqual(util.replace_win32_incompat("c:\\test\\te\"st2"),