proc vat_dirlist {filename} { set url [ns_conn url] set dir $filename set directories [list] set files [list] # # Handle special case of AOLpress MiniWebs. # if {[nsv_get _ns_fastpath toppage] && [_ns_ismw $dir]} { set nvd [_ns_getnvd $dir] if [_ns_isaolpress] { return [ns_returnfile 200 application/x-navidoc $file] } set fp [open $nvd] while {[gets $fp line] >= 0} { if [string match Pages:* $line] { break } } gets $fp line close $fp set file [lindex [split $line \"] 1] if [file exists $dir/$file] { return [ns_returnredirect $file] } } # # Handle default case of directory listing. Simple # format is just the files while fancy includes # the size and modify time (which is more expensive). # set type [ns_config "ns/server/[ns_info server]" directorylisting none] ns_log Debug "vat_dirlist: url: '$url', type: '$type'" switch $type { simple { set simple 1 set list_join "

\n

" } fancy { set simple 0 set list_join "\n" } none - default { return [ns_returnnotfound] } } set hidedot [nsv_get _ns_fastpath hidedot] set location [ns_conn location] set prefix "${location}${url}" set up "

\[file\] ..

" if $simple { lappend directories "
$up" } else { lappend directories " " } set simple_list [list] set fancy_list [list] foreach f [lsort [glob -nocomplain $dir/*]] { set tail [file tail $f] if {$hidedot && [string match .* $tail]} { continue } set isdirectory [file isdirectory $f] if {$isdirectory} { set link_list directories set link " \[file\]${tail}" } else { set link_list files set link " \[/\]${tail}" } if $simple { #append list $link\n lappend simple_list $link } else { if [catch { file stat $f stat } errMsg ] { # append list " #\n #" lappend $link_list " \n " } else { set size [expr $stat(size) / 1000 + 1]K set mtime $stat(mtime) set time [clock format $mtime -format "%d-%h-%Y %H:%M"] # append list " #\n #" lappend $link_list " \n " } } } if $simple { lappend files "" } else { lappend files "
FileSizeDate
$up
$linkN/AN/A
$linkN/AN/A
$link$size$time
$link$size$time
" } ns_returnnotice 200 $url " [join $directories $list_join] [join $files $list_join]" }