tools/pyboard.py: Use '/' exclusively when dealing with paths.

Currently, certain mpremote filesystem operations can fail on Windows due
to a mixing of '/' and '\' for path separators.  Eg if filesystem_command()
is called with a destination that ends in / then dest.endswith(os.path.sep)
will return False, which gives the wrong behaviour (it does end in a path
separator).

For similar reasons to 7e9a15966a, it's best
to use '/' everywhere in pyboard.py and mpremote, because the target device
understands only '/'.  mpremote already does this, so the remaining place
to fix it is in pyboard.y, to convert all incoming paths to use '/' instead
of '\'.

This effectively reverts 57fd66b80f which
tried to fix the problem in a different way.

See also related 1f84440538.

Signed-off-by: Damien George <damien@micropython.org>
pull/10821/head
Damien George 2023-02-23 17:32:04 +11:00
rodzic e9335e4dea
commit 5327cd1021
1 zmienionych plików z 4 dodań i 3 usunięć

Wyświetl plik

@ -663,15 +663,16 @@ def filesystem_command(pyb, args, progress_callback=None, verbose=False):
def fname_remote(src):
if src.startswith(":"):
src = src[1:]
return src
# Convert all path separators to "/", because that's what a remote device uses.
return src.replace(os.path.sep, "/")
def fname_cp_dest(src, dest):
_, src = os.path.split(src)
if dest is None or dest == "":
dest = src
elif dest == ".":
dest = os.path.join(".", src)
elif dest.endswith(os.path.sep):
dest = "/".join(".", src)
elif dest.endswith("/"):
dest += src
return dest