]> code.delx.au - gnu-emacs/commitdiff
(Fexpand_file_name) [WINDOWSNT]: Don't strip trailing /
authorRichard M. Stallman <rms@gnu.org>
Sat, 1 Jun 1996 02:23:06 +0000 (02:23 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 1 Jun 1996 02:23:06 +0000 (02:23 +0000)
when newdir is just "//".
(Ffile_name_directory) [WINDOWSNT]: Return Qnil if filename is a
partial UNC name such as "//foo".

src/fileio.c

index f979cb2ab481edfeaba545c4d6c347218eee1bfb..062f75ede8145e9a217a275f5a0188e3d10f782f 100644 (file)
@@ -348,6 +348,12 @@ on VMS, perhaps instead a string ending in `:', `]' or `>'.")
 
   if (p == beg)
     return Qnil;
+#ifdef WINDOWSNT
+  /* We can consider the partial UNC name //machine to be a
+     directory name, but not just // on its own. */
+  if (p == beg + 1 && IS_DIRECTORY_SEP (p[-1]))
+    return Qnil;
+#endif
 #ifdef DOS_NT
   /* Expansion of "c:" to drive and default directory.  */
   if (p == beg + 2 && beg[1] == ':')
@@ -1252,9 +1258,14 @@ See also the function `substitute-in-file-name'.")
 
   if (newdir)
     {
-      /* Get rid of any slash at the end of newdir.  */
+      /* Get rid of any slash at the end of newdir, unless newdir is
+       just // (an incomplete UNC name). */
       length = strlen (newdir);
-      if (IS_DIRECTORY_SEP (newdir[length - 1]))
+      if (IS_DIRECTORY_SEP (newdir[length - 1])
+#ifdef WINDOWSNT
+         && !(length == 2 && IS_DIRECTORY_SEP (newdir[0]))
+#endif
+         )
        {
          unsigned char *temp = (unsigned char *) alloca (length);
          bcopy (newdir, temp, length - 1);