Index: /locker/sbin/parallel-find.pl
===================================================================
--- /locker/sbin/parallel-find.pl	(revision 728)
+++ /locker/sbin/parallel-find.pl	(revision 729)
@@ -11,5 +11,5 @@
 system("mkdir", $dump) && die;
 
-use Proc::Queue size => 40, debug => 0;
+use Proc::Queue size => 40, debug => 0, trace => 0;
 use POSIX ":sys_wait_h"; # imports WNOHANG
 
@@ -20,15 +20,29 @@
 # use -xdev.  May miss libraries stuff.
 
+sub find ($$) {
+    my $user = shift;
+    my $homedir = shift;
+
+    open my $files, "find $homedir/web_scripts -xdev -name .scripts-version 2>/dev/null |";
+    open my $out, ">$dump/$user";
+    while (my $f = <$files>) {
+        print $out $f;
+    }
+    return 0;
+}
+
 while (<FILE>) {
     my ($user, $homedir) = /^([^ ]*) (.*)$/;
     my $f=fork;
     if(defined ($f) and $f==0) {
+        if ($homedir !~ m|^/afs/athena|) {
+            print "ignoring non-athena-cell $user $homedir\n";
+            exit(0);
+        }
 	print "$user\n";
-	my $ret = system("find $homedir/web_scripts -xdev -name .scripts-version -print > $dump/$user 2> /dev/null");
+        $ret = find($user, $homedir);
 	sleep rand 1;
 	exit($ret);
     }
-    while (waitpid(-1, WNOHANG)>0) {
-        $? && die "child exited with error: $?";
-    }; # reaps childs
+    1 while waitpid(-1, WNOHANG)>0; # avoids memory leaks in Proc::Queue
 }
