--- toast 2005/01/16 18:48:22 1.372 +++ toast 2005/01/17 04:46:17 1.373 @@ -448,16 +448,16 @@ sub whiledir(&$) { my($sub, $dir) = @_; - local(*DIR, $_); + local(*DIR); opendir(DIR, $dir) || error("opendir $dir: $!"); - while(defined($_ = readdir(DIR))) + my(@list) = sort(grep($_ ne "." && $_ ne "..", readdir(DIR))); + closedir(DIR); + my($result) = true; + for(@list) { - next if $_ eq "."; - next if $_ eq ".."; - last unless &$sub($_); + last unless $result = &$sub($_); } - closedir(DIR); - !defined($_); + return !!$result; } sub fordir(&@)