This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Problematic interpretion of paths starting with double slashes
- From: "Sven Eden" <sven dot eden at gmx dot de>
- To: cygwin at cygwin dot com
- Date: Tue, 12 Jun 2018 10:53:50 +0200
- Subject: Problematic interpretion of paths starting with double slashes
- Sensitivity: Normal
Hello everybody,
I have a problem with a script that wants to copy a file,
which has a variable paths build from various variables.
The first variable is a possible prefix, the second an
absolute path. If no prefix is needed, the first consists of
just a slash.
What I now see is the following:
--------
# 09:29:17 SEden@CHH0711 ~ >
rm -rf /tmp/foo
# 09:29:37 SEden@CHH0711 ~ >
mkdir -p /tmp/foo
# 09:29:42 SEden@CHH0711 ~ >
touch /tmp/foo/bar
# 09:29:59 SEden@CHH0711 ~ >
cp //tmp/foo/bar /tmp/foo/baz
cp: cannot stat '//tmp/foo/bar': No such file or directory
--------
This puzzled me, because this works perfectly well on every
GNU/Linux (plus WSL) system I tried. Actually it is
completely in order to double any slashes.
This behavior breaks quite some Makefiles...
I am completely aware that §4.13 of the Open Group Base
Specification Issue 7 (IEEE Std 1003.1-2017) reads:
"If a pathname begins with two successive <slash>
characters, the first component following the leading
<slash> characters may be interpreted in an
implementation-defined manner, although more than two
leading <slash> characters shall be treated as a single
<slash> character."
My question therefore is, whether the behavior can be gotten
nearer what every other GNU/Linux system does.
Maybe, if said first component can not be resolved as an smb
host, try an absolute path instead?
On any Linux system, 'stat -c "%i" / //' would
show the same inode number twice:
--------
stat -c "%2n %f %i" / //
/ 41ed 48976645948727610
// 41ed 48976645948727610
--------
On Cygwin we get:
--------
stat -c "%2n %f %i" / //
/ 41ed 4222124652325260
// 416d 18014896789143535314
--------
I have searched the cygwin mailing list, but all I could find
was some discussion about UNC paths from 1997.
So, what do you think?
Sincerely
Sven
P.S An example of a failing script line is:
https://github.com/gentoo/gentoo/blob/331976f/eclass/toolchain.eclass#L2136
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple