diff --git a/CONTROL/control b/CONTROL/control index b726daa..5a1b90d 100644 --- a/CONTROL/control +++ b/CONTROL/control @@ -1,9 +1,9 @@ Package: sweeper Priority: optional Section: misc -Version: 2.0.17 +Version: 2.1.0 Architecture: mipsel Maintainer: af123@hummypkg.org.uk -Depends: webif(>=1.2.5-10) +Depends: webif(>=1.3.0-1) Description: Sweeper is a package for managing recordings in a variety of ways using custom rules [See forum for details] Tags: http://hummy.tv/forum/threads/5138/ diff --git a/webif/plugin/sweeper/auto.hook b/webif/plugin/sweeper/auto.hook index 455cfd0..c5b52d7 100644 --- a/webif/plugin/sweeper/auto.hook +++ b/webif/plugin/sweeper/auto.hook @@ -985,7 +985,7 @@ proc ::sweeper::apply_folder_rules {dir rules} { } } -proc ::sweeper::apply_rules {dir rules {depth 0}} { +proc ::sweeper::apply_rules {dir rules {depth 0} {seen {}}} { log "" 2 log "--- SWEEP($depth) STARTING FOR $dir ---" 2 @@ -996,7 +996,14 @@ proc ::sweeper::apply_rules {dir rules {depth 0}} { return } - set moredepth 0 + file stat $dir st + set key "$st(dev):$st(ino)" + if {$key in $seen} { + log "Already seen $dir ($key)" 2 + return + } + lappend seen $key + set dirs {} foreach e [readdir -nocomplain $dir] { set entry "$dir/$e" @@ -1031,16 +1038,28 @@ proc ::sweeper::apply_rules {dir rules {depth 0}} { if {[llength $rule] < 3} continue set rule [lassign $rule level] if {$level < $depth} continue - if {$level > $depth} { incr moredepth } if {[::sweeper::runrule $ts $rule 0]} break } } + set moredepth 0 + foreach rule $rules { + set level [lindex $rule 0] + if {$level > $depth} { + incr moredepth + break + } + } + # No rules require greater recursion if {!$moredepth} return foreach dir $dirs { - ::sweeper::apply_rules $dir $rules $($depth + 1) + ::sweeper::apply_rules $dir $rules $($depth + 1) $seen + + file stat $dir st + set key "$st(dev):$st(ino)" + lappend seen $key } } diff --git a/webif/plugin/sweeper/edit.jim b/webif/plugin/sweeper/edit.jim index f8c9096..977e48f 100755 --- a/webif/plugin/sweeper/edit.jim +++ b/webif/plugin/sweeper/edit.jim @@ -66,7 +66,7 @@ Add pre-defined ruleset: Unnamed rule - + @@ -78,19 +78,19 @@ Add pre-defined ruleset: title="Enable/Disable Rule"> - - - - @@ -100,7 +100,7 @@ Add pre-defined ruleset: OK" $test] } else { puts [format "%-70s => FAIL" $test] - puts " $ret" + puts " ($ret)/($expected)" } }