From 0f480cee70a2bf0e4a99b9cfcd93194a00aa8f81 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 5 Oct 2021 13:39:13 +0200 Subject: Docker: allow windows style paths in settings Makes sure to convert it to unix style path on the target and use the correct capitalisation on the host Change-Id: I0c6dff47c34c1844a8198c3215ea857fdb6375c7 Reviewed-by: hjk Reviewed-by: Christian Stenger --- src/plugins/docker/dockerdevice.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index bc732796a4..11be0ce2b0 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -834,9 +834,18 @@ void DockerDevicePrivate::startContainer() dockerRun.addArgs({"-u", QString("%1:%2").arg(getuid()).arg(getgid())}); #endif - for (const QString &mount : qAsConst(m_data.mounts)) { - if (!mount.isEmpty()) - dockerRun.addArgs({"-v", mount + ':' + mount}); + for (QString mount : qAsConst(m_data.mounts)) { + if (mount.isEmpty()) + continue; + // make sure to convert windows style paths to unix style paths with the file system case: + // C:/dev/src -> /c/dev/src + if (const FilePath mountPath = FilePath::fromUserInput(mount).normalizedPathName(); + mountPath.startsWithDriveLetter()) { + const QChar lowerDriveLetter = mountPath.path().at(0).toLower(); + const FilePath path = FilePath::fromUserInput(mountPath.path().mid(2)); // strip C: + mount = '/' + lowerDriveLetter + path.path(); + } + dockerRun.addArgs({"-v", mount + ':' + mount}); } dockerRun.addArgs({"--entrypoint", "/bin/sh", m_data.imageId}); -- cgit v1.2.3