robustness improvement of all vfs
authorVince Darley <vincentdarley@sourceforge.net>
Sat, 8 Feb 2003 15:08:17 +0000 (15:08 +0000)
committerVince Darley <vincentdarley@sourceforge.net>
Sat, 8 Feb 2003 15:08:17 +0000 (15:08 +0000)
ChangeLog
library/ftpvfs.tcl
library/mk4vfs.tcl
library/tarvfs.tcl
library/webdavvfs.tcl
library/zipvfs.tcl

index 21320d07067ec2c574743308c942bdc8de9985b9..762e3c56e57973a1ce7729b946c9a10f64fdfee6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2003-02-08  Vince Darley <vincentdarley@sourceforge.net>
+
+       * library/*.tcl: made all 'matchindirectory' implementations
+       robust to whether they are passed a directory with a trailing
+       file-separator or not.  (Tcl doesn't document whether there
+       will be one, and optimisations to Tcl's filesystem require
+       this flexibility.  Also the use of 'file join' will actually
+       make the entire filesystem *more* efficient soon).
+       
 2003-02-06  Andreas Kupries  <andreask@activestate.com>
 
        * tclconfig/tcl.m4: Added SC_TCL_EARLY_FLAGS and
index 825057357da1c883696a631aa3730d1d3573a53f..9baaa30fcb02bc1e889c485c4159b54a4681b6d0 100644 (file)
@@ -235,12 +235,12 @@ proc vfs::ftp::matchindirectory {fd path actualpath pattern type} {
            } 
            if {[::vfs::matchDirectories $type]} {
                if {[string index $perms 0] == "d"} {
-                   lappend res "$actualpath$name"
+                   lappend res [file join $actualpath $name]
                }
            }
            if {[::vfs::matchFiles $type]} {
                if {[string index $perms 0] != "d"} {
-                   lappend res "$actualpath$name"
+                   lappend res [file join $actualpath $name]
                }
            }
            
index f0df8fd72c7ed845cba6fed50a1abbd637fdd1e7..db7c14325256b835487a0b1572dc85b5c735eacb 100644 (file)
@@ -85,7 +85,7 @@ namespace eval vfs::mk4 {
            set res [::mk4vfs::getdir $db $path $pattern]
        }
        foreach p [::vfs::matchCorrectTypes $type $res $actualpath] {
-           lappend newres "$actualpath$p"
+           lappend newres [file join $actualpath $p]
        }
        return $newres
     }
index cba6b202655b2233abd0559efc2e312262272650..2369ff915b19cf7f58226b585f2c5d1980fc9498 100644 (file)
@@ -60,7 +60,7 @@ proc vfs::tar::matchindirectory {tarfd path actualpath pattern type} {
 
     set newres [list]
     foreach p [::vfs::matchCorrectTypes $type $res $actualpath] {
-       lappend newres "$actualpath$p"
+       lappend newres [file join $actualpath $p]
     }
     return $newres
 }
index cce1f93b155b27d9b8d413fb273bbc3cfff7e055..a59a2e973abd2ced72a6bd09b19e55b90c81a1c1 100644 (file)
@@ -203,9 +203,10 @@ proc vfs::webdav::matchindirectory {dirurl extraHeadersList path actualpath patt
            if {[string match $pattern $name]} {
                puts "check: $name"
                if {$type == 0} {
-                   lappend res $actualpath$name
+                   lappend res [file join $actualpath $name]
                } else {
-                   eval lappend res [_matchtypes $item $actualpath$name $type]
+                   eval lappend res [_matchtypes $item \
+                     [file join $actualpath $name] $type]
                }
            }
            #puts "got: $res"
index 56da6c1e318607fadd3e2680bd05327930ecdb3c..9adde8f1f2c32a2fa4ef571f4a8f0c1399ed4ecc 100644 (file)
@@ -57,7 +57,7 @@ proc vfs::zip::matchindirectory {zipfd path actualpath pattern type} {
 
     set newres [list]
     foreach p [::vfs::matchCorrectTypes $type $res $actualpath] {
-       lappend newres "$actualpath$p"
+       lappend newres [file join $actualpath $p]
     }
     #::vfs::log "got $newres"
     return $newres