[PATCH] Allow scp to copy files that start with a Windows drive name.
sam at hocevar.net
Wed Sep 21 02:56:10 AEST 2016
On Tue, Sep 20, 2016, Scott Neugroschl wrote:
> This patch changes the behaviour (only on Cygwin) by considering that a
> single letter followed by a colon is a Windows drive name and thus an
> absolute path. This is also more consistent with the manual page that
> recommends to use absolute pathnames “to avoid scp treating file names
> containing ‘:’ as host specifiers”.
> Is this really necessary? Especially since it's a Cygwin specific patch, what is wrong with simply using /cygdrive/C/foo/bar?
The patch uses HAVE_CYGWIN but is not Cygwin-specific, it also applies to
MSYS2 which is a modern Cygwin fork and does not have /cygdrive/C/ (it uses /c/
Also an interactive user may immediately correct the error by changing
the path to a Unix-like one instead, but sometimes the arguments are not
user-controlled, or scp is used together with non-Cygwin applications, or is
embedded into a larger script that expects scp to behave as documented for
absolute paths. From a least surprise perspective, I believe the correct place
to fix this is indeed in scp.
Finally, drives in /cygdrive/ (or in MSYS2 /c/) are not immediately
accessible; a newly mounted network device or thumb drive will fail to appear
unless the terminal is closed and a new one is opened. If the shell is a child
of sshd.exe it would even require a restart of the SSH server.
More information about the openssh-unix-dev