summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2012-06-27 15:12:46 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2012-06-27 15:12:46 (GMT)
commit516f8e365dd94bfc9af0fb2d86516cae5bb2ec7f (patch)
tree075b660838b4ff0522500206911bd6eb7ee82203
parentac80e53da8b4df7cf01f986e395f8284f9357744 (diff)
downloadtcl-516f8e365dd94bfc9af0fb2d86516cae5bb2ec7f.zip
tcl-516f8e365dd94bfc9af0fb2d86516cae5bb2ec7f.tar.gz
tcl-516f8e365dd94bfc9af0fb2d86516cae5bb2ec7f.tar.bz2
Experimental support for UNC paths (through VFS) on UNIX/Mac
-rw-r--r--doc/filename.n7
-rw-r--r--generic/tclFileName.c8
-rw-r--r--tests/cmdAH.test8
-rw-r--r--tests/fileName.test6
4 files changed, 12 insertions, 17 deletions
diff --git a/doc/filename.n b/doc/filename.n
index d481fc9..f1cd703 100644
--- a/doc/filename.n
+++ b/doc/filename.n
@@ -47,7 +47,8 @@ absolute, and file names may contain any character other than slash.
The file names \fB\&.\fR and \fB\&..\fR are special and refer to the
current directory and the parent of the current directory respectively.
Multiple adjacent slash characters are interpreted as a single
-separator. Any number of trailing slash characters at the end of a
+separator, except for the first double slash \fB//\fR in absolute paths.
+Any number of trailing slash characters at the end of a
path are simply ignored, so the paths \fBfoo\fR, \fBfoo/\fR and
\fBfoo//\fR are all identical, and in particular \fBfoo/\fR does not
necessarily mean a directory is being referred.
@@ -150,9 +151,7 @@ The safest approach is to use names consisting of
alphanumeric characters only. Care should be taken with filenames
which contain spaces (common on Windows systems) and
filenames where the backslash is the directory separator (Windows
-native path names). Also Windows 3.1 only supports file
-names with a root of no more than 8 characters and an extension of no
-more than 3 characters.
+native path names).
.PP
On Windows platforms there are file and path length restrictions.
Complete paths or filenames longer than about 260 characters will lead
diff --git a/generic/tclFileName.c b/generic/tclFileName.c
index 48c5454..3e78a05 100644
--- a/generic/tclFileName.c
+++ b/generic/tclFileName.c
@@ -424,14 +424,12 @@ TclpGetNativePathType(
}
#endif
if (path[0] == '/') {
-#ifdef __CYGWIN__
/*
- * Check for Cygwin // network path prefix
+ * Check for "//" prefix
*/
if (path[1] == '/') {
path++;
}
-#endif
if (driveNameLengthPtr != NULL) {
/*
* We need this addition in case the QNX or Cygwin code was used.
@@ -665,15 +663,13 @@ SplitUnixPath(
if (*p == '/') {
Tcl_Obj *rootElt = Tcl_NewStringObj("/", 1);
p++;
-#ifdef __CYGWIN__
/*
- * Check for Cygwin // network path prefix
+ * Check for "//" prefix
*/
if (*p == '/') {
Tcl_AppendToObj(rootElt, "/", 1);
p++;
}
-#endif
Tcl_ListObjAppendElement(NULL, result, rootElt);
}
diff --git a/tests/cmdAH.test b/tests/cmdAH.test
index 291df8d..fbe51d2 100644
--- a/tests/cmdAH.test
+++ b/tests/cmdAH.test
@@ -303,19 +303,19 @@ test cmdAH-8.13 {Tcl_FileObjCmd: dirname} testsetplatform {
test cmdAH-8.14 {Tcl_FileObjCmd: dirname} testsetplatform {
testsetplatform unix
file dirname //foo
-} /
+} //
test cmdAH-8.15 {Tcl_FileObjCmd: dirname} testsetplatform {
testsetplatform unix
file dirname //foo/bar
-} /foo
+} //foo
test cmdAH-8.16 {Tcl_FileObjCmd: dirname} testsetplatform {
testsetplatform unix
file dirname {//foo\/bar/baz}
-} {/foo\/bar}
+} {//foo\/bar}
test cmdAH-8.17 {Tcl_FileObjCmd: dirname} testsetplatform {
testsetplatform unix
file dirname {//foo\/bar/baz/blat}
-} {/foo\/bar/baz}
+} {//foo\/bar/baz}
test cmdAH-8.18 {Tcl_FileObjCmd: dirname} testsetplatform {
testsetplatform unix
file dirname /foo//
diff --git a/tests/fileName.test b/tests/fileName.test
index 251f12c..aab8d33 100644
--- a/tests/fileName.test
+++ b/tests/fileName.test
@@ -196,7 +196,7 @@ test filename-4.12 {Tcl_SplitPath: unix} {testsetplatform} {
test filename-4.13 {Tcl_SplitPath: unix} {testsetplatform} {
testsetplatform unix
file split //foo
-} "[file split //] foo"
+} "// foo"
test filename-4.14 {Tcl_SplitPath: unix} {testsetplatform} {
testsetplatform unix
file split foo//bar
@@ -433,11 +433,11 @@ test filename-7.16 {Tcl_JoinPath: unix} {testsetplatform} {
test filename-7.17 {Tcl_JoinPath: unix} {testsetplatform} {
testsetplatform unix
file join //a b
-} "[file split //]a/b"
+} "//a/b"
test filename-7.18 {Tcl_JoinPath: unix} {testsetplatform} {
testsetplatform unix
file join /// a b
-} "[file split //]a/b"
+} "//a/b"
test filename-9.1 {Tcl_JoinPath: win} {testsetplatform} {
testsetplatform win