forked from hummypkg/webif
add ts iterate
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1833 2a923420-c742-0410-a762-8d5b09965624
This commit is contained in:
@@ -3,7 +3,8 @@
|
||||
source /mod/webif/lib/setup
|
||||
require system.class ts.class
|
||||
|
||||
proc do_shrink {ts} {
|
||||
ts iterate [lambda {ts} {
|
||||
#puts " [$ts get file]"
|
||||
if {[$ts flag "Shrunk"]} { return }
|
||||
|
||||
set file [file rootname [$ts get file]]
|
||||
@@ -26,34 +27,5 @@ proc do_shrink {ts} {
|
||||
puts " Flagging $file as shrunk..."
|
||||
$ts set_shrunk
|
||||
}
|
||||
}
|
||||
|
||||
proc entries {dir callback} {
|
||||
foreach entry [readdir -nocomplain $dir] {
|
||||
if {![string match {*.ts} $entry} continue
|
||||
if {[catch {set ts [ts fetch "$dir/$entry"]}]} continue
|
||||
if {$ts == 0} continue
|
||||
$callback $ts
|
||||
}
|
||||
}
|
||||
|
||||
proc scan {dir} {
|
||||
puts "Scanning $dir..."
|
||||
file stat "$dir/" st
|
||||
if {$st(dev) != $::rootdev} { return }
|
||||
|
||||
entries $dir do_shrink
|
||||
|
||||
foreach entry [readdir -nocomplain $dir] {
|
||||
if {[file isdirectory "$dir/$entry"]} {
|
||||
scan "$dir/$entry"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set root [system mediaroot]
|
||||
file stat "$root/" rootstat
|
||||
set rootdev $rootstat(dev)
|
||||
|
||||
scan $root
|
||||
}] 1
|
||||
|
||||
|
||||
@@ -392,3 +392,28 @@ proc {ts resetnew} {dir} {
|
||||
close $fd
|
||||
}
|
||||
|
||||
proc {ts iterate} {callback {verbose 0} {dir ""}} {{rootdev 0}} {
|
||||
require system.class
|
||||
if {$dir eq ""} {
|
||||
set dir [system mediaroot]
|
||||
file stat "$dir/" rootstat
|
||||
set rootdev $rootstat(dev)
|
||||
}
|
||||
|
||||
if {$verbose} { puts "Scanning directory ($dir)" }
|
||||
|
||||
file stat "$dir/" st
|
||||
if {$st(dev) != $rootdev} return
|
||||
|
||||
foreach entry [readdir -nocomplain $dir] {
|
||||
if {[file isdirectory "$dir/$entry"]} {
|
||||
ts iterate $callback $verbose "$dir/$entry"
|
||||
continue
|
||||
}
|
||||
if {![string match {*.ts} $entry]} continue
|
||||
if {[catch {set ts [ts fetch "$dir/$entry"]}]} continue
|
||||
if {$ts == 0} continue
|
||||
$callback $ts
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user