+2008-01-26 Jason Rumney <jasonr@gnu.org>
+
+ * w32.c (logon_network_drive): New function.
+ (stat): Use it.
+
2008-01-26 Chong Yidong <cyd@stupidchicken.com>
* xdisp.c (pos_visible_p): Handle the case where charpos falls on
return attrs;
}
+/* Ensure a network connection is authenticated. */
+static void
+logon_network_drive (const char *path)
+{
+ NETRESOURCE resource;
+ char share[MAX_PATH];
+ int i, n_slashes;
+
+ /* Only logon to networked drives. */
+ if (!IS_DIRECTORY_SEP (path[0]) || !IS_DIRECTORY_SEP (path[1]))
+ return;
+ n_slashes = 2;
+ strncpy (share, path, MAX_PATH);
+ /* Truncate to just server and share name. */
+ for (i = 2; i < MAX_PATH; i++)
+ {
+ if (IS_DIRECTORY_SEP (share[i]) && ++n_slashes > 3)
+ {
+ share[i] = '\0';
+ break;
+ }
+ }
+
+ resource.dwType = RESOURCETYPE_DISK;
+ resource.lpLocalName = NULL;
+ resource.lpRemoteName = share;
+ resource.lpProvider = NULL;
+
+ WNetAddConnection2 (&resource, NULL, NULL, CONNECT_INTERACTIVE);
+}
/* Shadow some MSVC runtime functions to map requests for long filenames
to reasonable short names if necessary. This was originally added to
}
else
{
+ if (IS_DIRECTORY_SEP (name[0]) && IS_DIRECTORY_SEP (name[1]))
+ logon_network_drive (name);
+
fh = FindFirstFile (name, &wfd);
if (fh == INVALID_HANDLE_VALUE)
{