Fix to directory globs
authorVince Darley <vincentdarley@sourceforge.net>
Wed, 8 Aug 2001 17:05:06 +0000 (17:05 +0000)
committerVince Darley <vincentdarley@sourceforge.net>
Wed, 8 Aug 2001 17:05:06 +0000 (17:05 +0000)
library/vfsUtils.tcl
library/zipvfs.tcl

index c581891c597bed7cfabab62dce1bc2785a7cea6b..d5c24f1a731a1922a6cac5d3377c527a35e0e036 100644 (file)
@@ -91,7 +91,7 @@ proc ::vfs::auto {filename args} {
 # we match properly when given 'directory'
 # specifications, since this is used for
 # recursive globbing by Tcl.
-proc vfs::matchCorrectTypes {types filelist} {
+proc vfs::matchCorrectTypes {types filelist {inDir ""}} {
     if {$types != 0} {
        # Which types to return.  We must do special
        # handling of directories and files.
@@ -104,16 +104,33 @@ proc vfs::matchCorrectTypes {types filelist} {
            return [list]
        }
        set newres [list]
-       if {$file} {
-           foreach r $filelist {
-               if {[::file isfile $r]} {
-                   lappend newres $r
+       if {[string length $inDir]} {
+           if {$file} {
+               foreach r $filelist {
+                   if {[::file isfile [file join $inDir $r]]} {
+                       lappend newres $r
+                   }
+               }
+           } else {
+               foreach r $filelist {
+                   #puts [file join $inDir $r]
+                   if {[::file isdirectory [file join $inDir $r]]} {
+                       lappend newres $r
+                   }
                }
            }
        } else {
-           foreach r $filelist {
-               if {[::file isdirectory $r]} {
-                   lappend newres $r
+           if {$file} {
+               foreach r $filelist {
+                   if {[::file isfile $r]} {
+                       lappend newres $r
+                   }
+               }
+           } else {
+               foreach r $filelist {
+                   if {[::file isdirectory $r]} {
+                       lappend newres $r
+                   }
                }
            }
        }
index 4a2602c0f0b13f649e4fbaaa4dabd17602a8feec..3d40da5b53fa2bc76f1bf3cc8eaec6b5869d3d8d 100644 (file)
@@ -32,8 +32,9 @@ proc vfs::zip::handler {zipfd cmd root relative actualpath args} {
 proc vfs::zip::matchindirectory {zipfd path actualpath pattern type} {
     puts stderr [list matchindirectory $path $actualpath $pattern $type]
     set res [::zip::getdir $zipfd $path $pattern]
+    #puts stderr "got $res"
     set newres [list]
-    foreach p [::vfs::matchCorrectTypes $type $res] {
+    foreach p [::vfs::matchCorrectTypes $type $res $actualpath] {
        lappend newres "$actualpath$p"
     }
     #puts "got $newres"