--- 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(&@)