ad_find_all_files { -include_backup 0 -include_dirs 0 -max_depth 10 } pathWhat it does:
Returns a list of full paths to all files under $path in the directory tree (descending the tree to a depth of up to $max_depth). Includes backup files only if $include_backup is true; includes directories in the returned list only if $include_dirs is true. Ignores all files for which apm_ignore_file_p returns true. Clients should not depend on the order of files returned.Defined in: /web/philip/packages/acs-core/apm-procs.tcl
Source code:
arg_parser_for_ad_find_all_files $args # Use the examined_files array to track files that we've examined. array set examined_files [list] # A list of files that we will return (in the order in which we # examined them). set files [list] # A list of files that we still need to examine. set files_to_examine [list $path] # Perform a breadth-first search of the file tree. For each level, # examine files in $files_to_examine; if we encounter any directories, # add contained files to $new_files_to_examine (which will become # $files_to_examine in the next iteration). while { [incr max_depth -1] > 0 && [llength $files_to_examine] != 0 } { set new_files_to_examine [list] foreach file $files_to_examine { # Only examine the file if we haven't already. (This is just a safeguard # in case, e.g., Tcl decides to play funny games with symbolic links so # we end up encountering the same file twice.) if { ![info exists examined_files($file)] } { # Remember that we've examined the file. set examined_files($file) 1 # If (a) we shouldn't ignore the file, and (b) either it's not a # backup file or we specifically want to include backup files in # our list... if { ![apm_ignore_file_p $file] && ($include_backup == 1 || ![apm_backup_file_p $file]) } { # If it's a file, add to our list. If it's a # directory, add its contents to our list of files to # examine next time. if { [file isfile $file] } { lappend files $file } elseif { [file isdirectory $file] } { if { $include_dirs == 1 } { lappend files $file } set new_files_to_examine [concat $new_files_to_examine [glob -nocomplain "$file/*"]] } } } } set files_to_examine $new_files_to_examine } return $files