This procedure is defined in the server but not documented via ad_proc or proc_doc and may be intended as a private interface.
The procedure is defined as:
proc nsmcp::accessScanDiscover {paths rotations maxFiles} {
set files {}
set identities {}
set omitted 0
set unavailable 0
set ignored 0
set candidates {}
set rotated {}
set source 0
foreach path $paths {
# Reserve current files before rotations, even with multiple sources.
if {[llength $candidates]<$maxFiles} {
lappend candidates [list $path $source false]
} else {
incr omitted
}
if {$rotations} {
# glob only lists the configured basename's siblings. Retain at most
# maxFiles rotation candidates, preferring recently modified files.
set base [file tail $path]
set pattern [string map {\\ \\\\ [ \\[ ] \\] * \\* ? \\?} $base]
if {[catch {
glob -nocomplain -directory [file dirname $path] -- $pattern.*
} siblings]} {
incr unavailable
set siblings {}
}
foreach candidate $siblings {
set suffix [string range [file tail $candidate] [expr {[string length $base]+1}] end]
if {![regexp {^[0-9][0-9T_.:-]*(?:\.gz)?$} $suffix]} {
incr ignored
continue
}
if {[catch {
file lstat $candidate st
}]} {
incr unavailable
continue
}
if {$st(type) ne "file"} {
incr ignored
continue
}
lappend rotated [list $st(mtime) $candidate $source]
set rotated [lsort -integer -decreasing -index 0 $rotated]
if {[llength $rotated]>$maxFiles} {
set rotated [lrange $rotated 0 [expr {$maxFiles-1}]]
incr omitted
}
}
}
incr source
}
foreach entry $rotated {
lassign $entry mtime path source
lappend candidates [list $path $source true]
}
foreach candidate $candidates {
lassign $candidate filename source rotation
if {[catch {
file stat $filename st
}]} {
incr unavailable
continue
}
set identity [list $st(dev) $st(ino)]
if {$identity in $identities} {
continue
}
if {[llength $files]>=$maxFiles} {
incr omitted
continue
}
if {[catch {
accessScanSnapshot $filename $source $rotation
} snapshot]} {
incr unavailable
continue
}
lappend identities [dict get $snapshot identity]
dict set snapshot fileIndex [llength $files]
lappend files $snapshot
}
return [dict create files $files omittedFiles $omitted unavailableFiles $unavailable ignoredCandidates $ignored]
}