summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2015-06-08 17:37:55 +0200
committerCorinna Vinschen <corinna@vinschen.de>2015-06-08 17:37:55 +0200
commit117ebc802fe35dcaa404d52dda3437c09c817bef (patch)
tree03ac0a8b77478aca98eef75542efd74d761fe55c
parent4885352e1648012ca7f6e17e7ed5b07a77da1910 (diff)
downloadcygnal-117ebc802fe35dcaa404d52dda3437c09c817bef.tar.gz
cygnal-117ebc802fe35dcaa404d52dda3437c09c817bef.tar.bz2
cygnal-117ebc802fe35dcaa404d52dda3437c09c817bef.zip
Bind mounts require POSIX paths
* path.cc (from_fstab_line): Don't convert slashes to backslashes for bind mounts. Explain why. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--winsup/utils/ChangeLog5
-rw-r--r--winsup/utils/path.cc9
2 files changed, 12 insertions, 2 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index bfdb42ae6..70fef4ae7 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (from_fstab_line): Don't convert slashes to backslashes for
+ bind mounts. Explain why.
+
2015-04-21 Corinna Vinschen <corinna@vinschen.de>
* tzmap-from-unicode.org: Convert Calcutta to Kolkata.
diff --git a/winsup/utils/path.cc b/winsup/utils/path.cc
index d1d01e92b..e34741f92 100644
--- a/winsup/utils/path.cc
+++ b/winsup/utils/path.cc
@@ -1,7 +1,7 @@
/* path.cc
Copyright 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
- 2013 Red Hat, Inc.
+ 2013, 2015 Red Hat, Inc.
This file is part of Cygwin.
@@ -443,7 +443,12 @@ from_fstab_line (mnt_t *m, char *line, bool user)
return false;
}
m->posix = strdup (posix_path);
- unconvert_slashes (native_path);
+ /* Bind mounts require POSIX paths, otherwise the path is wrongly
+ prefixed with the Cygwin root dir when trying to convert it to
+ a Win32 path in mount(2). So don't convert slashes to backslashes
+ in this case. */
+ if (!(mount_flags & MOUNT_BIND))
+ unconvert_slashes (native_path);
m->native = strdup (native_path);
m->flags = mount_flags;
}