From 594636e0e3ec4de1c0ff6b88996da04798a44af2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Mon, 13 Apr 2015 10:22:43 +0200 Subject: [PATCH] Make sure to operate on unicode when sanitzing sd filenames Should fix #834 --- src/octoprint/util/__init__.py | 5 +++++ src/octoprint/util/virtual.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/octoprint/util/__init__.py b/src/octoprint/util/__init__.py index ea4012a3..cb47af81 100644 --- a/src/octoprint/util/__init__.py +++ b/src/octoprint/util/__init__.py @@ -306,6 +306,11 @@ def find_collision_free_name(filename, extension, existing_filenames, max_power= # TODO unit test! + if not isinstance(filename, unicode): + filename = unicode(filename) + if not isinstance(extension, unicode): + extension = unicode(extension) + def make_valid(text): return re.sub(r"\s+", "_", text.translate({ord(i):None for i in ".\"/\\[]:;=,"})).lower() diff --git a/src/octoprint/util/virtual.py b/src/octoprint/util/virtual.py index 32e32cdb..633aa301 100644 --- a/src/octoprint/util/virtual.py +++ b/src/octoprint/util/virtual.py @@ -313,7 +313,7 @@ class VirtualPrinter(): def _selectSdFile(self, filename): if filename.startswith("/"): filename = filename[1:] - file = os.path.join(self._virtualSd, filename).lower() + file = os.path.join(self._virtualSd, filename.lower()) if not os.path.exists(file) or not os.path.isfile(file): self.outgoing.put("open failed, File: %s." % filename) else: