[Midnightbsd-cvs] mports: Utils.pm: Add support for setting your own root and chdir

ctriv at midnightbsd.org ctriv at midnightbsd.org
Mon Nov 5 11:52:38 EST 2007


Log Message:
-----------
Add support for setting your own root and chdir failure callbacks to
recurse_ports();

Modified Files:
--------------
    mports/Tools/lib/Mport:
        Utils.pm (r1.4 -> r1.5)

-------------- next part --------------
Index: Utils.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Mport/Utils.pm,v
retrieving revision 1.4
retrieving revision 1.5
diff -LTools/lib/Mport/Utils.pm -LTools/lib/Mport/Utils.pm -u -r1.4 -r1.5
--- Tools/lib/Mport/Utils.pm
+++ Tools/lib/Mport/Utils.pm
@@ -25,19 +25,22 @@
   }
 }
 
-sub recurse_ports (&) {
-  my ($code) = @_;
+sub recurse_ports (&;@) {
+  my ($code, %args) = @_;
   my $orig = Cwd::getcwd();
   
-  _do_recurse($code, $ROOT);
+  my $root    = $args{root} || $ROOT;
+  my $nochdir = $args{nochdir} || sub { die "Couldn't chdir to @_: $!" };
+  
+  _do_recurse($code, $root, $nochdir);
   
   chdir($orig);
 }
 
 sub _do_recurse {
-  my ($code, $cwd) = @_;
+  my ($code, $cwd, $nochdir) = @_;
   
-  chdir($cwd) || die "Couldn't chdir to $cwd: $!\n";
+  chdir($cwd) || do { $nochdir->($cwd); return };
   
   # Calling make is expensive.  Only do so if we need to.
   if (-e 'pkg-descr' || -e 'pkg-plist') {
@@ -54,7 +57,7 @@
       close($make);
       if (@dirs) {
         foreach my $dir (@dirs) {
-          _do_recurse($code, "$cwd/$dir");
+          _do_recurse($code, "$cwd/$dir", $nochdir);
         }
       }   
      


More information about the Midnightbsd-cvs mailing list