Read the packages file in strictly in darcs-all and push-all
authorIan Lynagh <igloo@earth.li>
Mon, 25 Aug 2008 14:59:08 +0000 (14:59 +0000)
committerIan Lynagh <igloo@earth.li>
Mon, 25 Aug 2008 14:59:08 +0000 (14:59 +0000)
This fixes a problem where darcs tries to update it while perl has it
open. On Windows this fails. Spotted by Claus Reinke.

darcs-all
push-all

index 6c8b406..483cd9d 100644 (file)
--- a/darcs-all
+++ b/darcs-all
@@ -55,9 +55,13 @@ sub darcsall {
     my $localpath;
     my $path;
     my $tag;
+    my @repos;
 
     open IN, "< packages" or die "Can't open packages file";
-    while (<IN>) {
+    @repos = <IN>;
+    close IN;
+
+    foreach (@repos) {
         chomp;
         if (/^([^# ]+) +(?:([^ ]+) +)?([^ ]+) +([^ ]+)$/) {
             $localpath = $1;
@@ -77,7 +81,6 @@ sub darcsall {
             die "Bad line: $_";
         }
     }
-    close IN;
 }
 
 sub darcsget {
@@ -86,6 +89,7 @@ sub darcsget {
     my $remotepath;
     my $path;
     my $tag;
+    my @repos;
 
     if (! grep /(?:--complete|--partial)/, @_) {
         warning("adding --partial, to override use --complete");
@@ -96,7 +100,10 @@ sub darcsget {
     }
 
     open IN, "< packages" or die "Can't open packages file";
-    while (<IN>) {
+    @repos = <IN>;
+    close IN;
+
+    foreach (@repos) {
         chomp;
         if (/^([^ ]+) +(?:([^ ]+) +)?([^ ]+) +([^ ]+)$/) {
             $localpath = $1;
@@ -123,7 +130,6 @@ sub darcsget {
             die "Bad line: $_";
         }
     }
-    close IN;
 }
 
 sub main {
index ed825fc..8e9f9f3 100644 (file)
--- a/push-all
+++ b/push-all
@@ -39,9 +39,13 @@ sub pushall {
     my $remotepath;
     my $path;
     my $tag;
+    my @repos;
     
     open IN, "< packages" or die "Can't open packages file";
-    while (<IN>) {
+    @repos = <IN>;
+    close IN;
+
+    foreach (@repos) {
         chomp;
         if (/^([^# ]+) +(?:([^ ]+) +)?([^ ]+) +([^ ]+)$/) {
             $localpath = $1;
@@ -69,7 +73,6 @@ sub pushall {
             die "Bad line: $_";
         }
     }
-    close IN;
 }
 
 sub main {