Index: /shepherd
===================================================================
--- /shepherd (revision 42)
+++ /shepherd (revision 51)
@@ -1150,18 +1150,7 @@
     printf "\nChecking for updates:\n\n";
 
-    my $data;
-    my $sites = "";
-    $sites = "$mirror_site," if ($mirror_site);
-    $sites .= $HOME;
-
-    foreach my $site (split(/,/,$sites)) {
-	my $url = $site . "/status";
-	print "Fetching status file: $url.\n";
-	$data = LWP::Simple::get($url);
-	last if $data;
-
-	print "Failed to retrieve status file from $url.\n";
-    }
-    return if (!$data);
+    my $data = fetch_file("status");
+
+    return unless ($data);
 
     my %clist = %$components;
@@ -1233,8 +1222,4 @@
     print "Downloading $proggy v$latestversion.\n";
 
-    my $sites = "";
-    $sites = "$mirror_site," if ($mirror_site);
-    $sites .= $HOME;
-
     my $rdir = "";
     my $ldir = $CWD;
@@ -1252,15 +1237,8 @@
 
     my $newfile = "$ldir/$proggy-$latestversion";
-    my $rc;
-
-    foreach my $site (split(/,/,$sites)) {
-	printf "Fetching $site/$rdir/$proggy v$latestversion.\n";
-	$rc = LWP::Simple::getstore("$site/$rdir/$proggy", $newfile);
-	last if (is_success($rc));
-
-	print "Failed to retrieve $site/$rdir/$proggy.\n";
-    }
-    return if (!is_success($rc));
-
+    my $rfile = "$rdir/$proggy";
+
+    return unless (fetch_file($rfile, $newfile));
+    
     # Make it executable
     system('chmod u+x ' . $newfile);
@@ -1292,4 +1270,31 @@
 
     $made_changes = 1;
+}
+
+sub fetch_file
+{
+    my ($fn, $store) = @_;
+
+    my $sites = "";
+    $sites = "$mirror_site," if ($mirror_site);
+    $sites .= $HOME;
+
+    my $ret;
+    foreach my $site (split(/,/,$sites)) 
+    {
+	printf "Fetching $site/$fn.\n";
+	if ($store)
+	{
+	    $ret = LWP::Simple::getstore("$site/$fn", $store);
+	    return 1 if (is_success($ret));
+	}
+	else
+	{
+	    $ret = LWP::Simple::get("$site/$fn");
+	    return $ret if ($ret);
+	}
+	print "Failed to retrieve $site/$fn.\n";
+    }
+    return undef;
 }
 
