Index: lib/xvfs/xvfs.tcl ================================================================== --- lib/xvfs/xvfs.tcl +++ lib/xvfs/xvfs.tcl @@ -166,10 +166,11 @@ continue } set inputFile [file join $workingDirectory $file] set outputFile [file join $outputDirectory [encoding convertto utf-8 $file]] + set subDirectoryName [file join $outputDirectory $file] if {[info command ::xvfs::callback::setOutputFileName] ne ""} { set outputFile [::xvfs::callback::setOutputFileName $file $workingDirectory $inputFile $outputDirectory $outputFile] if {$outputFile eq "/"} { continue @@ -181,15 +182,13 @@ file lstat $inputFile fileInfo } if {![info exists fileInfo]} { puts stderr "warning: Unable to access $inputFile, skipping" } - - lappend children [file tail $file] if {$fileInfo(type) eq "directory"} { - lappend subDirectories $outputFile + lappend subDirectories $subDirectoryName continue } processFile $fsName $inputFile $outputFile [array get fileInfo] lappend outputFiles $outputFile @@ -206,10 +205,20 @@ } if {$outputFile ne "/"} { unset -nocomplain fileInfo file stat $inputFile fileInfo + set children [list] + set outputFileLen [string length $outputFile] + foreach child $outputFiles { + if {[string range /$child 0 $outputFileLen] eq "/${outputFile}"} { + set child [string trimleft [string range $child $outputFileLen end] /] + if {![string match "*/*" $child]} { + lappend children $child + } + } + } set fileInfo(children) $children processFile $fsName $inputFile $outputFile [array get fileInfo] lappend outputFiles $outputFile }