emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Willing to debug bug #3542 (23.0.94; File access via UNC path slow a


From: Eli Zaretskii
Subject: Re: Willing to debug bug #3542 (23.0.94; File access via UNC path slow again under Windows)
Date: Thu, 09 Jul 2009 21:47:31 +0300

> Date: Fri, 10 Jul 2009 00:25:25 +0800
> From: Jason Rumney <address@hidden>
> CC: 'Mathias Dahl' <address@hidden>, 
>  'Eli Zaretskii' <address@hidden>,
>  address@hidden
> 
> Drew Adams wrote:
> >> Hmm... There is a suggestion to use it only on fast machines at the
> >> same time it is turned on by default. Shouldn't it be the other way
> >> around? Btw, I consider my machine to be quite fast even though it is
> >> a couple of years old.
> >>
> >> I suggest we change the default value of this variable to nil (or make
> >> the code faster).
> >>     
> >
> > Dumb question: Is there a way for Emacs to know whether the format is NTFS 
> > or
> > FAT(32)? If so, then Emacs could use nil for FAT volumes.
> >   
> That suggestion dates back to the days when "fast machines" were running 
> at 200MHz or so. The problem here is not the speed of the machine, but 
> the network.  The default value of w32-get-true-file-attributes is 
> 'local, which means nil when going across the network, but apparently 
> that is not being recognized in all places - which I think is what Eli 
> is investigating.

Right.  We didn't treat UNC file names as remote, it's as simple as
that.

I installed the patch below on the trunk.

Stefan and Yidong, is it okay to install on the release branch as
well?

2009-07-09  Eli Zaretskii  <address@hidden>

        * w32.c (stat): Treat UNC file names as residing on remote
        drives.  (Bug#3542)


--- src/w32.c.orig      2009-06-21 10:38:18.000000000 +0300
+++ src/w32.c   2009-07-09 16:31:51.250000000 +0300
@@ -3154,11 +3154,13 @@
        }
     }
 
-  /* GetDriveType needs the root directory of NAME's drive.  */
-  if (!(strlen (name) >= 2 && IS_DEVICE_SEP (name[1])))
-    devtype = GetDriveType (NULL); /* use root of current diectory */
+  if (IS_DIRECTORY_SEP (name[0]) && IS_DIRECTORY_SEP (name[1]))
+    devtype = DRIVE_REMOTE;       /* assume UNC name is remote */
+  else if (!(strlen (name) >= 2 && IS_DEVICE_SEP (name[1])))
+    devtype = GetDriveType (NULL); /* use root of current drive */
   else
     {
+      /* GetDriveType needs the root directory of NAME's drive.  */
       strncpy (drive_root, name, 3);
       drive_root[3] = '\0';
       devtype = GetDriveType (drive_root);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]