home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource / 22_15.tcl < prev    next >
Text File  |  2003-04-16  |  768b  |  37 lines

  1. #
  2. # Example 22-15
  3. # Selecting data with mk::select.
  4. #
  5.  
  6. proc KitWalk {tag dir {indent 0}} {
  7.     set prefix [string repeat " " $indent]
  8.     puts "$prefix[mk::get $tag.dirs!$dir name]/"
  9.     incr indent 2
  10.  
  11.     # List the plain files in the directory, if any
  12.  
  13.     foreach j [mk::select $tag.dirs!$dir.files] {
  14.         puts "$prefix  [mk::get $tag.dirs!$dir.files!$j name]"
  15.     } 
  16.  
  17.     # Recursively process directories where $dir is the par-ent
  18.  
  19.     foreach i [mk::select $tag.dirs parent $dir] {
  20.         KitWalk $tag $i $indent
  21.     }
  22. }
  23. proc KitInit {starkit} {
  24.     mk::file open starkit $starkit
  25.     if {[mk::file views starkit] != "dirs"} {
  26.         mk::file close $starkit
  27.         error "This database is not a starkit"
  28.     }
  29.     return starkit        ;# db tag
  30. }
  31. proc KitTest {} {
  32.     set tag [KitInit tclhttpd.kit]
  33.     KitWalk $tag 0
  34. }
  35.  
  36.  
  37.