diff -ru htdig-3.1.3/htdig/Retriever.cc htdig-3.1.3.patched/htdig/Retriever.cc
--- htdig-3.1.3/htdig/Retriever.cc	Sat Nov 20 20:12:55 1999
+++ htdig-3.1.3.patched/htdig/Retriever.cc	Sat Nov 20 20:39:41 1999
@@ -150,7 +150,7 @@
         {
 	    if (debug > 2)
                 cout << " pushed";
-     	server->push(u.get(), 0, 0);
+	    server->push(u.get(), 0, 0, IsLocal(url.get()));
         }
 	if (debug > 2)
            cout << endl;
@@ -395,9 +395,9 @@
 
     // Retrive document, first trying local file access if possible.
     Document::DocStatus status;
-    String *local_filename = IsLocalUser(url.get());
+    String *local_filename = GetLocalUser(url.get());
     if (!local_filename)
-        local_filename = IsLocal(url.get());
+        local_filename = GetLocal(url.get());
     if (local_filename)
     {  
         if (debug > 1)
@@ -625,7 +625,7 @@
     // Currently, we only deal with HTTP URLs.  Gopher and ftp will
     // come later...  ***FIX***
     //
-    if (strstr(u, "/../") || strncmp(u, "http://", 7) != 0)
+    if (strstr(u, "/../") || (strncmp(u, "http://", 7) != 0 && strncmp(u, "file://", 7) != 0))
       {
 	if (debug > 2)
 	  cout << endl <<"   Rejected: Not an http or relative link!";
@@ -688,13 +688,13 @@
 
 
 //*****************************************************************************
-// String* Retriever::IsLocal(char *url)
+// String* Retriever::GetLocal(char *url)
 //   Returns a string containing the (possible) local filename
 //   of the given url, or 0 if it's definitely not local.
 //   THE CALLER MUST FREE THE STRING AFTER USE!
 //
 String*
-Retriever::IsLocal(char *url)
+Retriever::GetLocal(char *url)
 {
     static StringList *prefixes = 0;
     static StringList *paths = 0;
@@ -747,14 +747,14 @@
 
 
 //*****************************************************************************
-// String* Retriever::IsLocalUser(char *url)
+// String* Retriever::GetLocalUser(char *url)
 //   If the URL has ~user part, returns a string containing the
 //   (possible) local filename of the given url, or 0 if it's
 //   definitely not local.
 //   THE CALLER MUST FREE THE STRING AFTER USE!
 //
 String*
-Retriever::IsLocalUser(char *url)
+Retriever::GetLocalUser(char *url)
 {
     static StringList *prefixes = 0, *paths = 0, *dirs = 0;
     static Dictionary home_cache;
@@ -1085,7 +1085,8 @@
 		// Let's just be sure we're not pushing an empty URL
 		//
 		if (strlen(url.get()))
-		  server->push(url.get(), ref->DocHopCount(), base->get());
+		    server->push(url.get(), ref->DocHopCount(), base->get(),
+		    		 IsLocal(url.get()));
 
 		String	temp = url.get();
 		visited.Add(temp, 0);
@@ -1209,7 +1210,8 @@
 		    server = new Server(url.host(), url.port());
 		    servers.Add(url.signature(), server);
 		}
-		server->push(url.get(), ref->DocHopCount(), base->get());
+		server->push(url.get(), ref->DocHopCount(), base->get(),
+			     IsLocal(url.get()));
 
 		String	temp = url.get();
 		visited.Add(temp, 0);
@@ -1357,3 +1359,16 @@
     }
 }
 
+int
+Retriever::IsLocal(char *url)
+{
+    int ret;
+
+    String *local_filename = GetLocalUser(url);
+    if (!local_filename)
+       	local_filename = GetLocal(url);
+    ret = (local_filename != 0);
+    delete local_filename;
+
+    return ret;
+}
diff -ru htdig-3.1.3/htdig/Retriever.h htdig-3.1.3.patched/htdig/Retriever.h
--- htdig-3.1.3/htdig/Retriever.h	Thu Apr 22 06:47:57 1999
+++ htdig-3.1.3.patched/htdig/Retriever.h	Sat Nov 20 20:38:12 1999
@@ -64,6 +64,11 @@
     // username/password
     //
 	void		setUsernamePassword(char *credentials);
+
+    //
+    // Check is url local
+    //
+    int			IsLocal(char *url);
 	
 private:
     //
@@ -118,8 +123,8 @@
     int			Need2Get(char *url);
     DocumentRef	*	GetRef(char *url);
     int			IsValidURL(char *url);
-    String *            IsLocal(char *url);
-    String *            IsLocalUser(char *url);
+    String *            GetLocal(char *url);
+    String *            GetLocalUser(char *url);
     void		RetrievedDocument(Document &, char *url, DocumentRef *ref);
     void		parse_url(URLRef &urlRef);
     void		got_redirect(char *, DocumentRef *);

