--- file.c.orig	2003-07-25 01:30:58.000000000 -0700
+++ file.c	2003-08-08 09:03:20.000000000 -0700
@@ -108,6 +108,29 @@
   memset(file, 0, sizeof(struct FILE));
   conn->proto.file = file;
 
+#if defined(WIN32)
+  /* If the first character is a slash, and there's
+     something that looks like a drive at the beginning of
+     the path, skip the slash.  If we remove the initial
+     slash in all cases, paths without drive letters end up
+     relative to the current directory which isn't how
+     browsers work.
+
+     Some browsers accept | instead of : as the drive letter
+     separator, so we do too.
+
+     On other platforms, we need the slash to indicate an
+     absolute pathname.  On Windows, absolute paths start
+     with a drive letter.
+  */
+  if (*actual_path == '/' &&
+      (actual_path[2] == ':' || actual_path[2] == '|'))
+  {
+    actual_path[2] = ':';
+    actual_path++;
+  }
+#endif
+
 #if defined(WIN32) || defined(__EMX__)
   /* change path separators from '/' to '\\' for Windows and OS/2 */
   for (i=0; actual_path[i] != '\0'; ++i)

