1
2# recursive directory listing, a bit like "ls -lR"
3  proc listall {dirs} {
4    while {[llength $dirs] > 0} {
5      set dir [lindex $dirs 0]
6      set dirs [lrange $dirs 1 end]
7      puts "\n$dir:"
8      set entries [glob -nocomplain [file join $dir *]]
9      #if {[llength $entries] > 0} { puts "" }
10      foreach path [lsort $entries] {
11	if {[file isdir $path]} {
12	  set len "         "
13	  set tim "                 dir"
14	  set suf "/"
15	  lappend dirs $path
16	} else {
17	  set len [format %10d [file size $path]]
18	  set tim [clock format [file mtime $path] -format {%Y/%m/%d %H:%M:%S}]
19	  set suf ""
20	}
21	puts "$len  $tim  [file tail $path]$suf"
22      }
23    }
24    puts ""
25  }
26
27set fname [lindex $argv 0]
28if {[llength $argv] != 1 || ![file exists $fname]} {
29    puts stderr "Usage: $argv0 file"
30    exit 1
31}
32
33vfs::mk4::Mount $fname $fname -readonly
34listall $fname
35vfs::unmount $fname
36